Back to all posts

cat posts/foundry-retires-haiku-4-5-and-o-series-your-10-day-plan.md --category "AI & Cloud Infrastructure" --views 41

Foundry retires Haiku 4.5 and the o-series: your 10-day plan

Between 15 and 30 November 2026 Microsoft Foundry retires codex-mini, Claude Haiku 4.5, seven o-series models, Llama 4 Maverick and Claude Opus and Sonnet 4.5, and the named o-series replacement rejects tool calls on Chat Completions unless reasoning is switched off. Here is the inventory loop, the cost math from Azure's own price list showing the auto-upgrade roughly doubles an o3 or o4-mini bill, the Haiku 5.5 parameter changes, and a ten-day plan with the EU Data Zone consequences.

  • --author By Falak Mahmood
  • --date November 9, 2026
  • --read 16 min read
  • --views 41 views

Microsoft Foundry retires thirteen models between 15 and 30 November 2026. On Sunday 15 November codex-mini and both hosted versions of Claude Haiku 4.5 return 410 Gone. On 17 November two gpt-chat-latest previews go. On 19 November o1, o1-pro, o3, o3-pro, o3-deep-research, o3-mini and o4-mini all stop, and Llama 4 Maverick with them. Claude Opus 4.5 follows on 24 November and Claude Sonnet 4.5 on 30 November. The retirement schedule has listed these dates since at least September, and the 60-day notices go to subscription owners, which is exactly the inbox nobody on the engineering team reads. Two things make this wave different from the gpt-4o retirements most teams have already lived through. The named replacement for seven o-series models is a GPT-5.6 model that rejects the request shape most o-series applications still send. And for Haiku 4.5 Microsoft names no replacement at all, because Claude is sold through the Marketplace and Anthropic's lifecycle applies.

What retires, and what Microsoft points you to

DateModel (version)Microsoft's listed replacementAuto-upgrade on Standard?
15 Novcodex-mini (2025-05-16)None listedNo target, so no
15 Novclaude-haiku-4-5, v1 and v2None listedNo. Marketplace model
17 Novgpt-chat-latest (2026-05-05, 2026-06-24)Preview: force-upgraded or terminatedYes, preview rules
19 Novo1, o1-pro, o3, o3-pro, o3-deep-researchgpt-5.6-solYes, unless NoAutoUpgrade
19 Novo3-mini, o4-minigpt-5.6-terraYes, unless NoAutoUpgrade
19 NovLlama-4-Maverick-17B-128E-Instruct-FP8None listedNo
24 Novclaude-opus-4-5None listedNo. Marketplace model
30 Novclaude-sonnet-4-5claude-sonnet-5-5No. Marketplace model

Two neighbours on the same page deserve a calendar entry: Cohere-embed-v3 is deprecated on 15 November, and whisper, tts and tts-hd retire on 15 December. Fine-tuned o4-mini runs on its own clock, with deployments supported until November 2027.

What happens on the day, by deployment type

The default behaviour differs by SKU.

  • Global Standard, Data Zone Standard and regional Standard. The deployment is upgraded in place to the listed replacement on a rolling, region-by-region schedule. The behaviour is governed by versionUpgradeOption. The default, which shows as null in the API, is OnceCurrentVersionExpired, meaning upgrade at retirement. NoAutoUpgrade means the deployment simply stops answering. Priority Processing follows the Standard path.
  • Provisioned, in all three flavours. Nothing is upgraded for you. You either run an in-place migration, where Azure moves traffic to the new model over a 20 to 30 minute window with no downtime, or you stand up a second deployment and shift traffic yourself. PTU capacity is fungible across models, so quota carries; capacity in the region is the thing to check first.
  • Global Batch. Side by side only. Deploy the new model, resubmit jobs, delete the old deployment.
  • Marketplace models, which is every Claude deployment. Microsoft's auto-upgrade machinery is documented for Standard deployment types of models sold by Azure. For Haiku 4.5 the schedule lists no replacement, so there is nothing to upgrade to; plan for a hard stop and move the traffic yourself.

The dates are not extendable. The FAQ on the lifecycle page says so in one word. If you need to confirm the state of a specific model programmatically, the Models API exposes it per region, with one trap: the API's "Deprecated" means retired and no longer serving, while the stage the portal calls Deprecated appears in the API as "Deprecating".

# Lifecycle status and retirement date for every model in Sweden Central
az rest --method get \
  --url "https://management.azure.com/subscriptions/<sub>/providers/Microsoft.CognitiveServices/locations/swedencentral/models?api-version=2024-10-01" \
  --query "value[?contains(' o1 o1-pro o3 o3-pro o3-mini o4-mini codex-mini o3-deep-research ', join('', [' ', model.name, ' ']))].{model:model.name, version:model.version, status:model.lifecycleStatus, retires:model.deprecation.inference}" \
  -o table

The trap in the auto-upgrade: tools on Chat Completions

o1, o3, o3-mini and o4-mini all support the Chat Completions API with function tools. A very large share of the o-series code in production was written that way, because when o3-mini shipped in January 2025 the Responses API had not yet reached Azure. GPT-5.6 supports Chat Completions and supports tools, but not both at once. Microsoft's reasoning-models page is blunt about it: a Chat Completions request to gpt-5.6-sol that includes tools fails with "Function tools with reasoning_effort are not supported for gpt-5.6-sol in /v1/chat/completions. To use function tools, use /v1/responses or set reasoning_effort to 'none'." The request fails even when your code never sets reasoning_effort, because the model defaults to medium. The page then says the quiet part: "An application that calls tools through Chat Completions can start failing after you upgrade its deployment from an earlier reasoning model."

So on 19 November, a Standard o4-mini deployment with default upgrade settings becomes a gpt-5.6-terra deployment, and every tool-calling request it receives returns 400 until someone changes code. Your options, in order of preference:

  • Move the tool-calling paths to the Responses API before the 19th. That is Microsoft's recommendation and it unlocks the full effort range plus reasoning items you can carry between turns. The migration guide and its scanner are public; the mechanical changes are messages to input, max_completion_tokens to max_output_tokens, the flatter tool definition, function_call_output items instead of role tool messages, and output_text instead of choices[0].message.content.
  • If you cannot move in time, set reasoning_effort to none on every Chat Completions request that carries tools. The model then calls tools without reasoning, which throws away the planning quality you paid for o3 to get. Treat it as a bridge, not a destination.
  • Set NoAutoUpgrade and accept a hard stop. Only sensible for a deployment you intend to delete anyway. A dead endpoint is at least an honest one; a silently rewired endpoint returning 400s on half its traffic is worse.

Two further behaviour changes ride along. GPT-5.6 defaults reasoning.context to all_turns in the Responses API, which renders earlier turns' reasoning into later requests and, in Microsoft's words, means you should "expect higher token consumption on multi-turn conversations even when your code doesn't change"; set current_turn to keep the old behaviour. And the context budget jumps from 200K input on the o-series to 922K, with a separate long-context price tier above a threshold Microsoft publishes on the pricing page; an o-series application cannot have been sending more than 200K tokens, so the tier only bites if you start to.

The cost math, from Azure's own price list

All figures below are Global Standard, short context, US dollars per million tokens, read from the Azure Retail Prices API for the Foundry Models service on 9 November 2026. Data Zone rates are 10 percent higher across the board. Sol's $4 and $20 is the promotional rate the Foundry launch post says runs until 30 November 2026; the list rate is $5 and $30, so a December invoice for a Sol upgrade will not match a November estimate.

ModelInputCached inputOutputRole
o1$15.00$7.50$60.00Retiring
o1-pro$150.00n/a$600.00Retiring
o3$2.00$0.50$8.00Retiring
o3-pro$20.00n/a$80.00Retiring
o3-mini, o4-mini$1.10$0.55 / $0.275$4.40Retiring
codex-mini$1.50$0.375$6.00Retiring
gpt-5.6-sol$4.00 ($5.00 from 1 Dec)$0.40$20.00 ($30.00 from 1 Dec)Named replacement
gpt-5.6-terra$2.00$0.20$12.00Named replacement
gpt-5.6-luna$0.20$0.02$1.20Your choice
gpt-6.1-sol$2.00$0.10$10.00Your choice
gpt-6.1-terra$1.00$0.05$5.00Your choice
gpt-6-luna$0.10$0.01$0.50Your choice
gpt-5.1-codex-mini$0.25$0.025$2.00codex-mini successor

Read the Role column carefully. The retirement schedule itself says the listed replacement "doesn't limit your manual migration choices", and the lifecycle page adds that the replacement is chosen 90 to 120 days out and may no longer be the best option by the time you move. Both statements apply here. Microsoft selected gpt-5.6-sol and gpt-5.6-terra as the o-series targets in the summer; GPT-6.1 Sol and Terra arrived in September and October at half the price of their 5.6 namesakes or less, as we covered in GPT-6.1 Terra in Foundry.

Put a representative month through it. Take an o4-mini classification and extraction service at 2,000M input and 200M output tokens, and an o3 analysis service at 500M input and 100M output.

Workload and targetInputOutputMonthlyVersus today
o4-mini today$2,200$880$3,080baseline
auto-upgraded to gpt-5.6-terra$4,000$2,400$6,400+108%
moved to gpt-6.1-terra$2,000$1,000$3,000-3%
moved to gpt-5.6-luna$400$240$640-79%
o3 today$1,000$800$1,800baseline
auto-upgraded to gpt-5.6-sol, November$2,000$2,000$4,000+122%
same, at the December list rate$2,500$3,000$5,500+206%
moved to gpt-6.1-sol$1,000$1,000$2,000+11%
o1 today, same volume$7,500$6,000$13,500baseline
auto-upgraded to gpt-5.6-sol, December$2,500$3,000$5,500-59%

The pattern is simple. If you are still on o1, o1-pro or o3-pro, the upgrade saves money whatever you do. If you are on o3, o3-mini or o4-mini, which is where most of the volume sits, the named replacement roughly doubles the bill, and letting the auto-upgrade happen is the most expensive of the available outcomes as well as the one most likely to break tool calls. Output tokens include reasoning tokens on every model in this table, so a target with a higher output price and a chattier reasoning default compounds; measure reasoning_tokens on your own prompts before you trust any row above. For routing between the three GPT-5.6 tiers, see our Sol, Terra and Luna playbook.

codex-mini has no listed successor; it was a fine-tune of o4-mini for Codex CLI, and gpt-5.1-codex-mini at a sixth of the input price is the natural landing spot, Responses API only as before. o3-deep-research at $10 and $40 was a research agent rather than a chat model, so Sol is a price cut but not a feature-for-feature swap; test your tool loop before assuming parity.

Claude Haiku 4.5: different rules, same deadline

Claude in Foundry comes in two hosted versions. Version 1 runs on Anthropic's infrastructure outside Azure; version 2 runs on Azure end to end. Both versions of Haiku 4.5 retire on 15 November, six days from today, and both bill through the Marketplace as Claude Consumption Units, which means Microsoft's Standard-deployment upgrade machinery was never in play. Anthropic's own deprecation page still shows claude-haiku-4-5 as Active with a retirement "not sooner than October 15, 2026"; that is a floor, not a date, and Foundry's schedule is the one your deployment obeys.

The obvious successor is Claude Haiku 5.5, generally available in both hosted versions since 7 October, and the move is one of the few in this wave that cuts the bill. Anthropic's price list puts Haiku 4.5 at $1 and $5, Haiku 5.5 at $0.10 and $0.50 for prompts up to 100,000 tokens, and $0.50 and $2.50 above that line. Every request is priced on its own prompt length, cache reads included, so a 150K-token prompt pays the higher tier on all of it. We worked through where that cliff bites in Claude Haiku 5.5 in Foundry: $0.10 and the 100K cliff; for a migration the relevant fact is that a Haiku 4.5 workload, capped as it was at a 200K window, lands in the cheap tier unless it was routinely above 100K.

The parameter surface changes more than the price. Haiku 4.5 offered extended thinking with a token budget; Haiku 5.5 is an adaptive-thinking model with effort levels up to max. Microsoft's two Learn pages disagree on whether Haiku 5.5 still accepts a manual thinking budget, so test it rather than trust either. The partner-models page is unambiguous on the rest: top_k and temperature are not supported, top_p must be 0.99, and output_format only works with adaptive thinking. Anthropic's API version 2026-10-21 removes the sampling parameters entirely. Grep your Haiku 4.5 call sites for temperature before you flip the model name.

Sonnet 4.5 and Opus 4.5 follow the same path later in the month, at $3 and $15 to Sonnet 5.5's $2 and $10, and $5 and $25 to Opus 5.5's $4 and $20. Microsoft lists Sonnet 5.5 as the Sonnet 4.5 replacement and nothing for Opus 4.5; Anthropic's migration guide points Opus 4.5 users at Opus 5.5.

The ten days

Days 1 and 2: inventory every deployment and its upgrade setting

Deployments are child resources of the Foundry or Azure OpenAI account, so Azure Resource Graph will not hand you the list in one query. Loop the accounts.

# Every deployment of a retiring model, with SKU and upgrade policy, across the subscription
for acct in $(az cognitiveservices account list --query "[?kind=='OpenAI' || kind=='AIServices'].[name,resourceGroup]" -o tsv | tr '\t' ','); do
  name=${acct%,*}; rg=${acct#*,}
  az cognitiveservices account deployment list -g "$rg" -n "$name" \
    --query "[?contains(' o1 o1-pro o3 o3-pro o3-mini o4-mini o3-deep-research codex-mini claude-haiku-4-5 claude-sonnet-4-5 claude-opus-4-5 ', join('', [' ', properties.model.name, ' ']))].{account:'$name', deployment:name, model:properties.model.name, version:properties.model.version, sku:sku.name, upgrade:properties.versionUpgradeOption}" \
    -o table
done

An empty upgrade column means null, which means OnceCurrentVersionExpired, which means the deployment changes model on the 19th. Next to each row write the API the callers use and whether they send tools; that column decides the rest of the week. While you are in the portal, create a Service Health alert on the service named Azure OpenAI Service, since there is no separate Microsoft Foundry entry, and route it to the team channel rather than the subscription owner.

Days 3 to 5: pick a target per deployment and prove it

Replay a frozen sample of production prompts against the candidate on the Responses API, unchanged first, then with the prompt and schema edits the new model needs. Score source and target with the same evaluators, and record reasoning_tokens per request alongside quality, because that number is the whole cost story. Where a Chat Completions caller cannot move by the 19th, ship the reasoning_effort none bridge now, behind a flag, and measure what it costs you in quality.

Days 6 and 7: set the upgrade policy you actually want

For Standard deployments you are migrating manually to a different model, point the deployment at the new model yourself rather than waiting for Microsoft's choice. For deployments you want to die cleanly, set NoAutoUpgrade. The CLI can read the property but cannot write it; PowerShell and REST can.

# PowerShell: stop a deployment from being rewired on the 19th
$d = Get-AzCognitiveServicesAccountDeployment -ResourceGroupName rg-ai-prod -AccountName aoai-swc-prod -Name o4-mini-extract
$d.Properties.VersionUpgradeOption = "NoAutoUpgrade"
New-AzCognitiveServicesAccountDeployment -ResourceGroupName rg-ai-prod -AccountName aoai-swc-prod -Name o4-mini-extract -Properties $d.Properties -Sku $d.Sku

# REST: move a Standard deployment to your own target, keeping the deployment name callers use
az rest --method put \
  --url "https://management.azure.com/subscriptions/<sub>/resourceGroups/rg-ai-prod/providers/Microsoft.CognitiveServices/accounts/aoai-swc-prod/deployments/o4-mini-extract?api-version=2025-06-01" \
  --body '{"sku":{"name":"DataZoneStandard","capacity":200},"properties":{"model":{"format":"OpenAI","name":"gpt-6.1-terra","version":"2026-10-26"},"versionUpgradeOption":"OnceCurrentVersionExpired"}}'

Keep the deployment name: callers address the deployment, not the model, and a rename is a second change you do not need this week.

Day 8: provisioned deployments

Check capacity for the target model in your region first, then run the in-place migration. Azure shows the deployment as Updating for 20 to 30 minutes while traffic moves, and you keep serving throughout. In-place migration across model families is REST and CLI only; the portal handles version changes within a family.

az rest --method put \
  --url "https://management.azure.com/subscriptions/<sub>/resourceGroups/rg-ai-prod/providers/Microsoft.CognitiveServices/accounts/aoai-swc-prod/deployments/o3-ptu?api-version=2024-10-01" \
  --body '{"sku":{"name":"GlobalProvisionedManaged","capacity":100},"properties":{"model":{"format":"OpenAI","name":"gpt-6.1-sol","version":"2026-09-29"}}}'

Days 9 and 10: Claude, then the long tail

Haiku 4.5 goes first, on the 15th, so in practice this step runs in parallel from day 3. Create the Haiku 5.5 deployment in the same hosted version you use today, switch the model name in the Anthropic SDK call, strip temperature and top_k, replace any budget_tokens thinking block with an effort level, and compare outputs on your sample. Then schedule Opus 4.5 for before the 24th and Sonnet 4.5 for before the 30th on the same pattern.

The Swedish and EU angle

Data Zone deployments upgrade inside the zone, at the zone's price. Every GPT-5.6 and GPT-6.1 model in the tables above has EU Data Zone meters at a 10 percent premium: Sol at $4.40 and $22, Terra 5.6 at $2.20 and $13.20, Terra 6.1 at $1.20 and $6, Luna 5.6 at $0.22 and $1.32. An o-series Data Zone Standard deployment auto-upgrades to the Data Zone version of its replacement, so processing stays inside the EU. What changes is the invoice, by the ratios in the cost table plus the premium you already pay.

Regional Standard in Sweden Central has no GPT-5.6 row. o4-mini is one of seven models Microsoft still offers as a regional Standard deployment in Sweden Central. The regional Standard table lists no GPT-5.6 or GPT-6 model at all. If you chose regional Standard for data residency at the country level, do not assume the auto-upgrade preserves that; redeploy as Data Zone Standard EU, document the change from Sweden-only to EU-wide processing in your record of processing, and take the question to your DPO this week rather than after the 19th.

Claude's residency posture does not move. In Europe, Claude models are available in Sweden Central as Global Standard only, and Data Zone deployments of the Azure-hosted version exist for the United States zone alone. A Haiku 4.5 version 1 deployment was processed on Anthropic's infrastructure outside Azure; a Haiku 5.5 version 1 deployment still is. If your DPIA for the Haiku workload rested on that fact, the migration is a model-name change, not a transfer-mechanism change. If you want Azure-hosted processing, version 2 of Haiku 5.5 is GA, but still Global Standard in Sweden Central, meaning any Azure region may process the request.

Public sector: check what your approved-tool decision actually names. The Regeringskansliet decision in October restricted staff to approved services, and many organisations have since written their own approval down to specific models. If yours did, a deployment that silently becomes gpt-5.6-terra on the 19th is running a model the approval may not name. Treat the migration as a change request against that decision, not as Azure housekeeping.

This week's checklist

  • Today. Run the inventory loop. Every row with an o-series or Claude 4.5 model gets an owner, a caller API and a target by end of day.
  • Today. Create the Service Health alert under Azure OpenAI Service and route it to engineering.
  • By Wednesday. Haiku 5.5 deployment created, sampling parameters stripped, replay scored. Cut over before Sunday the 15th.
  • By Friday. Every Chat Completions caller that sends tools either speaks Responses or sends reasoning_effort none behind a flag.
  • By Monday the 16th. Standard deployments repointed to the target you chose, or set to NoAutoUpgrade with a deletion date. Provisioned deployments migrated in place.
  • Tuesday the 17th. gpt-chat-latest previews are force-upgraded; confirm nothing pinned a version string.
  • Thursday the 19th. Watch the 400 rate and reasoning_tokens per request from 00:00 UTC. Anything you missed announces itself.
  • Before the 24th and the 30th. Opus 4.5 and Sonnet 4.5 follow the Haiku pattern.
  • Before 1 December. Re-run the cost estimate for any Sol deployment at $5 and $30.

Microsoft's own migration guide puts the point well: an endpoint that still responds does not mean your application still behaves. On 19 November a great many Azure endpoints will keep responding.

subscribe # the AI news that matters, minus the noise

Book a Call

Sources

Tags

Related posts