The example that matters this quarter
From Microsoft's lifecycle documentation: when gpt-4o version 2024-05-13 retires on 2026-12-09, the service automatically upgrades Standard deployments of it to gpt-5.6-sol, adding that model to regions where it isn't yet available on Standard. Microsoft notes that the replacement and date can change, so check the schedule before relying on it.
That's convenient if you're unprepared, and risky if your application depends on the old model's behaviour.
1. Decide the upgrade policy per deployment
Each Standard deployment has a versionUpgradeOption:
| Value | Behaviour | Use when |
|---|---|---|
OnceNewDefaultVersionAvailable | Upgrades when Microsoft sets a new default version | Low-risk uses (internal chat, drafts) |
OnceCurrentVersionExpired | Upgrades only at retirement | Default for most production apps, combined with your own earlier migration |
NoAutoUpgrade | Never upgrades; stops working at retirement | Only if you have a firm migration plan and alerting |
Set it with the CLI (check --help for the parameter name on your CLI version) or through ARM/Bicep:
resource dep 'Microsoft.CognitiveServices/accounts/deployments@2024-10-01' = {
parent: aoai
name: 'chat-prod'
sku: { name: 'Standard', capacity: 50 }
properties: {
model: { format: 'OpenAI', name: 'gpt-4o', version: '2024-11-20' }
versionUpgradeOption: 'OnceCurrentVersionExpired'
}
}
Provisioned deployments never auto-upgrade; they need a manual migration.
2. Ask the Models API what's coming
az rest --method get \
--url "https://management.azure.com/subscriptions/$SUB/providers/Microsoft.CognitiveServices/locations/swedencentral/models?api-version=2024-10-01" \
--query "value[?model.format=='OpenAI'].{name:model.name, version:model.version, status:model.lifecycleStatus, retire:model.deprecation.inference}" -o table
Warning
The API's status names don't match the portal.
lifecycleStatus: "Deprecating"means deprecated (still works, closed to new customers).lifecycleStatus: "Deprecated"means retired (returns 410). Also treat any model whosedeprecation.inferencedate is in the past as retired, even if the status hasn't caught up.
3. A weekly retirement report
Join your deployments with the Models API and flag anything retiring in the next 120 days:
import datetime as dt, subprocess, json
def az(*args):
return json.loads(subprocess.check_output(["az", *args, "-o", "json"]))
SUB = "<subscription-id>"
soon = dt.date.today() + dt.timedelta(days=120)
rows = []
for acct in az("cognitiveservices", "account", "list"):
if acct["kind"] not in ("OpenAI", "AIServices"):
continue
loc = acct["location"]
models = az("rest", "--method", "get", "--url",
f"https://management.azure.com/subscriptions/{SUB}/providers/Microsoft.CognitiveServices/locations/{loc}/models?api-version=2024-10-01")["value"]
retire = {(m["model"]["name"], m["model"]["version"]): m["model"].get("deprecation", {}).get("inference")
for m in models}
for d in az("cognitiveservices", "account", "deployment", "list", "-g", acct["resourceGroup"], "-n", acct["name"]):
key = (d["properties"]["model"]["name"], d["properties"]["model"]["version"])
date = retire.get(key)
if date and dt.date.fromisoformat(date[:10]) <= soon:
rows.append((acct["name"], d["name"], *key, date[:10], d["sku"]["name"],
d["properties"].get("versionUpgradeOption")))
for r in sorted(rows, key=lambda r: r[4]):
print(*r, sep="\t")
Send the output to the owning teams (tag accounts with an owner), and track each line until it's migrated.
4. Add the official notices
Microsoft emails subscription owners at least 60 days before a GA model retires and posts a Service Health advisory. Make sure those reach the right people: a Service Health alert for Azure OpenAI Service health advisories routed to the AI platform team. See Service Health alerts.
Checklist
- Every Standard deployment has a deliberate versionUpgradeOption
- gpt-4o 2024-05-13 deployments migrated or knowingly left to auto-upgrade before 9 Dec 2026
- Weekly report from the Models API with the status-name mapping applied
- Owners notified per deployment
- Service Health advisories for Azure OpenAI Service routed to the platform team