drain and kill stop new authorizations the moment revocation fires.
Revocation policies
Configure the revocation policy per credential at issuance time.
“Drain” does not mean a grace period for new calls — only calls already in progress are allowed to finish. The moment revocation fires, no new tool invocations are accepted under the credential.
Cascade revocation
Revoking a credential also revokes every credential delegated from it, transitively. All descendants are revoked withkill policy regardless of their own configured policy. This is non-negotiable — once the root authorization is revoked, no downstream agent may continue.
The agent.credential_revoked audit event on the root credential lists all cascade-revoked descendant IDs in cascade_revoked_credential_ids.
Via dashboard
Developers → Agents → [agent] → [credential] → Revoke A confirmation dialog lets you enter an optional reason. The reason is recorded in the audit event.Via API
Archive-triggered revocation
Archiving an agent revokes all its active credentials withkill policy. The revocation is recorded with revocation_reason: agent_archived.
Automatic expiry
Credentials have anexpires_at timestamp. Once past, the credential is treated as inactive by the gateway — no revocation event is emitted, but isActive() returns false and the credential cannot authorize new invocations.
Expiry is distinct from revocation. An expired credential still appears in the credentials list with status: expired; a revoked credential has a revoked_at timestamp.
Audit events
Every revocation emitsagent.credential_revoked per affected credential (root + each cascade descendant), integrity-chain-anchored. The event records: