drain and kill stop new authorizations the moment revocation fires.
Revocation policies
Configure the revocation policy per credential at issuance time.| Policy | In-flight behavior | Use case |
|---|---|---|
drain | In-flight invocations complete; no new calls authorized | Routine end-of-shift, scheduled rotation |
kill | All in-flight invocations are cancelled immediately | High-risk credentials, incident response, emergency hold |
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:
| Field | Description |
|---|---|
credential_id | The revoked credential |
agent_id | The agent the credential was issued to |
actor_user_id | Who triggered the revocation |
revocation_policy | drain or kill (from the root credential) |
revocation_reason | Optional reason string |
cascade_revoked_credential_ids | IDs of descendants revoked in the same transaction (root event only) |