Readiness review
Request a readiness review.
A founder goes through your repos with you: every call we find on a retiring model, the date that applies to how you call it, the arguments that fail on the replacement, and every call we find but can’t check. Then we write the fix pull requests with you, and your team reviews and merges them before the date.
Fixed price: $1,500 for up to 3 repos and $500 for each repo after that, agreed in writing and paid before work starts. Asking costs nothing and commits you to nothing.
No repository access or payment details needed.
Model retirements · Dates as of 28 Oct 2026
gpt-4o and gpt-4.1 shut down on 14 January 2027.
OpenAI’s API reference lists gpt-4o, gpt-4o-mini, gpt-4.1 and gpt-4.1-mini as deprecated with that shutdown date, and its models API gives them the same date as their dated snapshots: OpenAI removes them from the API that day. It lists gpt-6-luna as the replacement, and that model doesn’t accept every argument they did.
OpenAI shutdown, 14 Jan 2027
UTC71days left
gpt-4oreplaced bygpt-6-lunagpt-4o-minireplaced bygpt-6-lunagpt-4.1replaced bygpt-6-lunagpt-4.1-minireplaced bygpt-6-luna
Also the snapshots gpt-4o-2024-08-06, gpt-4o-2024-11-20, gpt-4o-mini-2024-07-18, gpt-4.1-2025-04-14 and gpt-4.1-mini-2025-04-14. OpenAI announced the date on 14 Oct 2026. Its deprecations page lists only those snapshots; its API reference lists each alias as deprecated with this shutdown date (read 28 Oct 2026), and its models API returned the date for each alias on 18 Oct 2026.
OpenAI deprecations page OpenAI API reference (the aliases)Retirement dates near today.
Text, audio, image and embedding models, from the providers’ deprecation pages as of 28 Oct 2026. OpenAI and Anthropic give the day a model shuts down. Google gives the earliest day: a model can go then or later. Video models and managed agents have dates too; the check lists them.
OpenAI
Shut down 37 days agogpt-3.5-turbo-1106gpt-3.5-turbo-instructbabbage-002davinci-002
Replacement: gpt-5.6-terra
OpenAI deprecationsOpenAI
Shut down 34 days agogpt-5.4-cyber
Replacement: No single model: the page names “the most capable cyber model available to you”.
OpenAI deprecationsGoogle Cloud
Can be retired any day nowgemini-2.5-progemini-2.5-flashgemini-2.5-flash-lite
Replacement: Two or three are listed for each, gemini-3.8-flash among them, so a person picks one.
Gemini on Google Cloud (Vertex AI) only. The Gemini API gives these models no date.
Google Cloud model versionsOpenAI
Shut down 12 days agogpt-3.5-turbogpt-4gpt-4-turbogpt-4.1-nanogpt-4o-2024-05-13o1o1-proo3-minio4-mini
Replacement: gpt-5.6-terra, gpt-5.6-sol or gpt-5.6-luna, listed per model; o1-pro moves to gpt-5.6-sol with reasoning.mode: pro
Also their dated snapshots, and gpt-image-1 (listed: gpt-image-2.5-sunburst or gpt-image-2.5-flare). gpt-4-1106-preview, listed for the same day, already answered 404 on 18 Oct.
OpenAI deprecationsGemini API
In 13 days at the earliestgemini-3.1-flash-live-previewgemini-2.5-flash-native-audio-preview-12-2025gemini-2.5-flash-preview-ttsgemini-2.5-pro-preview-ttsgemini-3.1-flash-tts-preview
Replacement: gemini-3.8-live for the Live models; gemini-3.8-flash-tts or gemini-3.8-flash-lite-tts for text to speech
Gemini API deprecationsGoogle Cloud
In 15 days at the earliestgemini-3.6-flash
Replacement: gemini-3.8-flash
Google Cloud only. The Gemini API gives gemini-3.6-flash no date.
Google Cloud model versionsAnthropic
Shuts down in 26 daysclaude-sonnet-4-5-20250929
Replacement: claude-sonnet-5-5
The alias claude-sonnet-4-5 points to this snapshot. Anthropic’s pages don’t say whether the alias stops working the same day.
Anthropic model deprecationsOpenAI
Shuts down in 27 daysgpt-image-1-minigpt-image-1.5gpt-image-1.5-2025-12-16chatgpt-image-latest
Replacement: gpt-image-2.5-sunburst or gpt-image-2.5-flare
OpenAI deprecationsOpenAI
Shuts down in 37 daysgpt-5gpt-5-2025-08-07gpt-5-minigpt-5-mini-2025-08-07gpt-5-nanogpt-5-nano-2025-08-07gpt-5-progpt-5-pro-2025-10-06o3o3-2025-04-16o3-proo3-pro-2025-06-10
Replacement: gpt-5.6-sol, gpt-5.6-terra or gpt-5.6-luna, listed per model; the pro models move to gpt-5.6-sol with reasoning.mode: pro
OpenAI’s page has listed the bare IDs beside their snapshots since late October. Arbor’s check lists them from v3.1.1; v3.1.0 lists only the snapshots.
OpenAI deprecationsGoogle Cloud
In 39 days at the earliestOpenAI
Shuts down in 63 daystts-1tts-1-hdgpt-4o-mini-ttsgpt-4o-mini-tts-2025-03-20gpt-4o-mini-tts-2025-12-15
Replacement: gpt-realtime-2.1-mini
OpenAI deprecationsOpenAI
Shuts down in 71 daysgpt-4ogpt-4o-minigpt-4.1gpt-4.1-mini
Replacement: gpt-6-luna
And their dated snapshots: the shutdown at the top of this page.
OpenAI deprecationsOpenAI
Shuts down in 77 daysgpt-realtimegpt-realtime-2025-08-28gpt-realtime-minigpt-realtime-mini-2025-12-15gpt-4o-realtimegpt-4o-mini-realtimegpt-audiogpt-audio-2025-08-28gpt-audio-minigpt-audio-mini-2025-12-15gpt-4o-audiogpt-4o-mini-audiogpt-4o-mini-transcribe-2025-03-20
Replacement: gpt-realtime-2.1, gpt-realtime-2.1-mini or gpt-audio-1.5, listed per model; gpt-4o-mini-transcribe-2025-12-15 for the transcription snapshot
gpt-4o-mini-transcribe-2025-12-15, listed for the transcription snapshot, shuts down itself on 26 Feb 2027.
OpenAI deprecationsGoogle Cloud
In 85 days at the earliestgemini-3.7-flash
Replacement: gemini-3.8-flash
Google Cloud only. On the Gemini API, requests to gemini-3.7-flash already go to gemini-3.8-flash.
Google Cloud model versions
4 more dates, to 1 Apr 2027
OpenAI
Shuts down in 114 dayswhisper-1gpt-4o-transcribegpt-4o-mini-transcribegpt-4o-mini-transcribe-2025-12-15gpt-4o-transcribe-diarize
Replacement: gpt-live-transcribe or gpt-transcribe
OpenAI deprecationsGemini API and Google Cloud
In 131 days at the earliestgemini-2.5-flash-image
Replacement: gemini-3.1-flash-lite-image
Google Cloud gives the same date as a date it retires no earlier than.
Gemini API deprecationsGoogle Cloud
In 148 days at the earliesttext-embedding-005text-embedding-004text-multilingual-embedding-002multimodalembedding@001
Replacement: None listed
New embeddings mean re-embedding what you stored.
Google Cloud model versionsOpenAI
Shuts down in 148 daysgpt-5.1gpt-5.1-2025-11-13gpt-5.3-codexgpt-5.4-nanogpt-5.4-nano-2026-03-17
Replacement: gpt-6-sol for gpt-5.1, its snapshot and gpt-5.3-codex; gpt-6-luna for gpt-5.4-nano and its snapshot
OpenAI deprecations
Changing the model name isn’t enough.
gpt-6-luna runs at medium reasoning effort unless a request sets one, so it can reason; gpt-4o and gpt-4.1 answered without a reasoning step. Some arguments that worked on them fail on gpt-6-luna. These are the results of Chat Completions calls to gpt-6-luna on 18 Oct 2026.
| Argument | On gpt-6-luna | What to change |
|---|---|---|
max_tokens | 400, with or without reasoning_effort: "none". max_completion_tokens works. | Rename it to max_completion_tokens with the same value. If the model reasons, that limit covers its reasoning tokens too, so a small one can run out before any visible text. |
temperature | 0.2 without reasoning_effort: 400, “Only the default (1) value is supported.” At "none" it works. | The reasoning choice below. |
top_p, logprobs, top_logprobs | Work at "none". They weren’t sent without it; OpenAI’s GPT-6 guide says to remove them when the effort isn’t none. | The reasoning choice below. |
tools, functions | Function tools: 400 without reasoning_effort, and they work at "none". The older functions worked at "none" (the call didn’t set function_call); they weren’t sent without it. | The reasoning choice below. Removing them stops the app’s tool calls. |
stop, logit_bias | 400 at reasoning_effort: "none". They weren’t sent without it. | Not supported. Rework the call by hand. |
Also on gpt-6-luna at "none": prediction returned 400, and presence_penalty and frequency_penalty returned a server error on all 8 attempts, so treat them as unsupported. n and seed worked.
The reasoning choice belongs to each repository.
Arbor reports both options and never picks one for you; the max_tokens rename goes in with the option a repository picks. Per token, gpt-6-luna costs less than gpt-4o, gpt-4o-mini, gpt-4.1 and gpt-4.1-mini. OpenAI describes it as its “most efficient model for focused, high-volume tasks”, so answer quality can change either way.
Scope: Chat Completions calls to gpt-6-luna on 18 Oct 2026. The Responses API wasn’t called, and other models can differ.
Check your code free.
arbor retirements lists the Python calls that name a retired or retiring model through the openai, anthropic or Google SDKs, with the listed replacement, the arguments that change with it and the choices to make first. No account or API key.
npx @anandb71/arbor-cli@3.1.1 retirements .The command pins 3.1.1, which bundles the dates on this page, so npx doesn’t run an older copy installed earlier. It runs on npm 12 with no flags. Or, with Arbor 3.1.1 or later installed: arbor retirements .
$ arbor retirements .
Model retirements in . (1 Python file checked)
1 call uses a model Anthropic shut down on 28 Oct 2025
app/chat.py:33 claude-3-5-sonnet-20241022 → claude-sonnet-5-5
decide: think only between tools (add thinking={"type": "between_tools"}) or let the model think (no change)
...
3 calls use models OpenAI shuts down on 14 Jan 2027 (88 days)
app/chat.py:12 gpt-4o (MODEL, line 8) → gpt-6-luna
also change: max_tokens → max_completion_tokens
decide: keep reasoning off (add reasoning_effort="none"; keep temperature) or let the model reason (remove temperature)
app/chat.py:21 gpt-4o-mini (line 22) → gpt-6-luna fallback of an environment or config lookup: confirm the deployed value
decide: keep reasoning off (add reasoning_effort="none"; check stop) or let the model reason (check stop)
check: stop and logit_bias are not supported on gpt-6-luna (400).
app/chat.py:29 gpt-4.1 → gpt-6-luna
decide: keep reasoning off (add reasoning_effort="none"; keep tools) or let the model reason (remove tools)
...
Not checked: 1 call takes the model from somewhere Arbor cannot read (an environment variable, a function argument, another module); arbor usages lists it.
Not listed: 1 call reaches these models through Azure, another host in base_url or another cloud, where the provider's dates may not apply. Add --include-routed to list it.
Summary: 4 calls in 1 file use retired or retiring models: 1 already retired, 3 retiring (next: 14 Jan 2027, 88 days).
3 can move once this repo makes the choice shown under decide; 1 needs a manual check.
Failing (exit 1): 1 call uses a model that is already retired.In CI
name: Model retirements
on: [pull_request]
jobs:
retirements:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: Anandb71/arbor@v3.1.1
with:
mode: retirements
# retirements-fail-on: retired # or a number of days, e.g. 90The job summary lists every call the check finds, and affected lines get warnings, up to the 10 GitHub shows per step. By default the step only warns, even about retired models: set retirements-fail-on to retired or to a number of days to make it fail. It always fails if the check can’t run.
- Languages
- Python today. TypeScript and JavaScript are coming.
- Calls
- Direct SDK calls:
openai,anthropic,google-genaiandgoogle-generativeai. Wrappers such as LangChain, LlamaIndex and LiteLLM are coming. - Routing
- Calls through Azure OpenAI, Bedrock, OpenRouter or a proxy in
base_urlare counted apart: the providers’ dates may not apply there. - Not read
- Model IDs in .env, YAML, JSON or notebooks. A model passed in from an environment variable or another module is counted as not checked.
- Data
- v3.1.1 bundles 308 entries (297 model IDs) from the providers’ deprecation pages, changelogs, API reference and models API, as of 28 Oct 2026. Update Arbor for newer dates.
- Privacy
- npx downloads the package from npm and, on first run, the binary from Arbor’s GitHub releases, checked against the release’s SHA256SUMS. After that the check runs on your machine with no network requests: no code leaves it, and there is no telemetry.
Want Arbor to open the fix PRs?
Arbor is building a beta that opens the pull request for you: the listed replacement, the argument changes that go with it, and the choices left for your repository to make. A person reviews and merges it. Leave your email and we’ll write when the beta opens for your repos.
No repository access or payment details needed. Joining doesn’t create an account.