Demystifying ZDR: what zero data retention actually means
By Göran Sandahl -
TL;DR: Zero data retention is a provider's commitment not to keep your request content after it returns the answer. What it covers varies by provider, endpoint and feature, and providers use the term for several different things, so work out which control you actually need and get that into the contract. We have not found a law that requires ZDR as such, but it simplifies compliance, and it now limits which models you can use. Our model directory shows the retention terms of every route.
Zero data retention, or ZDR, is the most common data-handling requirement we hear from buyers. It is also the least precise. This post covers what the term means, how a provider actually handles a request, when you need ZDR, and how we handle it.
The topic comes up more for AI than for other software because the input is unstructured. Users type or paste anything into a chat box, and agents fetch files and call services on their own. You cannot control what gets sent, so you have to control what happens to it after it is sent.
Buyers mean different things by ZDR. Some want their data excluded from training. Some have a customer contract that forbids storage by third parties. Some want prompts kept for zero days rather than the usual 30. Only the last is zero data retention in the strict sense, and it is the one that now limits which models you can use.
What is ZDR
ZDR is a commitment about your request content: the provider does not keep prompts and answers after the answer is returned. It removes the copy most providers keep for about 30 days for debugging and abuse investigation. Its scope varies by provider, model, endpoint and enabled feature. Metadata, caches and safety exceptions are treated separately, so a customer requirement that nothing at all persists is a stricter thing than a provider's ZDR.
In practice the word covers five separate promises. A provider can make any one without the others.
| Layer | The question | Usual default on a paid API | What ZDR typically changes |
|---|---|---|---|
| Training | Does my data help train the model? | No | No |
| Abuse monitoring | Is my prompt scanned, and can a person read it if flagged? | Yes, and flagged content is kept for review | Your content is excluded from abuse logs. Traffic is still scanned, and flagged content can still be kept: Anthropic keeps it up to two years, OpenAI keeps suspected CSAM images |
| Logging | Is it written down, and for how long? | Up to 30 days | Content not kept, on the endpoints the agreement covers |
| Caching | Is it held to make the next call cheaper? | Often yes, minutes to 24 hours | Usually still cached. Where it lives and for how long depends on the provider and model |
| Feature storage | Do the features I switched on store data too? Conversation threads, uploaded files, code execution, web search | Yes, and it varies by feature | Still stored. Most of these features sit outside ZDR, and search and grounding have their own terms |
How a provider handles your data
Ordinary inference does not change the model. Its weights are fixed, the request runs through it in memory, and the working state is discarded when the answer is returned. Everything that is stored is stored by the systems around the model: the systems that carry your request to the GPU and carry the answer back.
Here is that path, with the places a copy can be written, what form it takes, what happens by default, and what changes with ZDR. It is an illustrative map. Not every provider has every component, and what is kept depends on the route, your settings and the features you use.
- Your appYour code assembles the prompt and sends it. If you log requests, you hold the first full copy.Your own logsFull prompt and answer
- Form
- Plain text, readable by anyone with access to your logs
- Default
- N/A. Up to you
- ZDR
- N/A. Up to you. A provider promise never reaches your side
- GatewayA gateway such as Opper processes the request on your behalf before it reaches the provider. Ours is zero data retention by default: no prompt or completion content is kept by the gateway, the platform or its monitoring systems.Gateway metadataModel, token counts, latency, cost, policy decisions. No prompt or answer
- Form
- Structured records for your usage and cost reporting
- Default
- Kept, so you can see what you spent and where
- ZDR
- Unchanged. Enterprise contracts can extend zero retention to this too
TracesFull prompt, answer and tool calls per request- Form
- Plain text, in your Opper account, readable by your team
- Default
- Off. Nothing is stored unless you turn tracing on
- ZDR
- Your switch. Leave it off and the gateway holds no content at all
- Provider API edgeThe provider checks your key, applies rate limits and picks a server.Request logIds, token counts, latency, IP. No prompt or answer
- Form
- Structured records. Numbers and identifiers, not your text
- Default
- Kept for months or years
- ZDR
- Unchanged. Metadata stays, and usually should
- Safety classifiersThe prompt, and later the answer, are scored for abuse.Classifier scoresA risk score per request
- Form
- Numbers and category labels. Nothing of the text survives
- Default
- Kept briefly in abuse monitoring logs. Kept for years only if the request was flagged
- ZDR
- Scoring still runs. Routine scores are not kept. Scores for flagged content are kept
Abuse review storeFlagged prompts and answers- Form
- Content in readable form, accessible to authorised reviewers
- Default
- Flagged content stored for review, 30 days to 2 years
- ZDR
- Your content is excluded from abuse logs. Flagged content can still be kept: up to 2 years at Anthropic, suspected CSAM images at OpenAI, plus legal holds
- Inference serverThe prompt runs through the model. The model keeps nothing. The cache does.Prompt cacheThe start of your prompt, as the model represents it
- Form
- Key and value tensors: numbers derived from your text, held on the GPU machines. Not the text, but a faithful representation of it
- Default
- Held in memory, 5 minutes to 24 hours
- ZDR
- Usually still cached. Storage, lifetime and ZDR treatment depend on the provider, model and cache mode
- Server-side toolsIf the model calls a tool the provider runs, the request leaves the box and the result comes back into the prompt.Tool stateSearch queries, fetched pages, generated files, container disks
- Form
- Mixed. Text and files as they are, plus whatever the tool wrote
- Default
- Kept per tool: the session, or up to 30 days
- ZDR
- Per tool. Search and grounding have their own retention terms. Containers and files are usually outside ZDR
- Answer returnedThe response goes back to you. The provider keeps its own copy of the exchange.7. Content logPrompt and answer
- Form
- Content in readable form, accessible to the provider's authorised systems
- Default
- Prompt and answer kept about 30 days
- ZDR
- Not kept. This is the copy ZDR removes
- Form
- Encrypted snapshots of the same data, in the same form as the source
- Default
- Copies persist until the backup window closes
- ZDR
- Nothing to back up for the rows ZDR removes. The rest remains
Three things follow. The copies ZDR removes are the content log and your content in the abuse review store. The copies it does not touch are metadata, the cache, whatever your tools and features store, and content the provider's safety systems flag. The copies most teams overlook are the ones their own code enables: caching and tools. The provider documents behind each card are listed under Sources at the end.
Do you need ZDR
A ZDR requirement comes from one of three places: the law, your own company, or the people using your product. Almost none require ZDR. Several get simpler with it, because a provider that keeps no content leaves you no retention period to justify, nothing to delete on request, and nothing for a reviewer to read. Lawful processing, processor contracts and transfers still apply.
| Source | What it actually requires | Needs ZDR? | What to ask the provider for |
|---|---|---|---|
| GDPR storage limitation | Do not keep personal data longer than you need. A limit you set and justify | No, but it simplifies it. No retained content means no retention period to justify | A retention window you can defend |
| GDPR Article 28 | A written agreement with anyone processing data for you, and a sub-processor list | No, but it simplifies it. Nothing retained means shorter duration and deletion terms | A signed DPA and a published sub-processor list |
| GDPR Chapter V, residency | A transfer mechanism if data leaves the EEA, plus safeguards where local law allows government access | No. Location is a separate question | A named region per route, no silent fallback, the contracting entity, the transfer mechanism |
| DORA | The countries where data is processed and stored, named in the contract | No | A named region per route and notice of change |
| Record-keeping rules: EU AI Act for high-risk systems, MiFID II, NIS2, HIPAA | Each makes you keep certain records. Which records, and for how long, depends on the rule and your role | No. These apply to your own records. Provider ZDR can coexist with them as long as you keep the records your case requires | Nothing. These land on you |
| A customer contract | Whatever the clause specifies. Check its scope: "personal data of our end users" covers far less than all your traffic | If the clause prohibits the retention in question, whether or not it uses the term | The exact terms the clause names, in the DPA |
| Trade secrets | Information only counts as a trade secret if you took reasonable steps to keep it secret. Retention and review weaken that | Helps | Modified abuse monitoring and ZDR, in writing |
| Privilege and confidentiality | Disclosing privileged or confidential material to a third party can put its protection at risk. A binding agreement and no retention reduce that risk, but do not by themselves establish privilege | Helps | ZDR and modified abuse monitoring, in the DPA |
| Your own privacy policy | Your vendor chain has to match the sentence you published | Only if you promised it. ZDR makes the promise easy to keep | A sub-processor list you can publish |
| Competitive position | Your traffic should not improve a product you compete with | No | A no-training clause. Usually included in commercial API terms |
| User expectations | No stranger reads what they typed, deletion actually deletes, data stays in their part of the world | No, but it settles two of the three at once. Nothing to read, nothing to delete | A short chain, modified abuse monitoring, deletion that reaches sub-processors, a named region |
For any requirement, go back to the source document and check what it actually says, then ask the provider for that specific control and get it into the DPA. A statement on a website can change without notice.
Not legal advice. Your own duties are a question for your lawyers.
Our approach: routing on terms
The unit is the route, not the model or the company. Claude on Bedrock in Frankfurt, on Anthropic's own API, and on Vertex are three different answers to every question above. So we treat terms as a property of the route and let you choose routes by them.
Every route carries its terms. Each model page in the directory lists, per hosting route, zero data retention, training, logging, moderation, caching, sub-processor access, DPA, transfer mechanism and region, with the date we last checked. Where we have not established a fact, the page says so. This matters more than it used to. Since June 2026 Anthropic's most capable models keep prompts and outputs for 30 days on every platform, an existing ZDR agreement does not automatically make you eligible to avoid it, and Bedrock blocks a request when the model's permitted retention modes do not include your configured policy. Your retention requirement now narrows which models you can use, and the directory shows the answer per route. Filter for every route with ZDR or EU routes with ZDR before you write a line of code.
The gateway does not keep content by default. We run in AWS Stockholm and process requests on your behalf. Prompt and completion content is not retained by the gateway, the platform or its monitoring systems. Metadata for your reporting is kept under its own retention policy, and tracing, which stores full requests in your Opper account, is a switch you turn on when you want it. One DPA with us covers every model you add, and Enterprise contracts can extend zero retention to the metadata too. Details on the compliance page.
You define the fallback routes. A fallback that quietly moves a request to another host undoes every promise above. With aliases you define the fallback chain yourself and can check each route against your requirements, so when your first choice is full the request goes only where you said it can go.
In short: decide which of the five promises you need, get it into the contract, and choose routes that meet it.
Frequently asked questions
What does zero data retention actually mean?+
That the provider does not keep your prompts and answers after the answer is returned. It removes the copy most providers keep for about 30 days. What it covers varies by provider, endpoint and feature, and in marketing the term is used far more loosely, often to mean only that the provider does not train on your data.
Is no training the same as zero data retention?+
No. No training is a separate and narrower commitment, and on paid APIs it is usually already true. A provider can keep your prompts for 30 days, let staff read flagged ones, and still honestly say it never trains on them.
Does any law require zero data retention?+
We have not found one that requires it as such. GDPR asks you not to keep personal data longer than you need, which is a limit you set. The EU AI Act, MiFID II, NIS2 and HIPAA require you to keep records. Those duties apply to your own records, and ZDR applies to your provider's copy, so they never collide.
Does prompt caching break a ZDR claim?+
Providers say no, because the cache lives in memory and expires within minutes to a day. If your promise is that nothing is held anywhere, it counts and has to be turned off. If the worry is a log a person could later read, a short-lived cache is a different risk.
Does zero data retention mean my data stays in the EU?+
No. A provider can keep nothing and process every request in the US. Location is a separate question: where inference runs, where anything kept is stored, which legal entity you contract with, and who can be compelled to hand data over.
Open the model directory, filter to zero data retention, and read the data-handling section on any model page. If something is missing for a route you need, tell us and we will go and find the answer.
Sources
Provider documentation, checked September 2026.
- OpenAI: Data controls in the OpenAI platform, covering retention defaults, abuse monitoring logs, ZDR eligibility by endpoint, prompt caching and hosted tools
- OpenAI: Offering zero data retention for frontier models
- Anthropic: API and data retention, covering ZDR scope, the feature eligibility table and retention regardless of arrangement
- Anthropic: Prompt caching
- Anthropic: How long do you store personal data
- Anthropic: Data retention practices for covered models
- Microsoft: Data, privacy, and security for Foundry Models sold by Azure
- Microsoft: Abuse monitoring
- Microsoft: Limited access to Models sold by Azure
- AWS: Data retention in Amazon Bedrock
- AWS: Enforce zero data retention on Amazon Bedrock with Bedrock Projects and service control policies
- Google: Generative AI on Vertex AI data governance