Zero data retention, and which models support it
What zero data retention actually changes
An organisation on a zero-data-retention arrangement has requests handled without the underlying provider retaining that request's content afterward, beyond whatever short window is operationally necessary to serve it. That's a real, meaningful commitment for teams handling sensitive data, and it's also a constraint that narrows which models are actually usable — it isn't a setting that applies uniformly to every model in the current lineup regardless of that model's own requirements.
Why the Fable models can't run under it
The top tier — Fable 5 and Fable 5.1, and their Mythos counterparts — requires the standard data retention window as part of how it operates. That is a property of the models, not an option that can be relaxed per request. The only exception Anthropic describes is express authorisation through an account team; outside that, a zero-retention organisation and these models are structurally incompatible, and the constraint has to be designed around by choosing a different model for the workload. See Fable models are unavailable to zero-data-retention organisations for the exact error and where to route instead.
When a new model ships in the top tier, assume it inherits the requirement until its documentation says otherwise: Fable 5.1 did, unchanged.
Building model selection that respects the constraint
If your organisation operates under zero retention, that constraint needs to be enforced at the point where model selection happens, not left as something a developer has to remember when writing a new integration. A router or model-picking function that filters out incompatible models automatically, based on the organisation's actual retention requirement, is far more reliable than a policy that depends on everyone touching model selection knowing about the constraint and remembering to respect it manually.
Retention requirements interact with fallback logic too
A common place this gets missed isn't the primary model choice — it's a fallback chain. A request routed to a fully compliant primary model, with a fallback configured to a different model for availability reasons, needs that fallback checked against the same retention constraint the primary model satisfies. A fallback chosen only for capability or cost reasons, without the same compliance filter applied, can silently violate a retention requirement exactly when the fallback path actually triggers — which tends to be exactly the situation where nobody's watching closely, since fallback logic only runs when something else has already gone wrong.
Documenting the constraint where the next engineer will actually see it
A retention constraint enforced only in a filter function, with no comment or documentation explaining why it exists, tends to get "simplified away" by a future change that doesn't understand what it was protecting against — someone refactoring the router sees a special case that looks arbitrary and removes it to clean up the code. Document the constraint at the point it's enforced, stating plainly which requirement it exists to satisfy, so a future change to that code path has to actively decide to remove a documented compliance control rather than accidentally deleting an unexplained one.
Testing your enforcement, not just writing it
A filter that's supposed to keep an incompatible model out of a zero-retention organisation's routing path is a compliance control, and like any compliance control it's worth testing directly rather than trusting that the code is correct because it looks correct. Write a test that specifically asserts the incompatible model never appears as a selectable option — primary or fallback — under a zero-retention configuration, and run it as part of your normal test suite rather than relying on manual review to catch a regression here later.
Confirming the constraint before you build against it
Retention requirements are a property of specific models, and which specific models carry which requirement is exactly the kind of detail worth confirming directly against current model documentation rather than assuming it's carried over correctly from an earlier integration or a teammate's recollection. See the reference index for the current per-model detail, and the model picker for a recommendation that already accounts for a zero-retention constraint if you tell it that's a requirement.
Verified 2026-09-30 against ClaudeHow facts module (src/data/facts/) — see /about/#accuracy.