## LLM model deprecation schedule 2026: OpenAI, Anthropic, Google

URL: https://www.evalshift.dev/blog/llm-model-deprecation-schedule
Published: 2026-11-10
Tag: migration
Summary: The 2026-2027 LLM deprecation schedule: every OpenAI, Anthropic and Google shutdown date, the replacements, notice periods and how to migrate.

Takeaways:
- As of November 6, 2026, the next major LLM model shutdowns are gemini-3.6-flash on Vertex AI and every o-series model on Azure OpenAI (November 19), Anthropic's claude-sonnet-4-5-20250929 and OpenAI's hosted Evals platform (November 30), OpenAI's gpt-5 family, o3 and o3-pro (December 11), and OpenAI's gpt-4o, gpt-4o-mini, gpt-4.1 and gpt-4.1-mini snapshots (January 14, 2027).
- The same model retires on different dates on different platforms: o3 shuts down on OpenAI's API on December 11, 2026 but on Azure OpenAI on November 19, 2026, and Claude Sonnet 4.5 retires on the Claude API on November 30, 2026 but runs on AWS Bedrock until April 8, 2027.
- Stated minimum notice is six months for OpenAI's generally available models, 60 days for Anthropic and Azure OpenAI, and 45 days for Vertex AI's short-lived Gemini models; in 2026 OpenAI gave GPT-4o and GPT-4.1 92 days, and every retirement Anthropic announced in 2026 got 60 to 62 days.
- Some deprecations change the model without failing a request: from December 1, 2026 the Gemini API answers gemini-2.5-pro calls with gemini-3.8-flash and gemini-2.5-flash calls with gemini-3.5-flash-lite, billed at the new model's rates, and Azure OpenAI upgrades Standard deployments automatically at retirement.
- Before a model shuts down, record a baseline on it while it still answers, replay production traffic on the listed replacement, and compare tool calls, structured fields and refusals per route; update the request too, because Claude 4.7 and later reject a non-default temperature and Gemini 3.8 Flash ignores it.

As of November 6, 2026, the next major LLM model shutdowns are `gemini-3.6-flash` on Vertex AI and
every o-series model on Azure OpenAI on November 19; Anthropic's `claude-sonnet-4-5-20250929` and
OpenAI's hosted Evals platform on November 30; OpenAI's `gpt-5`, `gpt-5-mini`, `gpt-5-nano`,
`gpt-5-pro`, `o3` and `o3-pro` on December 11; and OpenAI's `gpt-4o`, `gpt-4o-mini`, `gpt-4.1` and
`gpt-4.1-mini` snapshots on January 14, 2027. In between, on December 1, the Gemini API starts
answering `gemini-2.5-pro` requests with `gemini-3.8-flash` and `gemini-2.5-flash` requests with
`gemini-3.5-flash-lite`.

Three things about the schedule matter more than any single date:

1. **The same model retires on different dates on different platforms.** `o3` shuts down on
   OpenAI's API on December 11 but on Azure OpenAI on November 19. Claude Sonnet 4.5 retires on
   Anthropic's API on November 30 but runs on AWS Bedrock until April 8, 2027.
2. **Notice periods differ.** OpenAI promises at least six months for generally available models,
   Anthropic at least 60 days, Vertex AI at least 45 days for its short-lived Gemini models, and the
   Gemini API's dates are only the earliest a model might go.
3. **Not every deprecation fails.** Some providers move your requests to a different model instead
   of rejecting them. The code keeps working, on a model nobody tested.

The rest of this post is the full calendar, what already retired this year, each provider's
policy, and how to migrate before a date arrives. Every date comes from the provider's own page,
read on November 6, 2026:
[OpenAI](https://developers.openai.com/api/docs/deprecations),
[Anthropic](https://platform.claude.com/docs/en/about-claude/model-deprecations),
[the Gemini API](https://aistudio.google.com/docs/deprecations),
[Vertex AI](https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/model-versions),
[Azure OpenAI](https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule)
and [AWS Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html).
Providers revise these pages often, so check the page before you act on a row.

## LLM model shutdowns from November 2026 to May 2027

| Date | Provider and surface | What shuts down | Listed replacement |
| --- | --- | --- | --- |
| November 13, 2026 | AWS Bedrock | Claude 3 Haiku, Claude 3 Sonnet, Claude 3.5 Sonnet and Claude 3.7 Sonnet in the regions AWS lists for this date. Claude 3 Haiku and Claude 3 Sonnet in ca-central-1 follow on November 27 | None listed by AWS |
| November 15, 2026 | Azure OpenAI | `codex-mini` | None listed |
| November 17, 2026 | Gemini API | Live and TTS previews: `gemini-3.1-flash-live-preview`, `gemini-2.5-flash-native-audio-preview-12-2025`, `gemini-3.1-flash-tts-preview`, `gemini-2.5-flash-preview-tts`, `gemini-2.5-pro-preview-tts` | `gemini-3.8-live`; `gemini-3.8-flash-tts` or `gemini-3.8-flash-lite-tts` |
| November 19, 2026 | Vertex AI | `gemini-3.6-flash` | `gemini-3.8-flash` |
| November 19, 2026 | Azure OpenAI | `o1`, `o1-pro`, `o3`, `o3-pro`, `o3-mini`, `o4-mini`, `o3-deep-research` | `gpt-5.6-sol`, or `gpt-5.6-terra` for `o3-mini` and `o4-mini` |
| November 30, 2026 | Anthropic API and Google Cloud | `claude-sonnet-4-5-20250929` | `claude-sonnet-5-5` (Anthropic's listing; Google names none) |
| November 30, 2026 | OpenAI | The Evals platform (dashboard and API), Agent Builder, and the `v1/prompts` API | Promptfoo for evals, the Agents SDK, prompts kept in your own code |
| December 1, 2026 | Gemini API | `gemini-2.5-pro` and `gemini-2.5-flash` stop answering as themselves: requests route to the replacement, billed at its rates | `gemini-3.8-flash` for Pro, `gemini-3.5-flash-lite` for Flash |
| December 1, 2026 | OpenAI | `gpt-image-1-mini`, `gpt-image-1.5`, `chatgpt-image-latest` | `gpt-image-2.6-sunburst` or `gpt-image-2.6-flare` |
| December 3, 2026 | Gemini API | `gemini-omni-1.1-flash`, routed to its successor | `gemini-omni-1.2-flash` |
| December 11, 2026 | OpenAI | `gpt-5`, `gpt-5-mini`, `gpt-5-nano`, `gpt-5-pro`, `o3`, `o3-pro` | `gpt-5.6-sol` (`reasoning.mode: pro` for the pro models), `gpt-5.6-terra` for mini, `gpt-5.6-luna` for nano |
| December 13, 2026 | Vertex AI | `gemini-live-2.5-flash-native-audio` | `gemini-3.8-live` |
| December 15, 2026 | Azure OpenAI | `whisper`, `tts`, `tts-hd`. `gpt-image-1.5` follows on December 16 | None listed |
| January 6, 2027 | OpenAI | `tts-1`, `tts-1-hd`, `gpt-4o-mini-tts`. Existing customers can also no longer start self-serve fine-tuning jobs | `gpt-realtime-2.1-mini` |
| January 8, 2027 | AWS Bedrock | Claude Opus 4.1 | None listed by AWS |
| January 14, 2027 | OpenAI | `gpt-4o-2024-08-06`, `gpt-4o-2024-11-20`, `gpt-4o-mini-2024-07-18`, `gpt-4.1-2025-04-14`, `gpt-4.1-mini-2025-04-14` | `gpt-6-luna` |
| January 14, 2027 | Azure OpenAI | `gpt-4o` version 2024-05-13 | `gpt-5.1` |
| January 20, 2027 | OpenAI | `gpt-realtime`, `gpt-audio`, `gpt-realtime-mini`, `gpt-audio-mini`, the `gpt-4o` audio and realtime families, and `gpt-4o-mini-transcribe-2025-03-20` | `gpt-realtime-2.1`, `gpt-realtime-2.1-mini`, `gpt-audio-1.5`; `gpt-4o-mini-transcribe-2025-12-15` |
| January 28, 2027 | Vertex AI | `gemini-3.7-flash` | `gemini-3.8-flash` |
| February 1, 2027 | OpenAI | `gpt-5.5-cyber-preview` | The most capable cyber model available to you |
| February 9, 2027 | Azure OpenAI | `gpt-5` and `gpt-5-nano` | None listed |
| February 26, 2027 | OpenAI | `whisper-1`, `gpt-4o-transcribe`, `gpt-4o-mini-transcribe`, `gpt-4o-transcribe-diarize`, and the `/v1/audio/translations` endpoint | `gpt-transcribe` or `gpt-live-transcribe`; `v1/realtime/translations` |
| March 15, 2027 | Gemini API and Vertex AI | `gemini-2.5-flash-image` | `gemini-3.1-flash-lite-image` |
| April 1, 2027 | OpenAI | `gpt-5.1`, `gpt-5.3-codex`, `gpt-5.4-nano` | `gpt-6-sol`, or `gpt-6-luna` for nano |
| April 1, 2027 | Vertex AI | `text-embedding-004`, `text-embedding-005`, `text-multilingual-embedding-002`, `multimodalembedding@001` | None listed |
| April 7, 2027 | Azure OpenAI | `gpt-5-pro` | None listed |
| April 8, 2027 | AWS Bedrock | Claude Sonnet 4.5 | None listed by AWS |
| April 14, 2027 | Azure OpenAI | `gpt-4o` versions 2024-08-06 and 2024-11-20, `gpt-4o-mini`, `gpt-4.1`, `gpt-4.1-mini`, `gpt-4.1-nano` | `gpt-5.1` for `gpt-4o`; none listed for the rest |
| May 7, 2027 | Gemini API | `gemini-3.1-flash-lite` (the earliest possible date) | `gemini-3.5-flash-lite` |

The OpenAI, Anthropic and Google rows are complete for this window. The Azure rows cover the chat
and reasoning models; Azure's schedule lists more preview, audio, image and Codex dates. It was last
updated on September 23, 2026, before OpenAI's October announcements, so expect its rows to move.
"Not sooner than" dates are left out on purpose. Anthropic and Google list one for models that are
still active, but it is a floor, not a schedule, and the Anthropic section explains why one that
has already passed means nothing yet.

## LLM models already retired in 2026

| Date | Provider | Retired |
| --- | --- | --- |
| January 5 | Anthropic | Claude Opus 3 (`claude-3-opus-20240229`) |
| January 14 | Gemini API | `text-embedding-004` |
| February 17 | OpenAI | `chatgpt-4o-latest` |
| February 19 | Anthropic | Claude Sonnet 3.7, Claude Haiku 3.5 |
| March 9 | Gemini API | `gemini-3-pro-preview`, which now points to `gemini-3.1-pro-preview` |
| March 26 | OpenAI | `gpt-4-0314`, `gpt-4-0125-preview` and the `gpt-4-turbo-preview` alias |
| April 20 | Anthropic | Claude Haiku 3 |
| May 7 | OpenAI | The `gpt-4o` realtime and audio previews |
| May 12 | OpenAI | DALL·E 2 and DALL·E 3, and the Realtime API beta |
| June 1 | Gemini API and Vertex AI | `gemini-2.0-flash`, `gemini-2.0-flash-lite` |
| June 15 | Anthropic | Claude Sonnet 4, Claude Opus 4 |
| June 30 | Vertex AI | Imagen 3 and Imagen 4, Veo 2 and Veo 3.0 |
| July 23 | OpenAI | `computer-use-preview`, the search previews, `gpt-5-chat-latest`, `gpt-5-codex` through `gpt-5.2-codex`, `o3-deep-research`, `o4-mini-deep-research` |
| August 5 | Anthropic | Claude Opus 4.1 |
| August 26 | OpenAI | The Assistants API |
| September 24 | OpenAI | The Videos API and Sora 2 |
| September 28 | OpenAI | `gpt-3.5-turbo-instruct`, `babbage-002`, `davinci-002` |
| October 14 | AWS Bedrock | Claude Sonnet 4 |
| October 20 | Vertex AI | `gemini-2.5-pro`, `gemini-2.5-flash`, `gemini-2.5-flash-lite` (Google's listed retirement date) |
| October 23 | OpenAI | `gpt-3.5-turbo`, `gpt-4`, `gpt-4-turbo`, `gpt-4o-2024-05-13`, `gpt-4.1-nano`, `o1`, `o1-pro`, `o3-mini`, `o4-mini`, `gpt-image-1` |

The October 23 batch is the one most likely to be hiding in old code: it took the original `gpt-4`,
`gpt-3.5-turbo`, `o1` and `o4-mini` off OpenAI's API, while Azure keeps the o-series until
November 19.

## OpenAI model deprecations: the policy

OpenAI's [deprecations page](https://developers.openai.com/api/docs/deprecations) defines three
terms. A model is **deprecated** from the day the shutdown is announced, and every deprecated model
has a shutdown date. At **shutdown** the model is no longer accessible. A **legacy** model gets no
more updates and will be deprecated later.

The notice OpenAI commits to depends on the kind of model:

- **Generally available models:** at least six months.
- **Specialized variants** such as `-chat-latest`, Codex and deep-research models: at least three
  months.
- **Models with "preview" in the name:** much shorter notice, such as two weeks. OpenAI advises
  against building business-critical features on them.

Both minimums apply unless safety or compliance concerns force a faster timeline. Customers who
are actively using a model get an email, and OpenAI says some can buy dedicated capacity to keep a
model past its shutdown date by talking to sales. OpenAI doesn't document the error a shut-down
model returns. Developers have
[reported](https://community.openai.com/t/open-ai-model-gpt-4-32k-0314-can-not-be-accessed/1283800)
a 404 with the code `model_not_found`, which looks the same as a typo in the model name.

Three details catch teams out:

- **Fine-tuned models die with their base.** A fine-tune follows its base model's shutdown date,
  so a fine-tune of `gpt-4o-2024-08-06` stops on January 14, 2027. From January 6, 2027 existing
  customers can no longer start new self-serve fine-tuning jobs, so you can't rebuild it on a newer
  base the way you trained it.
- **Aliases point at snapshots.** `gpt-4o` and `gpt-4.1` resolve to dated snapshots, and OpenAI's
  changelog shows aliases being repointed to newer snapshots. The January 14 notice names only
  the snapshots and doesn't say what the bare aliases do afterwards. Plan as if they stop
  working too.
- **Your eval tooling may be on the list.** OpenAI's hosted Evals went read-only on October 31 and
  shuts down on November 30, 2026. If your migration tests live there, move them before you need
  them. The [LLM evaluation tools comparison](/blog/best-llm-evaluation-tools) covers the
  alternatives.

The API also tells you directly. `GET /v1/models` returns a `shutdown_date` for each model, or
`null` if none is announced. A short CI check can fail the build on both a coming date and a pinned
ID the list doesn't return at all, which covers a model that is already gone as well as a typo:

```python
import sys
from datetime import date, timedelta
from openai import OpenAI

PINNED = {"gpt-4o-2024-08-06", "gpt-5-mini"}  # every model ID your code calls
horizon = (date.today() + timedelta(days=90)).isoformat()

models = {m.id: getattr(m, "shutdown_date", None) for m in OpenAI().models.list()}
problems = [f"{m}: not available" for m in PINNED if m not in models]
problems += [f"{m}: shuts down {models[m]}" for m in PINNED if models.get(m) and models[m] <= horizon]
print("\n".join(problems) or "no pinned model shuts down in the next 90 days")
sys.exit(1 if problems else 0)
```

## Azure OpenAI retires the same models on different dates

Azure OpenAI, now documented under Microsoft Foundry, sets its own
[retirement schedule](https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule).
For the same model it can be earlier or later than OpenAI's:

| Model | OpenAI API | Azure OpenAI |
| --- | --- | --- |
| `o3`, `o3-pro` | December 11, 2026 | November 19, 2026 |
| `o1`, `o3-mini`, `o4-mini` | Shut down October 23, 2026 | November 19, 2026 |
| `gpt-4o` 2024-05-13 | Shut down October 23, 2026 | January 14, 2027 |
| `gpt-4o` 2024-08-06 and 2024-11-20, `gpt-4o-mini`, `gpt-4.1`, `gpt-4.1-mini` | January 14, 2027 | April 14, 2027 |
| `gpt-5`, `gpt-5-nano` | December 11, 2026 | February 9, 2027 |
| `gpt-5-mini` | December 11, 2026 | July 13, 2027 |
| `whisper-1` (Azure: `whisper`) | February 26, 2027 | December 15, 2026 |

The [policy](https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirements)
is also its own. A generally available model gets an 18-month lifecycle: it is deprecated at 12
months, when new customers can no longer deploy it, and retired at 18 months. Subscription owners
get at least 60 days' notice for GA models and 30 days for previews, and retirement dates can't be
extended. After retirement, every request returns `410 Gone`.

What happens on the day depends on the deployment type. Standard, Global Standard and Data Zone
Standard deployments are upgraded automatically at retirement. For `gpt-4o` 2024-05-13, Global
Standard and Data Zone Standard deployments move to `gpt-5.1`; its Regional Standard deployments
already retired on March 31, 2026. The exception is a deployment set to `NoAutoUpgrade`, which
simply stops working.
Provisioned deployments are never upgraded automatically: they fail on the date unless you migrate
them first.

One trap if you check this from code: the Models API names states differently from the docs. The
API's `Deprecating` is what the docs call Deprecated, and the API's `Deprecated` is what the docs
call Retired.

## Claude model deprecations

Anthropic retired seven Claude models from its API in 2026, listed in the table above. The next one
is `claude-sonnet-4-5-20250929`: deprecated on September 30, 2026, it retires on November 30, 2026,
and Anthropic's listed replacement is `claude-sonnet-5-5`. The only other deprecated model is
`claude-mythos-preview`, deprecated on June 9, 2026, with its retirement date still to be
announced.

Anthropic's [deprecations page](https://platform.claude.com/docs/en/about-claude/model-deprecations)
also gives every active model a "not sooner than" date:

| Model ID | Retires not sooner than |
| --- | --- |
| `claude-haiku-4-5-20251001` | October 15, 2026 (passed; still active) |
| `claude-opus-4-5-20251101` | November 24, 2026 |
| `claude-opus-4-6` | February 5, 2027 |
| `claude-sonnet-4-6` | February 17, 2027 |
| `claude-opus-4-7` | April 16, 2027 |
| `claude-opus-4-8` | May 28, 2027 |
| `claude-fable-5`, `claude-mythos-5` | June 9, 2027 |
| `claude-sonnet-5` | June 30, 2027 |
| `claude-opus-5` | July 24, 2027 |
| `claude-fable-5-1`, `claude-mythos-5-1` | September 1, 2027 |
| `claude-opus-5-5` | September 22, 2027 |
| `claude-sonnet-5-5` | September 28, 2027 |
| `claude-haiku-5-5` | October 7, 2027 |

Read these as floors. Anthropic gives at least 60 days' notice before retiring a publicly released
model, by email to customers with active deployments and on the deprecations page. Haiku 4.5's floor
passed in October with no notice, so it keeps running. `claude-opus-4-5-20251101` has no notice
either, so it can't retire on November 24. A model with no deprecation notice as of November 6
can't retire before early January 2027.

Anthropic's lifecycle has four states. **Active** models are fully supported. **Legacy** models
get no more updates and may be deprecated. **Deprecated** models still work but have a replacement
and a retirement date. **Retired** models no longer serve requests. How model IDs behave changed
with the 4.6 generation:

- From Claude 4.6 on, the dateless ID is the model. `claude-sonnet-4-6` is a fixed snapshot,
  Anthropic doesn't change the weights behind an ID, and an update ships under a new ID.
- Before 4.6, short names such as `claude-sonnet-4-5` are aliases that point to the latest dated
  snapshot. Pin the dated ID if you want the guarantee.

The request changes too. In API version `2026-10-21` Anthropic removed `temperature`, `top_p` and
`top_k`, which now return a 400 error. On earlier API versions, Claude 4.7 and later models return
the same error when these are set to a non-default value. So moving a call from Sonnet 4.5 to
Sonnet 5.5 that sets `temperature=0` fails on the first request, before any behavior is compared.

Retired doesn't mean deleted. In November 2025 Anthropic
[committed](https://www.anthropic.com/research/deprecation-commitments) to keeping the weights of
every publicly released model for at least the lifetime of the company, and Claude Opus 3 is still
available to paid claude.ai subscribers and, on request, through the API. Anthropic says it isn't
committing to do the same for every model. For a production system that is a footnote: the date on
the deprecations page is the one that breaks your calls.

## Claude on AWS Bedrock and Google Cloud

Anthropic's dates apply to Anthropic-operated platforms: the Claude API, Claude Platform on AWS,
Microsoft Foundry and the Anthropic-managed offering on Google Cloud. AWS Bedrock and Google's own
Claude offering on Vertex set their own dates:

| Model | Claude API | AWS Bedrock | Google Cloud (Google-managed) |
| --- | --- | --- | --- |
| Claude Sonnet 4.5 | November 30, 2026 | April 8, 2027 | November 30, 2026 |
| Claude Opus 4.1 | Retired August 5, 2026 | January 8, 2027 | Not listed |
| Claude Sonnet 4 | Retired June 15, 2026 | Retired October 14, 2026 | Not listed |
| Claude 3.7 Sonnet | Retired February 19, 2026 | November 13, 2026, in two regions | Retired May 11, 2026 |
| Claude 3 Haiku | Retired April 20, 2026 | September 10, 2026 in most regions; November 13 or 27 in the rest | Retired August 23, 2026 |
| Claude Haiku 4.5 | Not sooner than October 15, 2026 | Not sooner than October 16, 2026 | Not sooner than December 7, 2026 |

On [Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html),
AWS notifies you when a model enters the Legacy state, and its policy says a model stays in Legacy
for at least six months before its end of life (for some models launched since September 7, 2026,
the Legacy period is 45 days). The dates don't always follow it: the Claude 3 models that went
Legacy in a few regions on October 10 to 15, 2026 reach end of life there on November 13 or 27, 31
to 43 days later. Legacy is also stricter than it sounds:

- New customers can't use a Legacy model.
- Existing customers can lose access after 15 days without using it.
- No new Provisioned Throughput or fine-tuning jobs can be created on it.
- After three months in Legacy, a model can enter public extended access, where the provider sets
  a higher price.

The inactivity rule matters for evaluations. An eval suite that runs the old model once a quarter
can find its baseline gone before the end-of-life date. After end of life, requests fail with
`ResourceNotFoundException` unless you have a private arrangement with the model provider. Lifecycle
state is per region, so check the `modelLifecycle` field in every region you deploy to:

```bash
aws bedrock get-foundation-model --region us-east-1 \
  --model-identifier anthropic.claude-sonnet-4-5-20250929-v1:0 \
  --query 'modelDetails.modelLifecycle'
```

## Gemini model deprecations

Google runs two surfaces with two schedules. The
[Gemini API](https://aistudio.google.com/docs/deprecations), the one you reach with an AI Studio
key, lists the earliest date a model might be shut down and promises to communicate the exact date
in advance. Preview models get at least two weeks' notice. [Vertex AI](https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/model-versions),
now documented as Gemini Enterprise Agent Platform, keeps its standard models available for at
least 12 months after release. Shorter-lived models like `gemini-3.6-flash` get a fixed date at
least 45 days out, and Vertex dates are never moved earlier.

The dates that matter most right now:

- **November 19, 2026:** `gemini-3.6-flash` retires on Vertex. Its replacement is
  `gemini-3.8-flash`, which is listed until at least September 2, 2027.
- **December 1, 2026:** on the Gemini API, requests to `gemini-2.5-pro` route to `gemini-3.8-flash`
  and requests to `gemini-2.5-flash` route to `gemini-3.5-flash-lite`, billed at the new model's
  rates. Google deprecated both on November 2 and already limits them to projects that used them
  before. `gemini-2.5-flash-lite` is not deprecated on the Gemini API.
- **January 28, 2027:** `gemini-3.7-flash` retires on Vertex. On the Gemini API it already routes
  to `gemini-3.8-flash`.

The Gemini API marks the state in the response: since January 2026, a `modelStatus` field can carry
a `modelStage` (`LEGACY` means existing customers only, `RETIRED` means the model can't be used)
and a `retirementTime`. The full Gemini migration, including the request changes for Gemini 3.8
Flash and the per-surface table, is in the
[Gemini model deprecation checklist](/blog/gemini-model-deprecation-migration-checklist).

## How the deprecation policies compare

| Surface | Minimum notice | On the date | Can the model change under a fixed ID? | Check from code |
| --- | --- | --- | --- | --- |
| OpenAI API | 6 months for GA, 3 for specialized variants, shorter for previews (such as 2 weeks) | Requests fail | Aliases such as `gpt-4o` point to a dated snapshot and get repointed | `shutdown_date` in `GET /v1/models` |
| Azure OpenAI | 60 days for GA, 30 for previews | `410 Gone`, or an automatic upgrade on Standard deployments | Yes, by auto-upgrade | Models API `lifecycleStatus` |
| Anthropic API | 60 days | Requests fail | Only pre-4.6 aliases; from 4.6 each ID is a fixed snapshot | Deprecations page; Console usage export by model |
| AWS Bedrock | 6 months in Legacy by policy (45 days for some newer models) | `ResourceNotFoundException` | No | `modelLifecycle` per region |
| Gemini API | Dates are the earliest possible; 2 weeks for previews and `-latest` swaps | Shut down, or routed to a successor | Yes: rerouted IDs and `-latest` aliases | `modelStatus` in the response |
| Vertex AI | 12 months from release for standard models; 45 days for short-lived ones | Requests fail | Not documented | Model versions page |

## Promised notice vs the notice providers gave in 2026

The policies are minimums, and some 2026 notices came in under them. Counting from the
announcement date on each provider's deprecations page to the shutdown date:

| Provider | Models | Announced | Shutdown | Days of notice | Stated minimum |
| --- | --- | --- | --- | --- | --- |
| OpenAI | `o1`, `o4-mini`, `gpt-4`, `gpt-3.5-turbo` and the rest of the October batch | April 22, 2026 | October 23, 2026 | 184 | 6 months |
| OpenAI | `gpt-5`, `gpt-5-mini`, `gpt-5-nano`, `o3`, and the pro models | June 11, 2026 | December 11, 2026 | 183 | 6 months |
| OpenAI | `gpt-realtime`, `gpt-audio` and the `gpt-4o` audio families | July 20, 2026 | January 20, 2027 | 184 | 6 months |
| OpenAI | `whisper-1` and the transcribe models | August 26, 2026 | February 26, 2027 | 184 | 6 months |
| OpenAI | `gpt-5.1`, `gpt-5.4-nano`, `gpt-5.3-codex` | October 1, 2026 | April 1, 2027 | 182 | 6 months (3 for Codex) |
| OpenAI | `tts-1`, `tts-1-hd`, `gpt-4o-mini-tts` | October 1, 2026 | January 6, 2027 | 97 | 6 months |
| OpenAI | `gpt-4o`, `gpt-4o-mini`, `gpt-4.1`, `gpt-4.1-mini` | October 14, 2026 | January 14, 2027 | 92 | 6 months |
| OpenAI | `gpt-audio-mini-2025-10-06`, `gpt-realtime-mini-2025-10-06` | April 22, 2026 | July 23, 2026 | 92 | 6 months |
| OpenAI | `gpt-5.4-cyber` | September 11, 2026 | October 1, 2026 | 20 | Not stated for cyber models |
| Anthropic | Claude Haiku 3 | February 19, 2026 | April 20, 2026 | 60 | 60 days |
| Anthropic | Claude Sonnet 4, Claude Opus 4 | April 14, 2026 | June 15, 2026 | 62 | 60 days |
| Anthropic | Claude Opus 4.1 | June 5, 2026 | August 5, 2026 | 61 | 60 days |
| Anthropic | Claude Sonnet 4.5 | September 30, 2026 | November 30, 2026 | 61 | 60 days |
| AWS Bedrock | Claude 3 Haiku, 3 Sonnet, 3.5 Sonnet, 3.7 Sonnet in a few regions | October 10 to 15, 2026 (entered Legacy) | November 13 or 27, 2026 | 31 to 43 | 6 months in Legacy |
| Gemini API | `gemini-2.5-pro`, `gemini-2.5-flash` (rerouted, not shut down) | November 2, 2026 | December 1, 2026 | 29 | Dates are the earliest possible |

A few patterns stand out. OpenAI kept to six months for most of its large 2026 shutdowns, but
GPT-4o, GPT-4.1, the TTS models and two audio snapshots got about three, and the specialized
`gpt-5.4-cyber` got 20 days. Its deprecations page gives no reason, and its policy allows faster
timelines for safety or compliance concerns. Every retirement Anthropic announced in 2026 got 60 to
62 days, almost exactly its minimum. Its retirements announced in 2025 had more: Claude Opus 3 got
189 days and Claude Sonnet 3.7 got 114. On the Gemini API, access to the 2.5 models was already
limited to existing users from September 18, so the 29 days were not the only warning.

The planning rule that follows: a policy minimum is not your runway. Notices in 2026 ran from 20
days to six months, so have the migration test ready before the email arrives, not after it.

## The deprecations that don't fail

A shutdown is loud: requests fail and someone gets paged. Three mechanisms change the model without
a single failed request:

- **Rerouting.** The Gemini API answers deprecated IDs with a successor. In 2026 that covered
  `gemini-3.5-flash` and `gemini-3.7-flash`, and from December 1 it covers `gemini-2.5-pro` and
  `gemini-2.5-flash`. That last move swaps a Pro model for a Flash model under a pinned ID, with
  new pricing and a model that ignores `temperature`.
- **Auto-upgrade.** Azure OpenAI's Standard deployments move to the replacement at retirement
  unless you opted out.
- **Aliases.** `-latest` names on the Gemini API are hot-swapped with every release after two
  weeks' email notice. OpenAI's bare model names move to newer snapshots. Pre-4.6 Claude short
  names follow the newest dated snapshot.

All three are migrations you shipped without a test run or a diff. You can at least see them,
because responses report which model answered. Log it next to every call and alert when it changes
per route:

```python
print(openai_response.model)         # OpenAI: the dated snapshot, e.g. gpt-4o-2024-08-06
print(gemini_response.model_version)  # Gemini: the model that actually served the request
```

## App removals are not API retirements

A model leaving a chat app tells you nothing about its API date. On October 29, 2026 Anthropic
removed Claude Haiku 4.5 from the claude.ai model selector on the Free, Pro and Max plans, while
the Claude API, Claude Code and the Team and Enterprise plans kept offering it. Its API status is
still Active. Treat a model leaving ChatGPT the same way: for the API, the provider's deprecations
page is the only schedule that counts.

## How to prepare for the next model deprecation

1. **Inventory every model ID and where it runs.** Include the eval harness, where judge and
   embedding models are easy to forget, and fine-tunes, which retire with their base model. Start
   with a grep and read every hit:

   ```bash
   grep -rhoE "\b(gpt-[a-z0-9][a-z0-9.-]*|chatgpt-[a-z0-9.-]+|o[134](-[a-z0-9-]+)?|claude-[a-z0-9.-]+|gemini-[a-z0-9.-]+|text-embedding-[a-z0-9-]+|tts-1(-hd)?|whisper-1|codex-mini[a-z-]*)\b" \
     --exclude-dir={node_modules,.git,.venv,dist} . | sort | uniq -c | sort -rn
   ```

2. **Look up each date on that surface's page.** A model reached through Azure, Bedrock or Vertex
   follows that platform's date, not the model maker's. Where the API exposes a field, check it
   from CI instead of by hand.
3. **Pick a pinned replacement with a long runway.** Check the replacement's own row before you
   commit. Moving a `gpt-4o` route to `gpt-5` today means migrating again on December 11. OpenAI
   lists `gpt-6-luna` for `gpt-4o`, and Anthropic's `claude-sonnet-5-5` can't retire before
   September 28, 2027.
4. **Update the request, not just the model string.** Sampling parameters are where most of the
   breakage is this year. Claude 4.7 and later reject a non-default `temperature`, Gemini 3.8 Flash
   ignores it, and OpenAI's pro replacements take `reasoning.mode: pro`. A new embedding model
   usually means re-embedding your index, because vectors from different models aren't comparable.
   Google's move from `gemini-embedding-2-preview` to `gemini-embedding-2` is an exception: the
   same embedding space, no re-index.
5. **Record a baseline while the old model still answers, then diff.** Replay real production
   inputs on the old and new model and compare tool calls, arguments, structured fields and
   refusals per route, not one average. The method, with the six regressions it caught on a real
   upgrade, is in
   [How to catch LLM regressions before a model upgrade ships](/blog/llm-regression-testing-model-upgrade).
6. **Cut over per route with a rollback path.** Keep the old model as the fallback while it still
   answers, then put the replacement's own retirement date on the calendar with a reminder 60 days
   ahead.

Step 5 has a deadline the others don't. Once a model is shut down or rerouted, you can't record
what it did anymore. If `gemini-2.5-flash`, `claude-sonnet-4-5-20250929` or `gpt-5` is in
production, the time to capture its behavior is before December 1, November 30 and December 11.

## Doing this with EvalShift

Disclosure: I'm the founder of EvalShift, and step 5 is the part it automates. The capture SDK
wraps the OpenAI, Anthropic and `google-genai` clients and records real runs, including tool calls,
and `compare` replays them against the replacement:

```python
from openai import OpenAI
from evalshift import capture
from evalshift.adapters.openai import wrap_openai

client = wrap_openai(OpenAI())  # wrap_anthropic and wrap_genai work the same way

@capture.agent(suite="support", redact=True, tools=[])  # no-op unless EVALSHIFT_CAPTURE=1
def handle_ticket(message): ...
```

```bash
pip install evalshift
EVALSHIFT_CAPTURE=1 python my_agent.py   # record production-shaped runs
evalshift capture sync                   # recorded runs -> golden suite
evalshift compare --suite-name support --to gpt-6-luna
```

Both arms are live calls, so run it while the old model still answers. The verdict comes from a
`migration_policy` written before the run, and the report shows the per-example diff. Docs:
[/docs/sdk-adapters](/docs/sdk-adapters), [/docs/migration-policy](/docs/migration-policy),
[/docs/verdicts](/docs/verdicts).

## FAQ

**When is GPT-4o being deprecated?** On OpenAI's API, the `gpt-4o-2024-08-06` and
`gpt-4o-2024-11-20` snapshots and `gpt-4o-mini-2024-07-18` shut down on January 14, 2027, with
`gpt-6-luna` as the listed replacement. The older `gpt-4o-2024-05-13` already shut down on
October 23, 2026. On Azure OpenAI, `gpt-4o` 2024-05-13 retires on January 14, 2027 and the newer
versions on April 14, 2027.

**What happens when an OpenAI model is deprecated?** Deprecation is the announcement: the model
keeps working until its shutdown date, and customers using it get an email. After the shutdown date
requests to it fail, and developers have reported a 404 `model_not_found` error. Fine-tuned models
shut down with their base model.

**What is the difference between a deprecated and a retired model?** A deprecated model still
works, but it has an announced end date and usually a recommended replacement. A retired model no
longer serves requests. OpenAI calls the end state "shut down", Anthropic and Vertex AI call it
"retired", and AWS Bedrock calls it "end of life". Watch the word "legacy": at OpenAI and Anthropic
it means a model gets no more updates, while on Bedrock it means an end-of-life date is already set.

**How much notice does OpenAI give before shutting down a model?** At least six months for
generally available models, at least three months for specialized variants such as chat, Codex and
deep-research models, and much shorter notice, such as two weeks, for models with "preview" in the
name. Safety or compliance issues can shorten all of these. In 2026 most large shutdowns got about
six months, but GPT-4o, GPT-4.1 and the TTS models got about three, and `gpt-5.4-cyber` got 20
days.

**What happens to fine-tuned models when the base model is deprecated?** On OpenAI a fine-tuned
model shuts down on its base model's date, so a fine-tune of `gpt-4o-2024-08-06` stops on January
14, 2027. From January 6, 2027 existing customers can no longer start new self-serve fine-tuning
jobs, so it can't be retrained on a newer base the same way. On AWS Bedrock, a model in the Legacy
state accepts no new fine-tuning jobs.

**Can I keep using a model after its shutdown date?** Usually not. OpenAI says some customers can
buy dedicated capacity for continued access through its sales team. On AWS Bedrock, access after
end of life needs a private arrangement with the model provider. Anthropic kept Claude Opus 3
available on request after its retirement, but says it isn't committing to do that for every
model.

**Which Claude models are being deprecated?** `claude-sonnet-4-5-20250929` is deprecated and
retires from the Claude API on November 30, 2026, replaced by `claude-sonnet-5-5`.
`claude-mythos-preview` is also deprecated, with its retirement date still to be announced. In 2026
Anthropic already retired Claude Opus 3, Sonnet 3.7, Haiku 3.5, Haiku 3, Sonnet 4, Opus 4 and Opus
4.1. Every other model only has a "not sooner than" date, the earliest it could retire.

**How much notice does Anthropic give before retiring a Claude model?** At least 60 days for
publicly released models, by email to customers with active deployments and on the model
deprecations page. A "not sooner than" date that passes without a notice, as Claude Haiku 4.5's did
in October 2026, doesn't retire anything.

**Is Gemini 2.5 being deprecated?** On Vertex AI, Google lists October 20, 2026 as the retirement
date for `gemini-2.5-pro`, `gemini-2.5-flash` and `gemini-2.5-flash-lite`. On the Gemini API,
2.5 Pro and 2.5 Flash were deprecated on November 2, 2026, and from December 1, 2026 their requests
route to `gemini-3.8-flash` and `gemini-3.5-flash-lite`. `gemini-2.5-flash-lite` is not deprecated
on the Gemini API.

**Do Azure OpenAI and AWS Bedrock use the same retirement dates as OpenAI and Anthropic?** No. Each
platform sets its own dates, and only that platform's date applies to calls made through it. `o3`
retires on Azure on November 19, 2026 but on OpenAI's API on December 11. Claude Sonnet 4.5 runs on
Bedrock until April 8, 2027, months after its November 30 retirement on the Claude API.

**How can I check whether a model I use is deprecated?** OpenAI returns a `shutdown_date` for each
model in `GET /v1/models`. Gemini API responses can carry a `modelStatus` with the model's stage
and retirement time. Azure's Models API exposes `lifecycleStatus`, and Bedrock's
`GetFoundationModel` returns `modelLifecycle` per region. For Anthropic and Vertex AI, check the
deprecations page.

## Keep reading

- [Gemini model deprecation: dates, replacements and a migration checklist](/blog/gemini-model-deprecation-migration-checklist)
  — the Gemini API and Vertex dates in full, and the request changes for Gemini 3.8 Flash.
- [How to catch LLM regressions before a model upgrade ships](/blog/llm-regression-testing-model-upgrade)
  — step 5 in full, with code and the six failures it caught.
- [How to test an LLM model migration before you ship it](/blog/test-llm-model-migration-before-you-ship)
  — freezing a golden suite and running both models paired.
- [What actually breaks when you switch LLMs](/blog/what-breaks-when-you-switch-llms) — why the
  worst regressions from a model swap read as correct.
