PRODUCT

See the run. Test the rule. Block the call.

Staso gives small AI teams one path from an instrumented agent run to a reviewed Guard decision. Start in audit mode. Turn on enforcement only when the matches reflect your intent.

Python SDK: sync and async, non-streaming OpenAI Chat Completions and Anthropic Messages. CLI: Claude Code and Codex through Staso hooks. Guard needs a configured policy.

01 · OBSERVE

See the path you chose to instrument.

@st.agent creates the explicit root for a Python run. Supported provider calls inherit that trace. @st.tool records the duration, status, errors, and enabled fields for the function that actually ran.

Explicit roots

Group the supported model and tool spans that belong to one run.

Actual execution

A decorated tool span describes the function that ran. A model proposal alone does not.

Honest usage data

Tokens appear when the provider supplies supported usage. Cost appears only for an exact known provider and model price. Missing data stays Unknown or Partial.

CLI sessions

Claude Code and Codex sessions connect through local hooks installed by one setup command.

02 · AUDIT

Test a policy without changing the current action.

A rule template is inactive until you attach it to an enabled policy. In audit mode, a matching tool proposal records a would-block finding while the current action remains allowed.

Policy mode
Audit
Rule result
Would block
Effective action
Allow
Configure an audit policy
03 · ENFORCE

Block the matches your team has reviewed.

Move a policy to enforce when its audit findings match your intent. A configured blocking policy can stop a supported provider proposal before your normal dispatch loop receives it.

Policy mode
Enforce
Rule result
Block
Effective action
Block before dispatch

Choose your first integration.

Start with one supported path, create a queryable trace, then test one policy in audit mode.