How it works
Fast when obvious. Cheap when possible. Smart when necessary.
Most messages finish in a few hundred milliseconds. Rules catch the obvious hits; a smart parallel pass handles nearly everything else; anything still uncertain gets a deeper, category-specific analysis, still under a second.
The cascade
Three lines of defense, in order.
Rules first
A living pack of common attack patterns. Deterministic match, no model, and nothing waits on the network.
- decides here
- <1%
- time to decide
- <10ms
- obvious cases
Smart, in parallel
Every enabled category is scored at once. If it isn't sure, it escalates — it does not let the case through.
- decides here
- ~99%
- time to decide
- ~0.2s
- typical request
Deep analysis for hard cases
Each category has its own signals, scored by a dedicated algorithm — a structured verdict, not a free-form model guess.
- decides here
- <1%
- time to decide
- <1s
- hard cases included
Typical requests finish in about 0.2s. The hard path is designed to stay under 1s. Shares are what we expect on ordinary product traffic, not our hard eval set.
Defaults
Defaults that work. Controls when you want them.
The complexity lives inside the system. What you see is a handful of switches.
policy
Toggles, not tuning
Eight categories. Switch any of them off, except Minors, which stays on. Changes apply on the next request.
decisions
Uncertain is an honest answer
When the guard isn't sure, it says so. You choose what happens next: escalate, block, or allow.
resilience
Fail open or fail closed
If a provider is down, your policy decides whether traffic flows or waits. Never a silent guess.
playground
Try it before you wire it
Paste a message in the playground and see the decision, the findings, and the latency against your live policy. No code.
agents
Built for coding agents
/llms.txt, OpenAPI, and problem+json errors. Point your agent at it and let it do the integration.
policies
One policy per entrance
Chat, agent tools, and public comments don't need the same rules. Give each its own policy under one project. The default works until you need more.
Observability
Know what's in your traffic.
Not just a request count. See how much was allowed, blocked, or escalated, which categories your users actually trip, and how much of your traffic needed a deeper analysis at all.
The escalation rate is the number to watch. As rules and thresholds mature it falls, and cost, latency, and data exposure fall with it.
requests
12,481
- Allowed
- 96.8%
- Blocked
- 2.7%
- Escalated
- 0.5%
decided by stage
escalation rate 0.5% ↓ 0.5 vs last week
findings by category
- prompt_attack41%
- harassment22%
- sexual14%
- violence11%
- self_harm6%
- hate4%
- illicit2%
sexual_minors: 0 findings today. Category stays on regardless of policy.