The three levels
| Level | Command | Effect | When to use |
|---|---|---|---|
| 1. Freeze wallet | POST /v1/agent-wallets/:id/freeze | Agent can’t spend; auth, reads, SSE still work | First response to suspected misbehavior |
| 2. Revoke auth key | DELETE /v1/agents/:id/auth-keys | Agent can’t authenticate at all | Confirmed credential compromise |
| 3. Terminate agent | DELETE /v1/agents/:id | Agent permanently removed | Post-incident cleanup; unrecoverable |
Level 1: Freeze
Safe, reversible, preserves forensic capability. The agent stays logged in, can read data, can emit events — it just can’t move money.- All spending attempts return
403 WALLET_FROZEN - Streams pause (no accrual)
- Scheduled transfers fail at their scheduled time
- Agent can still authenticate, read balances, receive SSE events
- Audit log preserved
Level 2: Revoke auth key
Confirmed compromise. The agent (or an attacker with the agent’s credentials) can no longer authenticate.- All active
sess_*tokens invalidated - Ed25519 public key removed — challenge-response fails
- Agent token (
agent_*) remains valid (it’s a separate credential) — rotate it too if compromise is suspected at that level:
Level 3: Terminate
Last resort. Permanent.- Agent record marked
revoked(tombstoned for audit) - All credentials revoked
- Wallets disassociated (funds remain — terminating an agent does not forfeit funds)
- Policy, mandates, streams cancelled
Kill-switch operator
For Tier 3 (Trusted) agents, Sly requires a named kill-switch operator — a human who can execute these actions. The operator’s contact is recorded in the agent’s policy:Automated freezes
Sly can auto-freeze an agent on certain signals:- Velocity violations — too many transactions in too short a window
- Policy-drift alerts — sudden behavior change compared to baseline
- External signals — integrated threat feeds (sanctions list hits, known-bad addresses)
- Customer-initiated — one-click freeze from the Sly dashboard
Incident runbook
When something looks wrong:Query the evaluation log
GET /v1/agent-wallets/:id/evaluations — see what the agent was attempting and what was allowed vs. blocked.Decide
If the behavior was intended (new deployment, new merchant): unfreeze. If not, revoke auth and investigate.
