Two rungs: halt and safe mode
The response is per-agent policy, frozen at the moment of activation:haltstops the agent outright. Every enforcement decision refuses.safe_modedoes not hard-stop. It swaps the agent’s evaluation to a conservative envelope and parks actions in review instead of blocking them, so the agent degrades to human-supervised operation rather than going dark. This suits an agent whose blast radius makes a full stop its own kind of incident.
Checked on every action, fails closed
The SDK’senforce() consults the kill switch before it evaluates anything. A
background poller caches each agent’s kill state, so a halt takes effect within
one poll interval even between decisions, and the server re-checks inside the
evaluation. Both checks fail closed: an unreachable platform, or a missing
response field from an older deployment, reads as halt, never as permissive.
Drilled, not just declared
A safety control you have never fired is a hope, not a control. Kill switches are drilled on a schedule, and each drill produces a signed attestation recording the propagation time and the scope it reached. That attestation is evidence you tested the switch, cited by the evidence packs that map to regulator obligations. Activate atPOST /api/v1/bound/kill, check state at
GET /api/v1/bound/kill/status, and release (human-only) at
.../kill/release.
Bound autonomy
Set the response policy, arm circuit breakers, and run a drill.
Autonomy envelopes
The conservative envelope safe mode routes through.

