Zero retention
What Privian stores and — more importantly — what it does not.
Not stored
- Raw prompts.
- Raw entity values (the contents that were masked).
- The per-request token map.
- Rehydrated responses.
- Provider API key plaintext.
- Gateway API key plaintext (only
sha256(key)is stored).
Stored
- API key metadata: prefix, last 4 characters, hash, status, owner.
- BYOK provider credentials as ciphertext + IV + key version + last 4.
- Sanitized observability events: request ID, org ID, model, provider, status class, latency, error category, counts (e.g.
entitiesDetected). - Rollup metrics for usage and analytics — never raw content.
How it is enforced
- The orchestrator never writes the prompt to telemetry. Event payloads carry
promptBytes(a count), not the prompt. - Every event envelope passes through a sanitizer that redacts email- and phone-shaped substrings and clips overly long strings before any sink receives it.
- The default production sink is a no-op; the optional Supabase outbox sink receives only sanitized envelopes.
Limitations
- Downstream providers (OpenAI, Anthropic, Google) have their own retention policies for the masked traffic they receive. Privian masks before egress; it does not control the provider's logging.
- Sanitized observability events themselves are retained for operational debugging and rollups. They contain counts and timings, not content.