PRIVACY

The flag does not fail fable

· 5 MIN · 1,132 WORDS

@vercel posted yesterday that a virtual model ID can enforce zero data retention. The blog under that post says a caller cannot turn the flag off. The ZDR page names a model the flag does not cover. anthropic/claude-fable-5 does not support zero data retention on Anthropic, Google Vertex, or Amazon Bedrock. Prompts and completions are kept for 30 days. The same page says the gateway will not fail that kind of request.

What the ID forces

The post went up October 28 at 22:27 UTC. When I read it this morning it had 45,966 impressions and 317 likes. The blog under it is the same day, by Rohan Taneja, Walter Korman, Sam Chitgopekar, Jerilyn Zheng, and Ben Sabic. A virtual model is a slug. You call vmc/coding-agent instead of a lab’s model string. Change the model behind the slug and the apps pick it up in a few minutes. No redeploy.

They have a reason to want that. The blog says 125 new models from more than 10 labs landed on AI Gateway in the last 90 days. About 10 a week. Chasing that list in every repo is a bad job. One ID is a better job. I buy that part.

Retention sits on that same ID. The create command in the post is vercel ai-gateway virtual-models create coding-agent --model anthropic/claude-opus-5.5 --config '{"speed":"fast","zeroDataRetention":true}'. Zero data retention is one of the settings that stays when you swap the model. Fallbacks and tags stay too. Provider options do not. An Anthropic setting stops applying when you point the slug at another lab. The compliance flag is the one they say survives the swap.

The virtual model docs are plainer than the tweet. Compliance only tightens. If the slug sets zero data retention, a request cannot set it to false. If the request sets it, the slug cannot turn it off. Team-wide zero data retention stays on for that traffic. The slug can add the restriction. It cannot remove the team’s.

That matters for the agents people actually run. Claude Code and Codex usually cannot attach gateway options like provider order or zero data retention. The docs say you give them those settings by selecting vmc/<slug> as the model. The agent stores the slug. The flag lives on the slug, not in the agent’s config.

The default is still off. The ZDR page says the gateway does not route on a provider’s retention policy unless you turn the flag on. Per-request is no extra charge, on Pro and Enterprise. Team-wide is $0.10 per 1,000 successful requests that return usage data. A failed request is not charged.

When the flag is on, routing is a filter. Marked bring-your-own keys for a compliant provider go first. If those fail, the gateway falls back to its own credentials for providers it says it has an agreement with. If nothing in that set serves the model, the request fails. The error type is no_providers_available.

The request they will not fail

The provider table has a footnote. anthropic/claude-fable-5 does not support ZDR on any provider, including Anthropic, Google Vertex, and Amazon Bedrock. Anthropic’s reason is in the same note. Some misuse patterns only become visible across cumulative requests. Prompts and completions are retained for 30 days. They are not used to train Claude.

The paragraph above the table is the other rule. Certain models, or certain functions of a model, may be left out of a provider’s ZDR policy. AI Gateway will not fail those requests if zero data retention is enabled. Tool calls are called out on their own. A provider-side web search or grounding tool can be processed and kept by another service, under that service’s terms. The gateway does not block that either. You have to read those terms yourself.

Those are not the same path as the 400. No ZDR provider at all, and the request dies. A provider still checked as ZDR, with a named model carved out, and the page says the request will not fail. The footnote is that carve-out. I read the 30 days as what happens when the call still leaves. I did not send one.

The worked example on the same page is a different model. A request for anthropic/claude-sonnet-5 with the flag on still falls back to Google Vertex and Amazon Bedrock on Vercel’s credentials, even if your own Vertex key is not marked ZDR. Your unmarked key is skipped. Their system key is not. Vertex stays in the compliant set. Fable-5 is the exception inside providers they already marked compliant. That is why the fail path and the footnote can both be on the page.

Vercel says the gateway itself does not keep prompts, outputs, or sensitive data, and deletes them when the request completes. That sentence is about Vercel’s copy. The 30 days are about the provider. Caching is also at the provider. The page says whether that cache counts as ZDR depends on who you landed on. It does not give a day count for the cache.

OpenAI’s row is labeled “ZDR with safety retention.” The cell does not say how long. I am not going to fill that in.

Bring-your-own-key is a checkbox. Marking a key ZDR does not turn the policy on. It only makes the key eligible once the flag is already on. The note under the toggle says Vercel has no visibility into your agreement, and you take responsibility for the mark. A slug that forces the flag will still try that key first if you marked it.

A nearby string is not the same model

The virtual model docs show how fast the string moves. The example edit is vercel ai-gateway virtual-models edit coding-agent --model anthropic/claude-fable-5.1. Every agent on vmc/coding-agent goes to Fable 5.1 for new requests within a few minutes. The agent never sees the new string. It still has the slug.

That example is claude-fable-5.1. The footnote is claude-fable-5. I am not treating those as the same model. The page that names the 30 days names one string. The page that shows the edit names another. If 5.1 is covered and 5 is not, the difference is the suffix, and a slug will not show you the suffix.

I wrote on October 3 that a proof can unlink who paid and still leave the prompt with the provider. This is the same split, with a dashboard flag in the middle. Not training is a different promise from not keeping. Cumulative misuse review is a reason to keep a copy. It is not a deletion.

If the work cannot sit for 30 days, the check is the model id behind the slug, not the flag on it. The flag tells you which providers they will try. The footnote tells you which model they will not fail.