Step 1: Create a classifier
Start from AI > Classifiers, where every classifier you create is listed alongside its bindings, rules, hooks, and tool gates.1
Go to AI > Classifiers and click Create classifier.
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 classifier appears in when you bind it.
4
Click Create classifier. C1 creates it and opens its detail page.
To rename a classifier or change its description or surface later, click Edit on the Details card on its detail page.
Step 2: Bind the classifier
Where you bind depends on the surface the classifier applies to.Agent surface
For a tenant-wide default across your C1AI agents:1
Go to AI > Classifiers.
2
Under Default C1AI Classifier policy, open the dropdown — it reads No default classifier selected until you set one.
3
Pick your classifier.
Only classifiers whose Applies to is Agent appear in these dropdowns. The match is exact — a classifier 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 Classifier policy, select your classifier.
Step 3: Author a rule
A classifier’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 classifier’s detail page, click New classifier 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 classifiers 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 classifier 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 > Classifiers, 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 classifier 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. Leave it empty to gate every call the gate sees, apart from the exclusions below.5
Review Exclusions — two checkboxes, both on by default, that add to the filter rather than replace it: Exclude task result read-backs (leaves
c1_task_service_get ungated, so an agent can read the result of an action it was already approved for) and Exclude built-in tools (leaves the agent’s own object-search, code-mode, and file-workspace tools ungated; a connector tool sharing one of those names still gates). Turn one off to bring those calls back under this gate. Your own condition above stays intact either way — toggling an exclusion never rewrites what you typed.6
Set Priority (0–1000, lower matches first) and leave Enabled on.
7
Turn Managed by classifiers on so this gate only fires when a rule selects it, then click Create.
8
Go back to your rule and select the gate under Tool gates.
Leaving Managed by classifiers off means the gate evaluates on every matching call independently of any classifier. 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 > Classifiers — see Tool call hooks for the full field reference and the built-in patterns. To make a hook selectable by a classifier rule, turn on its Managed by classifiers 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-classifier activity view in C1, so the system log is where you read Observe results. In the exported OCSF events, classifier decisions carry:These event names still use the internal
guardrail/aigov.guardrail identifiers. Only the admin UI and API were renamed to Classifiers; the underlying audit event schema wasn’t.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 > Classifiers and open the Settings tab.
2
Under Untrusted content judge, click Edit and toggle it.
Delete a classifier
Open the classifier and click Delete in the top bar. The confirmation dialog names the classifier 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 classifiers reference.
- Hook configuration and built-in patterns: Tool call hooks.
- Controlling which tools exist to be gated at all: Govern tools and toolsets.