<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Leigh Efford</title>
    <description>The latest articles on DEV Community by Leigh Efford (@leighefford).</description>
    <link>https://dev.to/leighefford</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4189447%2Facbc5476-5fbd-4cfd-8ed5-7b8dec12eccb.png</url>
      <title>DEV Community: Leigh Efford</title>
      <link>https://dev.to/leighefford</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/leighefford"/>
    <language>en</language>
    <item>
      <title>Retiring AI models: a pre-flight checklist (first OpenAI batch goes 23 Oct)</title>
      <dc:creator>Leigh Efford</dc:creator>
      <pubDate>Fri, 16 Oct 2026 19:23:07 +0000</pubDate>
      <link>https://dev.to/leighefford/retiring-ai-models-a-pre-flight-checklist-first-openai-batch-goes-23-oct-5dc9</link>
      <guid>https://dev.to/leighefford/retiring-ai-models-a-pre-flight-checklist-first-openai-batch-goes-23-oct-5dc9</guid>
      <description>&lt;p&gt;If you have code calling OpenAI, Anthropic or Gemini on Vertex AI, several dates in the next three months will break some of it. Here's what's going, the gotchas we hit while checking our own code, and a two-minute way to see if you're affected.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's switching off
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Date&lt;/th&gt;
&lt;th&gt;What&lt;/th&gt;
&lt;th&gt;Provider's replacement&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;20 Oct 2026&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Gemini 2.5 Pro, Flash and Flash-Lite &lt;strong&gt;on Vertex AI only&lt;/strong&gt; (not deprecated on the Gemini API)&lt;/td&gt;
&lt;td&gt;See Google's Vertex AI model versions page&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;23 Oct 2026&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Older OpenAI snapshots only: &lt;code&gt;o1&lt;/code&gt;, &lt;code&gt;o3-mini&lt;/code&gt;, &lt;code&gt;o4-mini&lt;/code&gt;, &lt;code&gt;gpt-3.5-turbo&lt;/code&gt;, &lt;code&gt;gpt-4&lt;/code&gt;, &lt;code&gt;gpt-4-turbo&lt;/code&gt;, &lt;code&gt;gpt-4.1-nano&lt;/code&gt;, &lt;code&gt;gpt-4o-2024-05-13&lt;/code&gt; (plus &lt;code&gt;gpt-image-1&lt;/code&gt; and some fine-tunes; see OpenAI's deprecations page)&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;gpt-5.6-luna&lt;/code&gt; (for 4.1-nano), &lt;code&gt;gpt-5.6-sol&lt;/code&gt; (o1, o3-mini, gpt-4, gpt-4-turbo, gpt-4o-2024-05-13), &lt;code&gt;gpt-5.6-terra&lt;/code&gt; (gpt-3.5-turbo, o4-mini)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;30 Nov 2026&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;claude-sonnet-4-5-20250929&lt;/code&gt; (Anthropic's own platforms; Bedrock and Vertex set their own dates)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;claude-sonnet-5-5&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;6 Jan 2027&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Last day existing OpenAI customers can start new fine-tuning jobs&lt;/td&gt;
&lt;td&gt;n/a&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;14 Jan 2027&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;gpt-4o-2024-08-06&lt;/code&gt;, &lt;code&gt;gpt-4o-2024-11-20&lt;/code&gt;, &lt;code&gt;gpt-4o-mini-2024-07-18&lt;/code&gt;, &lt;code&gt;gpt-4.1-2025-04-14&lt;/code&gt;, &lt;code&gt;gpt-4.1-mini-2025-04-14&lt;/code&gt;, &lt;strong&gt;and fine-tunes built on them&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;&lt;code&gt;gpt-6-luna&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;On the shutdown date, requests to those IDs fail. In a queue or cron job, that can look like silence until somebody notices the backlog.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check your repo in two minutes
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rg &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="nt"&gt;--hidden&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; &lt;span class="s1"&gt;'!node_modules'&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; &lt;span class="s1"&gt;'!.git'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s1"&gt;'gpt-4'&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s1"&gt;'gpt-3\.5'&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s1"&gt;'o1'&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s1"&gt;'o3-mini'&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s1"&gt;'o4-mini'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s1"&gt;'claude-sonnet-4-5'&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s1"&gt;'gemini-2\.5'&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s1"&gt;'ft:gpt'&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Expect some noise from short patterns like &lt;code&gt;o1&lt;/code&gt;. Check config files, &lt;code&gt;.env.example&lt;/code&gt;, seed data, test fixtures and docs, not just code. Then look for the model being chosen at runtime (&lt;code&gt;OPENAI_MODEL&lt;/code&gt;, &lt;code&gt;MODEL_NAME&lt;/code&gt; and so on) and check the &lt;strong&gt;live&lt;/strong&gt; values in each environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Five gotchas
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Undated names are still on the list.&lt;/strong&gt; &lt;code&gt;gpt-4o&lt;/code&gt; with no date currently resolves to &lt;code&gt;gpt-4o-2024-08-06&lt;/code&gt;, which shuts down on 14 Jan. OpenAI can re-point it, but don't assume the undated name keeps you safe.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An empty &lt;code&gt;shutdown_date&lt;/code&gt; doesn't mean you're safe.&lt;/strong&gt; OpenAI says to watch the &lt;code&gt;shutdown_date&lt;/code&gt; field on &lt;code&gt;GET /v1/models&lt;/code&gt;, but it can be &lt;code&gt;null&lt;/code&gt;, so check the deprecations page as well.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A name-only swap can 400.&lt;/strong&gt; In our own API checks, &lt;code&gt;gpt-6-luna&lt;/code&gt; rejected &lt;code&gt;max_tokens&lt;/code&gt; with HTTP 400 (use &lt;code&gt;max_completion_tokens&lt;/code&gt;, or &lt;code&gt;max_output_tokens&lt;/code&gt; on the Responses API). Chat Completions calls with function tools also needed &lt;code&gt;reasoning_effort: "none"&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ship parameter changes and the model switch together.&lt;/strong&gt; In our tests the old models rejected &lt;code&gt;reasoning_effort&lt;/code&gt; and the new one needed it, so a "settings first, model later" rollout breaks one way or the other.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fine-tunes have no direct successor.&lt;/strong&gt; They shut down with their base model. If you rely on one, decide what replaces it before 6 Jan, when new fine-tuning jobs stop.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once you've found the calls, run 10 to 20 real prompts against the old and new models while the old one still works, and diff the outputs. JSON field names and classifier buckets drift without any error.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Disclosure:&lt;/strong&gt; I'm at Burnt &amp;amp; Toast, and we built &lt;strong&gt;Last Orders&lt;/strong&gt;, a free open-source CLI that does the &lt;code&gt;rg&lt;/code&gt; step properly (aliases, env vars, fine-tunes) and flags the calls whose parameters will break. Install it with &lt;code&gt;pipx install lastorders&lt;/code&gt;, then run &lt;code&gt;lastorders scan .&lt;/code&gt;. There's also a GitHub Action (&lt;code&gt;burntandtoast/lastorders@v0.4.5&lt;/code&gt;). Source: &lt;a href="https://github.com/burntandtoast/lastorders" rel="noopener noreferrer"&gt;github.com/burntandtoast/lastorders&lt;/a&gt;. The free scan tells you which calls will break. If you want them rewritten for you, there's a paid automatic fix at £179 per repo including VAT, one-off.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>openai</category>
      <category>ai</category>
      <category>devops</category>
      <category>python</category>
    </item>
  </channel>
</rss>
