OpenAI shuts down gpt-4o, gpt-4o-mini and gpt-4.1 (and their dated snapshots) on 14 January 2027. tts-1 and gpt-4o-mini-tts go on 6 January, the old realtime models on 20 January, and whisper-1 and gpt-4o-transcribe on 26 February. Anthropic retires claude-sonnet-4-5-20250929 on 30 November 2026. After the date, calls to a retired model fail.

Searching for "gpt-4o" finds the obvious calls. These are the ones it misses:

  1. Gateway and cloud spellings: openai/gpt-4o (OpenRouter), us.anthropic.claude-sonnet-4-5-20250929-v1:0 (Bedrock), claude-sonnet-4-5@20250929 (Vertex), and fine-tunes like ft:gpt-4o-mini-2024-07-18:org::abc123, which die with their base model.
  2. Dated snapshots: grep for the exact quoted string "gpt-4o" and you miss "gpt-4o-2024-08-06"; grep without quotes and you also hit every gpt-4o-mini and unrelated mention, with no dates attached.
  3. n8n defaults that never appear in the export: n8n writes a node parameter only when it differs from the default. An OpenAI chat-model node left on its default shows no model at all in the workflow JSON. The OpenAI node's audio transcribe operation hardcodes whisper-1 in n8n's own code, so you can't see it or change it in the node at all.
  4. Config and prompts: .env files, YAML, notebooks, and model names inside prompt templates.

A scanner that handles those cases

I put the matching rules and a dated registry (OpenAI, Anthropic, Google, with a source link for every entry) into a small dependency-free Node script:

git clone https://github.com/Donrulezz/ai-model-retirement-scanner node ai-model-retirement-scanner/cli.js path/to/project 
where model shutdown move to example/summarize.py (line 8) gpt-4o-mini 2027-01-14 (in 78 days) gpt-6-luna example/support-workflow.json (Support replies > Reply model) gpt-4.1 2027-01-14 (in 78 days) gpt-6-luna example/support-workflow.json (Support replies > Transcribe call) whisper-1 2027-02-26 (in 121 days) gpt-transcribe or gpt-live-transcribe 3 finding(s) in 2 files, 2 due within 90 days (registry updated 2026-10-28). 

For n8n, export everything first (n8n export:workflow --all --output=workflows.json) and scan the file.

Block it in CI

- run: git clone --depth 1 https://github.com/Donrulezz/ai-model-retirement-scanner /tmp/amrs - run: node /tmp/amrs/cli.js . --fail-within 60 

The job fails when anything in the repo shuts down within 60 days, or has already shut down.

Before you switch

The replacements behave differently. For example, gpt-6-luna is a reasoning model: on Chat Completions, tool calls work only with reasoning_effort: none, and temperature / top_p must be removed unless the effort is none. Test your own prompts on the new model before the date, not on it.

Scanner (MIT): https://github.com/Donrulezz/ai-model-retirement-scanner. Issues welcome if a date moves or a model is missing.