<!-- https://zerolog.ch/docs/zdr · Docs / Keys and privacy -->
# Zero data retention

Retention depends on the model used for each answer

ZeroLog shows whether zero data retention was enforced for an answer, stated generally by the provider, or not guaranteed.

## Where it stands today

*Check what applies to each answer*

Your conversation **Status shown**

The conversation shows the retention status for the model that answered.

After the answer **Review**

The retention status appears with the answer. Review it before sharing sensitive information.

Provider statements

A provider’s general statement does not confirm how a particular request was handled. Check the status in the chat transcript.

## The three statuses

**Zero data retention:** the request asks for it explicitly and the recipient enforces it. This applies to models served through the OpenRouter pool. If no provider can meet the request, the answer fails with “No zero-data-retention provider available for this model” instead of going elsewhere.

**Provider statement:** Featherless states generally that it does not store prompts or replies. No retention control is sent with each request, so this is the provider’s statement and not something ZeroLog enforces.

**No statement recorded:** for every other route, ZeroLog has no non-retention statement on file. The chat says so.

With an automatic model choice, the status is the one for the model that answered. [Anonymous chats](https://zerolog.ch/docs/anon) and chats with credentials both ask for zero-data-retention routing.

The chat transcript identifies the provider and its retention status for the route that answered.

A chat that holds credentials is stricter: it is refused, without any network call, on a route whose zero-data-retention commitment is not confirmed, and it never falls back to another provider. Featherless counts as confirmed through its written commitment of 28 September 2026, which is the provider’s statement and not enforced by ZeroLog. You can allow such a chat manually for one chat; the chat then shows that the override is active.

## Retention status and the credentials gate

Mermaid source of the diagram on this page:

```mermaid
%% Zero data retention: three route states and the credentials gate. Facts from server/retention-core.js, retention.js, routes/chats.js, web retention-note.tsx.
flowchart TB
  q["Answer is routed<br/>to a model"]
  e["Zero data retention<br/>request asks, recipient<br/>enforces (OpenRouter pool)"]
  p["Provider statement<br/>Featherless says it does<br/>not store; not enforced"]
  n["No statement recorded<br/>all other routes"]
  s["Status shown<br/>with the answer"]
  g["Chat holds credentials?"]:::hot
  ok["Runs"]
  rf["Refused, nothing sent<br/>unless you allow it<br/>for this chat"]
  nf["No provider can meet it:<br/>error, no fallback"]

  q --> e
  q --> p
  q --> n
  e --> s
  p --> s
  n --> s
  e -.->|none available| nf
  s --> g
  g -->|enforced, or provider<br/>statement on file| ok
  g -->|no statement| rf

  classDef hot stroke:#8f7ac9
```
