501
What a grant is
A grant is a narrow, checkable permission to do one specific thing once. It is not a role and not a scope. Its five properties are five separate fields precisely so that each can be falsified:
A surface that reports a grant without all five cannot be audited — which is why
this one refuses rather than serving a partial object.
What happens instead today
Approving an item on the approvals queue replays the frozen payload captured when the approval was created. That gives you argument binding and single use in practice, but it is not a grant object: it has nountil, no snapshot_digest, and no id you can revoke independently.
POST …/approvals/{id}/decide reports this directly:
Revocation today
There is no grant to revoke. What you can do:- Revoke the agent profile — this stops its writes immediately. Note that reads keep answering, so rotate the key too.
- Deny the pending approval with
POST …/approvals/{id}/decide. - Disable the primitive on the AccountKit.
Related
POST /v1/policy/break-glass— also501, because break-glass mints a time-boxed grantGET /v1/limits— reportsgrant.maxUntil: null, the ceiling that is not configured