Controls
A Control is a single rule that defines what to check and what to do when a condition is met.selector with an evaluator. Composite conditions can use and, or, and not to combine multiple leaf checks.
Scope
Scope defines when a control runs by filtering which steps are evaluated. Fields:-
step_types: Step types to target (e.g.,["tool", "llm"]). If null, applies to all types. -
step_names: Exact step names to target (e.g.,["search_db", "send_email"]). -
step_name_regex: Regex pattern to match step names (e.g.,"^db_.*"). -
stages: When to evaluate —["pre", "post"].-
pre: Check before execution (block bad inputs, prevent prompt injection) -
post: Check after execution (filter bad outputs, redact PII)
-
Selectors
A Selector defines what data to extract from the payload for evaluation.
Controls can also scope by step type/name/stage:
Evaluators
An Evaluator receives the selected data and checks it against configured rules.Actions
An Action defines what happens when a control matches.Priority Semantics
-
Deny wins — if any
denycontrol matches, execution is blocked. -
Steer second — if any
steercontrol matches (and no deny), steering context is returned. - Observe — non-blocking observability action that does not affect execution.