Two rows, read on the same afternoon from the two vendors that sell this model.
OpenAI's deprecations page:
gpt-4.1-nano | gpt-4.1-nano-2025-04-14 → gpt-5.6-luna October 23, 2026
Microsoft's Azure OpenAI model retirements page:
Model Version Training retirement Deployment retirement
gpt-4.1-nano 2025-04-14 No earlier than 2027-04-14 2027-10-14
Same model. Same version string — 2025-04-14 on both. One page retired it four days ago.
The other gives it until next October. Neither page is out of date, and neither is wrong.
That is 356 days of difference on a single identifier.
The name is not the thing
The instinct is to treat gpt-4.1-nano as a fact about a model. It isn't. Retirement is a
decision made by whoever is running the inference, and this model is run by two organisations
with separate roadmaps, separate contracts and separate customers. The weights may be identical;
the commitment is not.
Which means a deprecation tracker — including anything you built, and the first version of mine —
has to answer "retires when?" with a question of its own: on whose platform?
Model identity frays in the other direction too. I keep a table of how the same model is
addressed across platforms. Here is every identifier for one model:
claude-opus-5 Vertex AI
anthropic.claude-opus-5 Bedrock (bedrock-runtime)
anthropic.claude-opus-5 Bedrock (bedrock-mantle)
us.anthropic.claude-opus-5 Bedrock, US inference profile
eu.anthropic.claude-opus-5 Bedrock, EU inference profile
au.anthropic.claude-opus-5 Bedrock, AU inference profile
global.anthropic.claude-opus-5 Bedrock, global inference profile
Six distinct strings across two platforms, before you add whatever the lab's own API calls
it. The Claude 4.5-generation models run to seven. A string comparison against "the model name"
is a comparison against one of six spellings, and which one you picked depends on which SDK you
happened to read first.
What this breaks
Allowlists. A policy that permits claude-opus-5 does not permit
eu.anthropic.claude-opus-5, which is the same model in Frankfurt. The failure is a permission
denial on a model you approved.
Deprecation tracking. If you poll one vendor's page for your end-of-life dates and deploy on
the other's platform, your dates are someone else's. For gpt-4.1-nano that is the difference
between a migration last week and a migration next year.
Cost models. The inference-profile prefixes are not cosmetic — us., eu. and global.
route to different capacity with different regional prices, which is a separate measurement I
wrote up here.
Same model, same call, different invoice.
The version column is doing more work than it looks like
Azure's table has a Version column, and OpenAI names a dated identifier
(gpt-4.1-nano-2025-04-14) rather than the bare alias. Both are telling you the same thing: the
retirement is scoped to a version, not to a name.
If you call the undated alias, you are pointed at whatever the vendor last mapped it to, and the
date on the page may not be the date for what you are actually being served. That is a second
layer of indirection on top of the platform question, and it is the one that silently changes
underneath a running system.
What I would actually do about it
Key your records on (platform, model, version), not on the name. Three fields. Any one of
them missing and the record is ambiguous in a way that produces a confidently wrong date.
Read the retirement page for the platform you deploy on. Not the lab's. If you run Claude on
Bedrock, Anthropic's lifecycle page is informational; AWS's is the one with your dates on it.
Pin the dated identifier where the vendor publishes one. It costs nothing and it makes the
alias remapping visible instead of silent.
Notes
Both pages read 2026-10-17: developers.openai.com/api/docs/deprecations and
learn.microsoft.com/en-us/azure/ai-foundry/openai/concepts/model-retirements. The Azure figure
quoted is the Deployment retirement date, which is the column comparable to OpenAI's
retirement date; the Training retirement column is a separate, earlier commitment.
Both tables are short right now — six rows each — which is worth saying because it means neither
vendor is simply carrying a longer backlog than the other. These are their current published
lists, and they disagree about a model that appears on both.
The platform identifier table is my own, built from the vendors' model listings. The eight-row
example above is one model; the same shape repeats for every Claude model sold through both AWS
and Vertex.
Dated retirement records per model, per platform:
aichangewatch.com/deprecations
Top comments (0)