Even OpenAI’s own examples have this problem.
22 calls in 20 files
We ran Arbor on the example code in OpenAI’s own Python library on 20 Oct 2026. It found 22 calls, in 20 files, to models that are shut down or have a shutdown date. See the full run
OpenAI shuts down gpt-4o and gpt-4.1 on 14 Jan 2027 · · Sources
AI models get shut down on dates their makers set. Arbor finds the ones your Python code still calls, and tells you what has to change.
npx @anandb71/arbor-cli@3.1.1 retirements .
Runs on your own machine. Your code never leaves it. Free and open source.
Scroll to move the date
This small app asks AI models for answers in five places. Each sun is one of them. The lower it sits, the less time it has.
gpt-4o14 Jan 2027–claude-sonnet-4-5-2025092930 Nov 2026–o4-mini23 Oct 2026already setclaude-3-5-sonnet-2024102228 Oct 2025already setos.environ["CHAT_MODEL"]unknownnot checked30 Nov 2026
claude-sonnet-4-5-20250929
3 of 5
now fail.
Nobody touched the code.
gpt-4o and gpt-4.1.14 Jan 2027
4 of 5 now fail.
The fifth is a question mark. Its model is set outside the code, where Arbor can’t read it, so Arbor says so instead of guessing.
gpt-4o → gpt-6-luna
Swap gpt-4o for the replacement OpenAI lists, gpt-6-luna, and send the same request. The new model takes different settings, so the request is turned down, for two separate reasons.
Unsupported parameter: 'max_tokens' is not supported with this model. Use 'max_completion_tokens' instead.
Unsupported value: 'temperature' does not support 0.2 with this model. Only the default (1) value is supported.
Real replies from OpenAI’s API, recorded on 18 Oct 2026.
It never decides for you.
One command reads your Python code, on your own machine, and lists every model it calls, the day each one shuts down, and what has to change.
npx @anandb71/arbor-cli@3.1.1 retirements .
22 calls in 20 files
We ran Arbor on the example code in OpenAI’s own Python library on 20 Oct 2026. It found 22 calls, in 20 files, to models that are shut down or have a shutdown date. See the full run
Add Arbor to your pull requests and tell it how many days’ warning you want.1 The check turns red once a shutdown is that close.
name: Model retirementson: [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: 90
gpt-4o call has failed this check since 16 Oct 2026: two days after OpenAI’s announcement.gpt-4o got 92 days..env, YAML, JSON or notebooks). When a call gets its model from somewhere Arbor can’t read, Arbor lists it as not checked and doesn’t count it as failing.Measured
On 18 example files from the OpenAI, Anthropic and older Gemini Python libraries, Arbor found all 70 places that call them or set them up.
A readiness review is a fixed-price sprint. One of our founders goes through your code with you, we write the fixes with your team before the date, and we list every call we find but can’t check.
$1,500 for up to 3 repos and $500 for each repo after that, agreed in writing and paid before work starts.
Emails about this only. No account needed. · Privacy
gpt-4o and gpt-4.1 calls before 14 Jan 2027.npx @anandb71/arbor-cli@3.1.1 retirements .