Secrets are masked right in the streaming response chunks, before they ever reach the client.
chunk: "sk-live-4f…" → [SECRET] One fixed pipeline: kill-switch, access, budget, DLP inbound and outbound, audit. Below we break down what each stage does and what each DLP layer catches. Every claim comes with a technical proof: latency, method, verdict.
11 stages run on a fixed rail: none is skipped, none jumps the queue. DLP fires twice, as gates inbound and outbound. The full pre-call pipeline adds milliseconds to a request and scales linearly across replicas, without slowing the development flow.
Emergency stop before any work
L0–L4 · Redis · instant
Who this is and what role
JWT / OIDC / SAML · RBAC
Is the requested model allowed
whitelist allowed_models
Is it within its limit
Redis sliding-window · per-role RPM
Is there budget for the request
user / team / org · 402 when exhausted
What reaches the model, no leaks
layers 0–5 concurrent · BLOCK / MASK
Have we answered this already?
SHA-256 · opt. cosine of embeddings
Call to the provider
httpx forward · retry + fallback chain
What the model returned, under review
layers 6–7 · hallucination / copyright
Store the response for later
write + keyed-HMAC attestation
Every step into an immutable log
HMAC-chained · metrics · SIEM CEF
Same response contract, same request-id
response · 0 hidden hops
Layers 0–7 and multimodal add up to 23 scanner modules on disk. Active stages run in parallel (asyncio.gather), so a request clears them in one shared pass, not the sum of the layers. The label color encodes the layer in the crystal dispersion palette.
Secrets are masked right in the streaming response chunks, before they ever reach the client.
chunk: "sk-live-4f…" → [SECRET] NFKC normalization and zero-width stripping run before the scan: evasion with invisible characters fails.
sk-live → sk-live → scan The model never becomes an exfil channel: echoing a placeholder back in the response is intercepted.
 → blocked Every verdict turns into an action. Graded-trust never downgrades injection to masking.
BLOCK · MASK · WARN · LOG A DLP failure closes a cloud request; for local ones it opens: the data is already in the perimeter.
cloud: closed · local: open A built-in set plus marketplace packs. DLP profiles are configured per tenant.
built-in + marketplace Every detection method has its strength and its blind spot: two qualitative profiles show where a method is fast and where it is deep. We show both, instead of selling one as a silver bullet.
deterministic, instant scan, zero drift blind to paraphrase, breaks on obfuscation
catches PII in free text, language-aware misses rare formats, throws false positives
reads intent by meaning opaque, drifts, needs threshold calibration
context and reasoning, best recall on hard attacks latency and cost, non-deterministic, not for realtime
Runs the layers concurrently and combines the verdicts: regex catches the exact, NER and ML pick up the semantic, the LLM judge works off the main request path, in the scanner.
the whole pipeline · milliseconds per request · asyncio.gather, not the sum of the layers
Need maximal provider breadth without DLP: take LiteLLM, it can stay the transport behind Prizma. More in the FAQ
The scope is nested: the outer level kills all traffic, each inner one narrows the zone. You can cut everything at once or pinpoint a single model, a single user, a single agent, without touching the rest.
stopall AI traffic in the org runningnothing, a full stop
stopone user's requests runningall other users
stopone model for everyone runningother models stay available
stopegress to cloud models runninglocal models keep running
stopone autonomous agent runningother agents untouched
stops instantly through Redis · source of truth in PostgreSQL · full HMAC-chained audit trail
A retrieved fragment is the most common vector for indirect injection. The firewall inspects every chunk on its own and lets only the vetted into context. A poisoned chunk is demoted and never reaches the model.
An agent acts on its own, so every step is traced, arguments are scanned, and a sensitive action waits on a human. The model itself arrives as a file that is checked before loading, without unpacking.
Zip-Slip · Keras-Lambda · CVE-2025-10155/56/57
A self-hosted LLM Firewall inside your perimeter. One base_url line, and no prompt leaves directly.