Product/Runtime controls

What is actively enforced on every call

Redaction, guardrails, limits, budgets and restrictions run in path, on the request itself. This page is the inventory of those controls: what each one does, when it runs, and what happens when it cannot run at all.

Order of enforcement Redaction Guardrails Rate limits and budgets Provider and model restrictions Failure modes
Order of enforcement

Controls run in a fixed order, and the order is in the record

A request is admitted, checked against limits and restrictions, redacted, then passed through inbound guardrails before it reaches a provider. The response comes back through outbound guardrails. Every stage writes its own line into the audit record, with the time it took and the decision it made.

Request trace, one call req_9abf7859 · 1196ms total
Admission and auth
Obstruo key resolved to a project
0ms
Limits and restrictions
Rate, budget, allowed models
5ms
Redaction
2 entities tokenized
8ms-2 PII
Guardrails, in
Inbound allow
451ms
Provider call
Priority routing, one failover
720ms
Guardrails, out
Response checked, then returned
12ms
Tool calls made by an agent take the same path, with tool guardrails in place of the model call.
RedactionLIVE

Detect and redact PII before it reaches the model

Three detectors run in sequence: regex recognizers for structured data, named-entity recognition for people and organisations, and an LLM pass for the cases the first two cannot see. A project applies as many recognizer rules as it needs, in any combination: Polish national identifiers alongside NANP phone numbers and SSNs, plus your own patterns. Matches are tokenized, not deleted, so a reply can be re-expanded on the way back.

Regex, NER and LLM entity detection in one pipeline
Any number of rules per project, including your own patterns
Test panel that shows the redacted prompt before you save
PII redaction, test panelENABLED
Regex
15 rules
NER
4 rules
LLM entity
1 rule
AFTER PIPELINE
Hi, this is {PERSON_000001e0} from ACME. Email me at {EMAIL_ADDRESS_0000010f} or call {US_PHONE_0000015e}. SSN on file: {US_SSN_00000016}. CC: {CREDIT_CARD_00000180}.
10 MATCHES
REGEXEMAIL_ADDRESS"jordan.kim@northwind-…"
REGEXUS_SSN"432-78-1923"
REGEXCREDIT_CARD"4111 1111 1111 1111"
NERPERSON"Jordan Kim"
GuardrailsLIVE

A separate policy for each direction of traffic

Inbound guards the prompt on its way to the model. Outbound guards the answer on its way back to the user. Tool guardrails sit on the calls an agent makes, where a poisoned tool result is the attack. Each direction has its own rule set, its own action per rule, and its own failure mode.

Inbound guardrails
Every applicable rule runs on every request, before the model sees it.
Failure modefail-closed
GUARDRAILKINDACTIONFIRES / 24HFP RATE
Jailbreak and DAN heuristic
Pattern and classifier blend matching DAN, AIM, developer mode, encoded payloads and persona switching.
heuristic block 14 0.4%
Prompt-injection classifier
Detects instruction override, role hijack and system-prompt extraction with a fine-tuned classifier.
classifier block 9 0.9%
Secret in prompt
Provider keys, private keys and tokens pasted into a prompt by a user or an upstream system.
regex block 3 0.0%
Off-topic judge
An LLM judge that flags requests outside the purpose the project was approved for.
llm warn 21 2.1%
Add your own regex or LLM rules per direction. Default action is warn.
Custom regex rulesCustom LLM rules
Rate limits, per key
LIMITCEILINGON BREACH
Requests per minute600429 throttle
Tokens per minute240k429 throttle
Concurrent requests40queue, then 429
Tool calls per run25block
Budgets, Trading-Prodmonth to date
€ 3,410
of € 4,000 monthly ceiling
85% USED
WHEN THE CEILING IS REACHED
Block new calls
Selected for this project
Warn and keep serving
Owner notified, traffic continues
Rate limits and budgets

A runaway agent is a cost incident and a safety one

Limits are set per key, per project and per agent, so one misbehaving loop cannot exhaust a shared quota or a shared budget. Budgets are enforced in path rather than reported the following month. You choose what the ceiling means: block new calls, or warn the owner and keep serving.

Requests, tokens, concurrency and tool calls per run
You pick the action at the ceiling, block or warn
Every throttle and stop written to the audit log
Provider and model restrictions

An app can only reach what the project is allowed to reach

Each project has an allow list of providers, models and regions. A call that asks for anything outside it is refused in path with a reason the developer can read, not a silent fallback to something cheaper. Restrictions are inherited from the governance policy, so a model that compliance has not approved cannot be reached even by an operator with admin rights in the console.

Allow lists per provider, model and processing region
Refusals carry the policy that caused them
Logical model names, so the real provider can change without a deploy
Allowed models, Trading-Prod5 of 9 allowed
MODELREGIONACCESS
obstruo-chateu-centralAllow
obstruo-reasoningeu-centralAllow
obstruo-embeddingeu-westAllow
obstruo-vision-us us-eastDeny
obstruo-chat-previewus-eastPending
403 model_not_permitted
policy: approved-models-only v9, project Trading-Prod
Failure modes

Decide now what happens when a control cannot run

A detector can time out. A classifier can be unreachable. Every control on this page carries its own failure mode, set per project, so the answer is a decision your compliance team made in advance rather than a default nobody chose. The mode that applied is written into the record for that call.

strictest
fail-closed

If the control cannot run, the call does not go through. The right answer for regulated traffic, where an unredacted prompt reaching a provider is worse than an outage.

Default for redaction and inbound guardrails.
middle
fail-degraded

The call proceeds with the strongest control that is still available: regex without NER, heuristics without the classifier. The gap is recorded, not hidden.

Common for outbound and tool guardrails.
loosest
fail-open

The call proceeds without the control and is flagged in the audit log. Appropriate for development projects and for traffic that carries no personal data.

Cannot be selected on a project under a locked policy.
Kill switch, engage a stop2 active kills
SCOPE
API key
Agent
MCP
Region
MODE
Hard kill
Drop in path, 403
Degrade
Safe fallback
Quarantine
Capture, no effect
Kill switchCOMING SOON

One stop that reaches every call, when it lands

The kill switch is the control we are still building. It stops traffic in path for a single key, an agent, an MCP server or a whole region: hard kill, safe degrade, or quarantine for capture without effect. It takes effect in path, with no async plumbing and no redeploy, and every engage and restore is signed into the audit log. It is listed here so your review can plan around it, not so a deck can imply it exists.

Your AI. Your data. Your control.

See the controls enforced on your own traffic, in a project of your choosing.

See obstruo in action See governance