Enforcement Modes
Kill mode, alert mode with human approval, and fault-tolerant graceful degradation.
SteerPlane is not a binary kill-or-nothing switch. The enforcement controller operates in two modes, so you can choose between hard stops and human-in-the-loop intervention.
Kill mode
On any violation, execution terminates immediately and atomically with a structured diagnostic exception that is logged and persisted.
@guard(agent_name="batch_job", max_cost_usd=20, enforcement="kill")
def run():
agent.run()Use kill mode for unattended jobs where any breach should stop the run outright.
Alert mode
When a cost or step limit is approached, alert mode pauses the run, creates a persistent approval request, dispatches notifications (email / webhook / Slack), and waits for a human decision.
@guard(
agent_name="support_bot",
max_cost_usd=10,
enforcement="alert",
alert_threshold=0.8, # pause at 80% of the limit
alert_timeout_sec=1800, # wait up to 30 min for approval
)
def run():
agent.run()- Approve → execution resumes with extended limits (e.g. a parameterised budget bump).
- Deny or timeout → execution terminates as a safety net.
Even in alert mode, loops and policy violations always hard-terminate — only cost/step limits are eligible for the pause-and-approve flow.
Graceful degradation
SteerPlane is fault-tolerant by design. If the control plane (API server) becomes unreachable:
- the SDK keeps enforcing locally — loop detection, cost, step, and policy rules stay active;
- alert mode automatically degrades to kill mode, since no human channel is available.
The result: no agent ever runs without at least one active enforcement path. When the control plane returns, telemetry and approval state re-synchronize automatically.