
OpenAI has retired more models in 2026 than in all prior years combined. GPT‑4.5 exits ChatGPT on June 27. o3 follows on August 26. GPT‑4o, GPT‑4.1, and o4‑mini were already pulled from ChatGPT in February. The model lifecycle that used to run 18 months now runs six. If you are still hardcoding model names in your codebase, you are one retirement announcement away from a production incident.
The 2026 Retirement Calendar
Here is what has died and what is still on the chopping block:
| Model | ChatGPT Retired | API Retired | Replacement |
|---|---|---|---|
| GPT-4o | February 13, 2026 | February 16, 2026 | GPT-5.3 Instant |
| GPT-4.1 / mini | February 13, 2026 | No API change | GPT-5.3 Instant |
| o4-mini | February 13, 2026 | No API change | GPT-5.4 Thinking |
| GPT-4.5 | June 27, 2026 | July 14, 2025 | GPT-5 |
| o3 | August 26, 2026 | TBD | o4 |
Notice the two right-hand columns. ChatGPT retirements and API deprecations are on separate schedules, and most of the breathless “migrate now” coverage conflates them. The GPT-4.5 API was already dead in July 2025. The June 27 date only affects ChatGPT users who still explicitly pick GPT-4.5 from the model selector and Custom GPTs built on that model. If you are an API developer and your calls to gpt-4.5 are succeeding today, something else is happening.
For API deprecation dates — the ones that actually break your code — bookmark OpenAI’s official deprecations page and check it monthly. That is the canonical source. Blog posts and community threads will always contain some level of date drift.
The One Code Change That Fixes This Permanently
OpenAI’s model churn is not going to slow down. GPT-4 ran from March 2023 to February 2026 — roughly three years. GPT-4.5 launched in February 2025, had its API turned off in July 2025, and exits ChatGPT this month. That is an 11-month arc from launch to full sunset. Treating model names as constants in your codebase is now an active liability.
The fix is a one-liner that you do once and never think about again:
import os
# Instead of this:
model = "gpt-4.5"
# Do this:
MODEL = os.getenv("OPENAI_MODEL", "gpt-5.3-instant")
response = client.chat.completions.create(model=MODEL, messages=[...])
If you prefer a config file over environment variables, the principle is identical:
{
"openai_model": "gpt-5.3-instant",
"fallback_model": "gpt-5.3-codex"
}
When the next retirement lands, you update a config value and redeploy nothing. The rest of your code does not care what the model string is.
Which Model to Migrate To
The GPT-5 family is large enough now that the choice matters. Here is a direct answer by use case:
| Use Case | Recommended | Why |
|---|---|---|
| General chat / creative writing | GPT-5.3 Instant | Fast, cost-efficient, strong EQ |
| Coding and agentic tasks | GPT-5.3-Codex | SWE-Bench Pro 56.8%, OSWorld 64.7% |
| Complex reasoning and long context | GPT-5.4 | ARC-AGI 93.7%, 1M token context |
| Replacing o3 in reasoning pipelines | o4 | Faster and cheaper on same benchmarks |
| Frontier tasks, highest capability | GPT-5.5 | Expert-SWE 73.1%, best available |
The default for most teams should be GPT-5.3 Instant unless you have a specific reason to go heavier. It is what replaced GPT-4o and GPT-4.1 in ChatGPT for a reason — it handles the vast majority of general tasks well at a fraction of the cost of GPT-5.5.
This Is the New Normal
Five ChatGPT models have been retired in 2026 and we are only halfway through the year. OpenAI is moving fast by design. GPT-4o was pulled when only 0.1% of users still actively chose it daily — the rest had already voted with their sessions that the newer models were better. Retirements are lagging indicators, not sudden shocks.
The teams that keep getting burned are the ones that treat model names as infrastructure constants: baked into code, deployed once, never revisited. The teams that adapt without incident treat model names as runtime configuration — one value, one place, updated independently of code.
When the next retirement drops, check OpenAI’s official retirement announcements and cross-reference against the API deprecations list. The headline date and the date your code actually breaks are almost always different. Know which one matters for your stack.













