Set boundaries for what your agents can do.
Check tool calls before they run. Block repeats, ask for approval, or redact sensitive results. Every decision gets a record.
run_2088Sample dataissue_refundorder_id=1042 · amount=180.00 · 2nd call in 10 minSame timeout. This time, no second refund.
run_2088Example workflow · sample data- Repeat call
issue_refund(order_id=1042, amount=180.00), the second attempt after a timeoutBefore the tool runs - MatchSame order_id + amount within 10 min, scope refund-agent, all sessionsrefund.repeat-window v1
- DecisionBlock the repeat call and record why.Deny
- Linked findingF-218: Refund retried after an issue_refund timeout12 runs
pay_req_7731: refund.completed at +12.9 s. The payment succeeded before the tool timed out. Guard counts calls; payment telemetry confirms the result.
run_1042. This preview shows a later run, after the rule was activated.Before the call. Before the agent reads the result.
pre_toolAllow, deny, ask or rewrite the callRefund rule
post_toolRewrite the result, e.g. redact PII
Scheduled investigations find patterns in past runs. They raise findings for your team to review.
An active rule checks live tool calls: allow, deny, ask, or rewrite. Each decision links to the run.
From a finding to an active rule.
CtrlB proposes and tests the rule. Your team chooses the scope and turns it on.
- Finding reviewedYour team accepts F-218Your approval
- Condition definedSame order_id + amount within 10 minAutomatic
- Scope selectedrefund-agent, all sessionsYour approval
- Replay validatedCaptured calls from refund-timeouts v3Automatic
- Apply Guard ruleActivates refund.repeat-window v1Your approval
- Later call checkedIn the tool hook, before it runsAutomatic
- Decision recordedLinked to the run and the findingAutomatic
refund.repeat-windowProposed from F-218- Tool
issue_refund- Match on
- order_id + amount
- Window
- 10 min
- Scope
- refund-agent, all sessions
- On match
- Deny
refund-timeouts v3- Repeat attempts, same order and amountDeny expected deny
- Partial refunds, different amountAllow expected allow
- Retry after the window closedAllow expected allow
No legitimate refunds in the case set would be denied.
refund.repeat-windowSample datav1ActiveApplied from F-218 by Platform on-call, Oct 27draftReplay passedProposed from F-218, validated on refund-timeouts v3
Which repeats should the rule catch?
Switch scope to see how the same five calls are handled.
Deny identical tool calls in the same session. A new session starts fresh.
0:00Session A$180 refundFirst attemptAllow, first call0:31Session A$180 refundIdentical call, same sessionDeny4:10Session B$180 refundNew session, extra argumentAllow6:02Session C$40 partial refundPartial refund, different amountAllow14:20Session D$180 refundOutside the 10 min windowAllow
This rule counts attempts. Check payment telemetry to see whether a refund completed.
Compare both scopes in a table
0:00Session Aissue_refund(1042, 180.00)First attemptAllow, first callAllow, first call0:31Session Aissue_refund(1042, 180.00)Identical call, same sessionDenyDeny4:10Session Bissue_refund(1042, 180.00, note="retry")New session, extra argumentAllowDeny6:02Session Cissue_refund(1042, 40.00)Partial refund, different amountAllowAllow14:20Session Dissue_refund(1042, 180.00)Outside the 10 min windowAllowAllowChoose what to check.
Tool allow listsWhich tools an agent may call
- Where
pre_tool- On a match
- Deny, or ask a person
- Recorded
- Rule version and the blocked call
Sensitive data and PIIPII in tool arguments and tool results
- Where
pre_tool and post_tool- On a match
- Deny the call, or rewrite the result to redact it
- Recorded
- Decision and a redaction marker in the result
Repeated calls and loopsThe same tool and arguments in one session
- Where
pre_tool- On a match
- Deny, or ask a person
- Recorded
- Matched call count and the session
Argument-keyed time windowsChosen arguments across sessions, within a window
- Where
pre_tool- On a match
- Deny, or ask a person
- Recorded
- Matched key, the window and the earlier call
Finding-linked action rulesA condition proposed from a finding
- Where
pre_tool- On a match
- Allow, deny, ask or rewrite, as configured
- Recorded
- Link to the finding and its frozen case set
See what Guard blocked, and why.
- Repeat attempts
- Denied by Guard
- Legitimate refunds allowed
Table view
| Day | Repeat attempts | Denied by Guard | Legitimate refunds allowed |
|---|---|---|---|
| Oct 21 | 9 | 0 | 3 |
| Oct 22 | 11 | 0 | 4 |
| Oct 23 | 8 | 0 | 3 |
| Oct 24 | 10 | 0 | 5 |
| Oct 25 | 12 | 0 | 4 |
| Oct 26 | 9 | 0 | 3 |
| Oct 27 · Rule v1 active | 10 | 10 | 4 |
| Oct 28 | 9 | 9 | 3 |
| Oct 29 | 8 | 8 | 5 |
| Oct 30 | 6 | 6 | 4 |
| Oct 31 · PR #482 deployed | 2 | 2 | 3 |
| Nov 1 | 1 | 1 | 4 |
| Nov 2 | 1 | 1 | 4 |
| Nov 3 | 0 | 0 | 3 |
Sample data: denies begin when v1 is activated; attempts fall after PR #482 deploys. The trend alone does not establish cause.
- Rule
refund.repeat-window v1- Matched condition
- Same order_id + amount within 10 min
- Decision
- Deny
- Tool call
issue_refund(order_id=1042, amount=180.00)- Agent run
run_2088- Earlier call
- 31 s before, same session
- Finding
- F-218: Refund retried after an issue_refund timeout
How Guard runs in production.
- In the request pathGuard runs in your framework's tool hook. Every check happens before the call executes, or before the agent reads the result.
- Versioned configurationEach Apply Guard rule creates a version with its scope, who applied it and when. Earlier versions stay for review and rollback.
- Failure behavior per ruleWhat happens if a check cannot complete is part of each rule's configuration. You set it when you apply the rule.
Explore more
Common questions
Where are policies enforced?
In the request path, inside your framework's tool hook. Guard checks a tool call before it executes and handles the result after it returns. It works with Claude Code hooks, the OpenAI Agents SDK, LangChain, Google ADK and FastMCP.
How are policies configured?
Choose a rule type, condition and scope, then select Apply Guard rule. For time windows, also choose the argument key and duration. Each activation creates a version you can review or roll back.
How much latency does a check add?
Guard runs in the request path, so every check adds time to the tool call. How much depends on the rules in scope. Measure it on your own workload during the beta.
How is data handled?
Rewrite rules can redact sensitive data from a tool result before the agent reads it. Decision records are written to your lake, next to the agent trace.
How do Guardrails relate to Evals?
Before you apply a rule, Guard replays the frozen case set's captured calls through it and compares the decisions with the expected outcomes. After you apply it, the finding's trend shows what happened next.
Put your first Guard rule to the test.
Live beta. From $499/month, plus usage.