Step 1: Create a guardrail
Start from AI > Guardrails, where every guardrail you create is listed alongside its bindings, rules, hooks, and tool gates.1
Go to AI > Guardrails and click Create guardrail.
2
Enter a Name (required, up to 128 characters) and optionally a Description (up to 1024 characters).
3
Set Applies to — Agent or Gateway. Choose deliberately: it determines which risk signals your rules can read, and which selector the guardrail appears in when you bind it.
4
Click Create guardrail. C1 creates it and opens its detail page.
To rename a guardrail or change its description or surface later, click Edit on the Details card on its detail page.
Step 2: Bind the guardrail
Where you bind depends on the surface the guardrail applies to.Agent surface
For a tenant-wide default across your C1AI agents:1
Go to AI > Guardrails.
2
Under Default C1AI Guardrail policy, open the dropdown — it reads No default guardrail selected until you set one.
3
Pick your guardrail.
Only guardrails whose Applies to is Agent appear in these dropdowns. The match is exact — a guardrail left at the legacy Any surface value appears in neither selector.
Gateway surface
For external AI clients connecting through the C1 Gateway:1
Go to AI > C1 Gateway > Settings.
2
Under Default C1 Gateway Guardrail policy, select your guardrail.
Step 3: Author a rule
A guardrail’s cascade is empty until you add rules to it. Each rule you create is appended to the bottom of the cascade, so order them deliberately (see Order the cascade below).1
On the guardrail’s detail page, click New guardrail rule.
2
Enter a Name and optional Description. Name it for the behavior it prevents — this string is what you’ll be reading in audit logs later.
3
Enter a Condition (CEL). Leave it empty to match every tool call. Available variables:
For example, to match the untrusted-content exfiltration pattern:
4
Choose an Action:
- Block — deny the call immediately. Gates and hooks are skipped, and the hook/gate pickers disappear from the form.
- Evaluate hooks — run the gates and hooks you select below, and let their outcome decide.
5
If you chose Evaluate hooks, select what this rule dispatches:
Only hooks and gates with Managed by guardrails turned on appear in these lists, and each picker only offers hooks whose event matches it. If something you expect is missing, that’s why — see Step 5.Pre-output hooks behave differently from the other three: a rule only takes effect on the outgoing response if it uses Evaluate hooks and selects at least one pre-output hook. A Block rule never applies to outgoing responses. See Pre-output hooks.
6
Set Mode to Observe for now. (Enforce applies the outcome; Disabled skips the rule.)
7
Optionally enter a Deny reason (up to 256 characters). It’s shown to the caller when this rule denies a call, so write it for whoever hits it — a bare “policy violation” leaves the agent’s user with nothing to act on.
8
Click Create.
Order the cascade
Rules evaluate top to bottom, first match wins. Click Manage guardrail rules to reorder them with the move controls, or to edit and delete individual rules. Each rule renders as an IF / THEN card showing its condition and its action and mode chips, so you can read the cascade top-down without opening each rule.Step 4: Add a tool gate for approval
A tool gate turns a matching call into an approval request instead of a failure.1
In the Tool gates section on AI > Guardrails, click New tool gate.
2
Enter a Name (1–100 characters) and optional Description.
3
Pick a Grant policy — this determines who approves and how. Required.
4
Enter a Filter (CEL expression). Gate filters read a different variable set than guardrail rules — the call’s identity and target rather than the risk axes. The field’s helper text names
ctx.tool_name and ctx.tool_input; see the full list.5
Set Priority (0–1000, lower matches first) and leave Enabled on.
6
Turn Managed by guardrails on so this gate only fires when a rule selects it, then click Create.
7
Go back to your rule and select the gate under Tool gates.
Leaving Managed by guardrails off means the gate evaluates on every matching call independently of any guardrail. That’s sometimes what you want — a blanket approval requirement — but it makes the gate invisible to your rule cascade.
Step 5: Attach hooks
Hooks do the inspection and rewriting. Create them in the Hooks section of AI > Guardrails — see Tool call hooks for the full field reference and the built-in patterns. To make a hook selectable by a guardrail rule, turn on its Managed by guardrails toggle, either in the hook form or directly from the toggle column in the hooks table.Step 6: Promote from Observe to Enforce
Until you do this, a rule in Observe is a reporting mechanism, not a control.1
Leave the rule in Observe and run real traffic through it.
2
Review what it would have caught — see Where to find Observe results below.
3
Check both directions: rules that would have fired on calls you consider legitimate (too broad), and risky calls that matched nothing (too narrow).
4
Edit the rule and set Mode to Enforce.
Where to find Observe results
Every rule that matches a call — enforcing or observing — writes an event to the C1 system log. There is no per-guardrail activity view in C1, so the system log is where you read Observe results. In the exported OCSF events, guardrail decisions carry:
To count what a rule would have caught, filter on
activity_name = "guardrail_decision" plus would_have_fired = true and your policy_rule_id.
Observe records are written at informational severity — only an actual block is raised above that. A severity filter tuned to warnings and above will exclude exactly the records you’re staging against.
Step 7: Configure the untrusted content judge
The judge produces thectx.untrusted_content signal. It’s on by default and needs no setup — but you can turn it off.
1
Go to AI > Guardrails and open the Settings tab.
2
Under Untrusted content judge, click Edit and toggle it.
Delete a guardrail
Open the guardrail and click Delete in the top bar. The confirmation dialog names the guardrail and warns the deletion can’t be undone. Any binding that pointed at it stops applying.Next steps
- Rule fields, CEL variables, and evaluation order: Agent guardrails reference.
- Hook configuration and built-in patterns: Tool call hooks.
- Controlling which tools exist to be gated at all: Govern tools and toolsets.