Skip to content

🧪 Beta — Available today; the interface contract may still change.

Revocation and incident response

"Can you stop it right now?" is a mandatory question in every security review, and this page gives you the honest answer: each recall layer differs in speed and reach. Blurring them is how you create a misjudgement during an incident.

By the end of this guide you will know:

  • What each of the four recall layers stops, and how fast
  • What order to act in during an incident
  • Why "short lifetimes" matter more than "revocability"

The four recall layers

LayerActionReachEffective
1. Access keyDisable or rotate the access key (enable: false / rotate)That key's ability to start new delegationsImmediate — no new delegate token can be issued after it is disabled
2. An already-issued delegate tokenWait for it to expireThe one token already in the agent's handsGoverned by the token's lifetime (settable at issuance, 60-86400 seconds)
3. Resource-side deny listReject by act.agent_id or grant_id in your own API or gatewayYour own resource servicesImmediate (you implement it — see below)
4. The whole agentKill switch for that agentAll of that agent's grants and dispatchesSee the Roadmap note below

There is no API to revoke a single grant

There is currently no API that revokes one grant by grant_id. Only two recall actions take effect immediately: disabling the access key (cuts off further issuance) and your own resource-side deny list (cuts off already-issued tokens). Precise revocation by grant_id is a roadmap item and ships together with the agent-level kill switch.

Layer 2 is the fact to design around

A delegate token already in an agent's hands cannot be invalidated individually within its lifetime. Which means: your real upper bound on recall speed is the lifetime you set at issuance.

So expiresIn is not a field to fill in casually — it is your risk window:

  • Task-level delegations: 5-15 minutes, use and discard
  • Session-level delegations: 1-2 hours
  • Only reach toward the 24-hour maximum for scenarios you are certain are long-lived and low-risk

A runtime token deny list (immediate interception of already-issued tokens) is an explicit direction of travel, but until it exists, short lifetimes are the only reliable recall mechanism.

Layer 4: the agent-level kill switch

🚧 Roadmap — The agent-level kill switch is a control-plane capability and ships with agent registration and governance (see The agent identity model). Its design goal is to stop all in-flight and future grants for one agent in a single action. Until then, agent-level containment comes from combining two steps for a close equivalent: disable the access key it uses (layer 1) plus reject by act.agent_id on the resource side (layer 3) — which is exactly why we recommend a dedicated key per agent: disabling one affects only that agent.

Incident response checklist

When you suspect an agent is being abused or a credential has leaked, act in this order:

  1. Stop the source first: disable the relevant access key (layer 1). This instantly cuts off the ability to issue new delegations — your first stitch.
  2. Compute the risk window: check the remaining lifetime of tokens already issued but not yet expired (layer 2). That number is "how long an attacker can still operate in the worst case" — it decides whether you need to act on the resource side.
  3. Reject at the resource side (when the window is unacceptable, which it usually is): reject requests carrying a specific act.agent_id or grant_id at your API gateway (layer 3). This is the only way to cut off an already-issued token inside its lifetime, and it requires your resource side to support it in advance (how: Protect your APIs).
  4. Scope the incident from the audit trail: pull the full chain by audit_id / grant_id to confirm what actually happened and which data was touched (see Audit and compliance reporting).
  5. Rotate and review: rotate the key and redistribute it; review the scope and lifetime settings — incidents are rarely "we could not revoke", they are usually "we granted too much, for too long".

Prevention beats response

PracticeWhy it works
Size lifetimes to the task, not to the maximumDirectly compresses the risk window — the single most effective control
Keep the key's allowedScopes / allowedAgents minimalLimits what can be delegated at all (see API reference)
A dedicated key per agentAn incident means disabling one key, without collateral damage
Resource-side support for rejecting by agent_id / grant_idLeaves yourself a last-resort cut-off
Rotate keys on a scheduleShortens how long any credential is exposed

FAQ

Can users revoke on their own? The user-facing "withdraw access" entry point is something your application implements — we recommend a "my authorizations" page (see Audit and compliance reporting) so users can see what is currently active. On the platform side, withdrawal lands across the layers above: stopping further issuance is immediate; tokens already issued are governed by their lifetime. Precise revocation by grant_id ships with the roadmap item.

Is the recall action itself recorded? Yes. Key disablement, rotation and other recall actions enter the audit chain as events: who withdrew what, and when (see Audit and accountability chain).

What happens to the agent after a token expires? The call fails with a token-expired error (the SDK throws AnimaTokenExpiredError). Your application should catch it and decide whether to start a new delegation or end the task.

Next steps