Skip to main content
Witnessing records what happened. Bounding decides what is allowed to happen. An autonomy envelope is a set of versioned, attested rules that route each intended action to auto, async_review, sync_review, or block by its stakes, confidence, and novelty. This guide publishes an envelope, enforces it from the SDK, arms circuit breakers, and drills the kill switch.
1

Publish an autonomy envelope

Publish a new envelope version for the agent. Rules are evaluated in order; the first match wins, and anything unmatched falls through to default_outcome. Publishing is a governance act, so it needs an OIDC JWT.Every envelope is formally linted with Z3 before it governs production. The lint catches dead rules and escalation non-monotonicity (a case where higher stakes would route to less oversight). With SAKSHI_ENVELOPE_LINT_STRICT=true a failing lint blocks the publish; by default the findings are attached and attested.
deep_review_rate is the fraction of auto decisions sampled for post-hoc deep review, so oversight does not go dark just because an action was allowed. Prior versions deactivate but are never deleted: the envelope in force at any past decision stays reconstructable.
2

Enforce before the agent acts

Route the intended action through enforce and let the outcome decide. Enforcement fails closed: if Sakshi is unreachable it raises rather than letting an ungoverned action through. By default a hold raises, so the happy path is simply “no exception means proceed”.
Prefer to branch yourself? Pass raise_on_hold=False and read the decision directly. async_review allows the action with post-hoc review; sync_review and block do not.
3

Arm circuit breakers

Breakers watch the decision stream and fire the same halt path as the kill switch when a governed signal degrades. Available metrics are override_rate, eval_volume, model_change, error_rate, and signal_drift. A breaker releases human-only.
4

Drill the kill switch

The kill switch outranks every envelope. Its response is set per agent and frozen on activation. halt blocks outright, so the next enforce raises SakshiBlocked. safe_mode does not hard-stop; instead the evaluation swaps in the conservative envelope and actions park in review, so the business degrades to human-decided rather than stopping.Drill it regularly. A drill: true activation exercises the whole path without hiding that it was a drill.
The SDK polls kill status in the background, so a halt takes effect within one poll interval even between evaluations. Enforcement reads that cached state first, then re-checks server-side inside the evaluation.

Next steps

Autonomy envelopes

How rules route actions, and why envelopes are versioned and attested.

The kill switch

Halt versus safe mode, drills, and the response ladder.

Witness a decision

Record the reasoning behind each governed action.

Python SDK

The full enforcement API and its exception model.