Skip to main content
Understanding these core concepts will help you get the most out of Agent Control. Start with the high-level architecture to see how components fit together, then dive into evaluators to understand how checks are implemented.

Controls

A Control is a single rule that defines what to check and what to do when a condition is met.
Example: “If the output contains an SSN pattern, block the response.”
Leaf conditions pair a 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)
Example: apply to all tool steps before execution:
Example: target specific database operations:
Example: match multiple steps with regex:

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

  1. Deny wins — if any deny control matches, execution is blocked.
  2. Steer second — if any steer control matches (and no deny), steering context is returned.
  3. Observe — non-blocking observability action that does not affect execution.

Learn more