"Runtime enforcement" and "guardrails" get used interchangeably in vendor pitches. They are not the same thing. Confusing them leads to stacks that catch prompt-injection heuristics but let a runaway agent burn a six-figure budget, or vice versa. This post draws the line.
What guardrails actually are
Guardrails, as the term is used by NVIDIA NeMo Guardrails, LlamaGuard, LangChain, and every major LLM app framework, are content rules. They inspect the text of a prompt or a response and classify it against a set of criteria: is this PII, is this a jailbreak attempt, is this toxic, is this off-topic for the intended assistant?
Guardrails are usually implemented as a small model or a set of regexes, executed either client-side (in the application) or server-side (in a proxy). Their unit of output is a boolean or a redacted string.
What runtime enforcement is
Runtime enforcement is a decision function. It takes the full request context — key identity, project scope, workspace budget, model allow-list, current quota state, plus the request itself — and produces an authoritative allow/deny/redirect. Its unit of output is a control-plane decision, not a content classification.
Guardrails answer "is this text OK?" Enforcement answers "should this call happen at all?"
The two-layer picture
Application
│
▼
Enforcement gateway ← decision function
│ (allow, deny, redirect)
▼
Content guardrails ← content classifier
│ (redact, block, rewrite)
▼
Provider (OpenAI, Anthropic, ...)
Enforcement runs first. If enforcement says deny — for example, the workspace budget is spent — no guardrail runs. If enforcement says allow, guardrails inspect the payload and may still reject or rewrite.
The order matters. Running guardrails before enforcement wastes compute on requests that would have been denied anyway, and worse, it can leak information about the guardrail decision itself to a caller who was not authorized to make the call.
What each is good at
| Concern | Enforcement | Guardrails |
|---|---|---|
| Budget overrun | Yes | No |
| Model allow-list | Yes | No |
| Per-team quotas | Yes | No |
| Prompt injection | No | Yes |
| PII redaction | No | Yes |
| Jailbreak detection | No | Yes |
| Response toxicity | No | Yes |
| Compliance audit | Emits decision events | Emits redaction events |
Common confusion: "our guardrails block the request"
They do — but only at the content layer. If the request is legitimate under content policy but the workspace is over budget, guardrails will happily let it through. That is not a guardrail failure. That is a scope failure — you are using a content classifier for a job that requires a control-plane decision function.
Common confusion: "our enforcement handles PII"
A pure enforcement plane does not read the payload. It reads metadata — key identity, model, size, cost estimate. If your enforcement decision requires inspecting the text, you are running guardrails inside your enforcement layer. That is fine architecturally, but be explicit: you have a two-layer system, and the payload-inspecting layer has different latency, availability, and failure characteristics.
The ThinkNEO stance
ThinkNEO ships both — but calls them what they are. The gateway (enforcement) makes the allow/deny decision on identity, budget, quota, model, and scope. A separate guardrail layer (optional, per-project) inspects prompts and responses. Decisions from both layers are written to the same audit ledger, so an auditor can reconstruct why any call was allowed, denied, or rewritten.
The buying question
If a vendor tells you they do "AI guardrails," ask: can you block a call because a workspace is over its cost budget, before the prompt is inspected? If the answer is "no, that's a different feature" — great, you have a content-guardrail vendor. If the answer is "yes, we do that too," ask how the decision is composed, whether it is auditable, and whether the two decisions can be owned by different teams.
The failure mode of a stack that only has content guardrails is spending money. The failure mode of a stack that only has enforcement is publishing unsafe content. Neither is acceptable in production.
Bottom line
Guardrails and enforcement are different controls with different failure modes. Buy for both. Own them separately. Compose them explicitly, with enforcement upstream of guardrails.
Related reading: What is AI runtime enforcement? · Enforcement vs observability · Reference architecture