Three companies, one 72-hour window Today, July 21, 2026, Anthropic retires claude-mythos-preview. Source: Anthropic, "Model deprecations". Anyone still calling that name is migrated to claude-mythos-5 if their code was already updated to expect it; if not, the request fails. In two days, July 23, 2026, OpenAI retires five model families at once: gpt-5-chat-latest, gpt-5-codex, gpt-5.1-chat-latest, the gpt-5.1-codex variants, and the o3-deep-research family, plus two lingering 2025 previews, computer-use-preview-2025-03-11 and gpt-4o-mini-search-preview-2025-03-11. Source: OpenAI, "Deprecations". Traffic on those names shifts to gpt-5.5 or gpt-5.4-mini. The day after that, July 24, 2026, DeepSeek retires deepseek-chat and deepseek-reasoner, the two names that have anchored a large share of the "cheap frontier alternative" traffic on this blog since DeepSeek V4 shipped in May. Source: DeepSeek API, Change Log. Since April 24, both names have quietly resolved to DeepSeek-V4-Flash behind the scenes, deepseek-chat in non-thinking mode, deepseek-reasoner in thinking mode, a three-month grace window most teams never noticed because nothing broke. On the 24th, that alias disappears. Only deepseek-v4-flash and deepseek-v4-pro answer after that. None of these three companies coordinated with each other. There's no shared industry calendar, no joint migration window. It's just what the current pace of model releases looks like when it happens to land on the same three days. This isn't a one-off. It's the fourth time this year for Anthropic alone The 72 hours starting today: every Claude, GPT, and DeepSeek model-name retirement, June through October 2026, with three landing in the same week Pull Anthropic's own deprecation dates together and the pattern is hard to miss. Claude 3.7 Sonnet and Claude 3.5 Haiku both retired February 19, 2026. Claude 3 Haiku retired April 20. Claude Sonnet 4 and Claude Opus 4 retired June 15. Claude Mythos Preview retires today. Claude Opus 4.1 is already deprecated and retires August 5. Source: Anthropic, "Model deprecations". That's six model names off the API on four separate dates, from one vendor, in seven months. Layer OpenAI and DeepSeek's dates on top and the next four months alone carry eight scheduled retirements across three vendors: this week's three, then Claude Opus 4.1 on August 5, the Assistants API removed entirely on August 26, the Sora 2 video model retiring September 24, and a second GPT-5 snapshot wave on October 23. Source: OpenAI, "Deprecations". Anthropic's own policy commits to "at least 60 days' notice before model retirement for publicly released models." Source: Anthropic, "Model deprecations". That sounds like real slack until you count how often the notice period itself starts: four times in 2026 so far, for Anthropic alone. A 60-day window isn't much room when a new one opens roughly every seven weeks. What's actually retiring this week | Retiring | Replaces to | Effective | Provider | |---|---|---|---| | claude-mythos-preview | claude-mythos-5 | Jul 21, 2026 | Anthropic | | gpt-5-chat-latest, gpt-5-codex | gpt-5.5 | Jul 23, 2026 | OpenAI | | gpt-5.1-chat-latest, gpt-5.1-codex* | gpt-5.5 | Jul 23, 2026 | OpenAI | | o3-deep-research family | gpt-5.5-pro | Jul 23, 2026 | OpenAI | | computer-use-preview-2025-03-11 | gpt-5.4-mini | Jul 23, 2026 | OpenAI | | gpt-4o-mini-search-preview-2025-03-11 | gpt-5.4-mini | Jul 23, 2026 | OpenAI | | deepseek-chat | deepseek-v4-flash (or -pro) | Jul 24, 2026 | DeepSeek | | deepseek-reasoner | deepseek-v4-flash (or -pro) | Jul 24, 2026 | DeepSeek | Source: Anthropic, "Model deprecations"; Source: OpenAI, "Deprecations"; Source: DeepSeek API, Change Log. Worth flagging: none of these are downgrades. The replacement tier is cheaper than what it's replacing, not more expensive. deepseek-v4-flash runs $0.14 per million input tokens on a cache miss and $0.28 output, with cache hits down at $0.0028; deepseek-v4-pro runs $0.435 input / $0.87 output for the higher-capability tier, both on a 1M-token context window. Source: DeepSeek API, Pricing. The destination is fine. The problem is that the address changed and not every caller got the memo. Why a literal model string is the actual bug None of this is hard to fix once you know it's broken. The failure mode is that most teams don't know until it's broken, because a model-name string doesn't live in one place. It's in application code, obviously, but it's also in a CI pipeline's eval harness, a Terraform variable nobody has touched since the initial provisioning PR, a serverless function that hasn't been redeployed since March, a notebook a data scientist reruns quarterly, and a batch config that only runs on the first of the month. The evidence this is a real, common failure isn't theoretical, it's the volume of independent migration guides that appeared in the run-up to this week: WaveSpeed, Enterprise DNA, and multiple community "what breaks and how to fix it" checklists for the DeepSeek migration alone, on top of DeepSeek's own change log. Source: DeepSeek V4 API Migration Guide, dev.to. That volume of independently-written guidance is what a deadline with real blast radius looks like. A model string is not a fact about your product. It's an operational dependency with an expiration date that some other company controls and can move on 60 days' notice. Treating it like a constant is the bug. The fix that doesn't care what date it is The pattern this blog keeps returning to, routing by request instead of hardcoding a model per session or per call, has a side effect that's easy to undersell: a router that resolves model="auto", or a logical alias you define, against live provider state can absorb a deprecation the moment it's announced, in one place, instead of at every call site that still has the old string baked in. import openai client = openai.OpenAI( base_url="https://api.getnadir.com/v1", api_key="YOUR_NADIR_KEY", ) response = client.chat.completions.create( model="auto", # Nadir resolves this against what's live today; deepseek-chat retiring on the 24th is Nadir's routing config to update, not a 404 in your code messages=[{"role": "user", "content": task_prompt}], ) The response metadata, model and nadir_metadata.cost.total_cost_usd, still report exactly which underlying model answered each call, so nothing about observability gets worse. You just stop being the one who has to notice a changelog entry and grep your own codebase for a string before it 404s in production. What to actually do before Friday Grep now, don't wait for the error. Search application code, CI configs, and infrastructure-as-code for the literal strings above: deepseek-chat, deepseek-reasoner, gpt-5-chat-latest, gpt-5-codex, gpt-5.1-chat-latest, o3-deep-research, computer-use-preview-2025-03-11, claude-mythos-preview. Check baked container images too, a string in a six-month-old Docker layer is invisible to a source grep. Check eval harnesses and notebooks separately. They're the least-reviewed code in most repos and the most likely place a deprecated model string survives unnoticed for months after the "real" migration is done. Test the replacement before you flip it, not after. A model rename isn't always quality-neutral even when a vendor implies it is. The same qualification discipline that applies to a brand-new model swap applies here: replay real prompts, score blind against the old model's output, segment by difficulty before trusting one aggregate number. Put the next three dates on a calendar now. August 5 (Claude Opus 4.1), August 26 (OpenAI's Assistants API removed), September 24 (Sora 2 retires). None of them are surprises today. They will be again, in a few weeks, for whichever team didn't write them down. Stop treating the model name as a constant. Route through a logical alias once, and every future deprecation on this list becomes a line in a routing config instead of a grep-and-pray exercise across a codebase nobody fully remembers. Three companies picked the same 72 hours to retire model names a good chunk of the industry hardcoded a year ago. The pace isn't slowing down, Meta, DeepSeek, and Anthropic have each shipped a new frontier-adjacent model in the last few months alone, and every one of them starts its own deprecation clock the day it ships. Start free and let the router absorb the next one, or read the complete guide to cutting LLM API costs for what else is on the table once the model string stops being your problem.