Rent v0.8.3
Rent v0.8.3 lets an eligible helper work with private resources while representing their owner, without granting the same access to that helper acting alone.
Delegated-only helper access
Combine an existing owner rule and live helper eligibility with the new
delegated_actor() condition:
reader = owner or (eligible_helper and delegated_actor())
read = readerUse delegation = "intersect". Rent checks the executing helper and the represented
subject independently. The helper can use its delegated branch. The represented
subject must qualify through ownership or another rule you explicitly allow.
A helper representing the wrong owner fails that owner's check. A helper acting
alone does not qualify through the delegated branch.
The condition follows normal named and related permission rules, protected reads
and writes, field guards, caches and explanations. It adds no stored grant or
database lookup. Schemas using it reject inherit delegation.
Bind the pair through the existing Viewer::on_behalf_of API after authenticating
both identities and validating delegation. Applications remain responsible for
credential expiry and restrictions on who may represent whom. Generic request
intersections do not establish delegation and do not activate the condition.
The private delegation lesson provides a complete example. The permission reference describes the exact evaluation and inspection behavior.
Upgrade
Use v0.8.3 for the CLI and every Rent crate, regenerate configured clients and commit the application's lockfile. Opt into the new condition by narrowing the helper branch in your schema. Existing permission rules retain their behavior. The condition itself requires no database migration. Review the application's migration diff for any other schema changes.
Rust code exhaustively matching permission enums must handle
PermissionExpr::DelegatedActor, PermissionExpressionKind::DelegatedActor and
UnresolvedSubjects::Delegation. Reverse who_can inspection evaluates stored
subjects independently and reports delegated populations as unresolved rather
than treating them as standalone grants.
