authority: section says which principal may propose which action. It lives at the top of
ctrlrun.yaml from ctrlrun.policy/v3, or in a standalone document passed with --authority
whose only keys are schema and authority. It is opt-in and then fail-closed: absent, nothing
changes; present, every principal needs a matching grant and no grant means denied. A test
asserts this page names every key the loader accepts.
The section
A grant
A grant carries no
decision:. How much autonomy an action has is the policy’s answer, the same
for everyone; the grant answers whether this principal may ask at all.
runnable
How a grant matches
A grant covers an action when the subject matches the principal, the action name matches one ofactions, the resolved resource matches one of resources, the environment is in
environments, every constraint holds over the arguments, and expires_at has not passed.
Every failing reason is collected and the reported one follows a fixed order, so the evidence
for a configuration does not depend on the order grants appear in the file. Where several
grants match, the receipt names the lowest id.
Delegation
ctrlrun delegate --parent <id> --file grant.yaml --as AGENT[/USER] writes a delegated grant
beneath a delegable one. The file has the keys above minus id. It is accepted only if it is
provably a subset of its parent on every dimension, at creation and again at every evaluation:
- a narrower or equal subject (never a wildcard, never dropping the parent’s
user); actions,resources,environmentseach a subset;constraintsno looser on any argument;expires_atno later than the parent’s.
resources: would authorize resources its parent never could. ctrlrun revoke <id> cuts a
chain of any depth with one write and is not reversible.
What the section does not do
It does not authenticate anybody: the principal comes from the identity provider, and--as on
the command line is an assertion recorded as created_via: cli. It does not match on a token
claim, does not propagate across an agent-to-agent hop, and does not hot-reload: revocation and
expiry are live, an edited file takes effect when the process next loads it.
Next
- Authority and delegation: the concept.
- Policy YAML reference: the other axis.
- Get started · Why.