Summary
gpt-5.4 and gpt-5.4-mini are both in OAUTH_ALLOWED_MODELS (packages/opencode/src/plugin/codex.ts), and both retire from the ChatGPT-subscription model picker at 2026-08-31T19:00:00Z.
Evidence
openai/codex ships its model catalog in the repo. Fetched first-hand from https://raw.githubusercontent.com/openai/codex/main/codex-rs/models-manager/models.json:
gpt-5.4 visibility=hide supported_in_api=True retirement_at=2026-08-31T19:00:00Z
gpt-5.4-mini visibility=hide supported_in_api=True retirement_at=2026-08-31T19:00:00Z
with explicit migration targets:
"gpt-5.4": { "model": "gpt-5.6-terra", "migration_markdown": "GPT-5.4 is no longer available\n\nCodex now uses GPT-5.6 Terra in place of GPT-5.4. Switch to GPT-5.6 Terra to continue.\n", "retirement_at": "2026-08-31T19:00:00Z" }
"gpt-5.4-mini": { "model": "gpt-5.6-luna", "migration_markdown": "GPT-5.4 Mini is no longer available\n\nCodex now uses GPT-5.6 Luna in place of GPT-5.4 Mini. Switch to GPT-5.6 Luna to continue.\n", "retirement_at": "2026-08-31T19:00:00Z" }
Scope — this is the subscription path only
This is not an API deprecation, and the two should not be conflated:
- both still carry
supported_in_api: true
- neither appears on OpenAI's API deprecations page
- models.dev does not mark either
deprecated (the 10 openai ids currently marked deprecated there are gpt-3.5-turbo, gpt-4, gpt-4-turbo, gpt-4.1-nano, gpt-4o-2024-05-13, gpt-image-1, o1, o1-pro, o3-mini, o4-mini — neither gpt-5.4 id is among them)
OAUTH_ALLOWED_MODELS is only consulted when auth.type === "oauth" (packages/opencode/src/plugin/codex.ts, the models loader returns {} for any other auth type), so API-key users are unaffected and keep both ids.
Why this will not fix itself
Because these are still live API models, models.dev will keep listing them — its stated policy is to hard-delete only once a model actually stops serving (see sst/models.dev#3707). So the catalog will not drop them for us.
After the deadline they would remain in the subscription picker and fail at request time with an opaque 400 — precisely the failure mode #1179 rebuilt this allowlist to prevent.
Fix
Remove both from OAUTH_ALLOWED_MODELS. Their documented replacements, gpt-5.6-terra and gpt-5.6-luna, are already in the set, so affected users land on a working model with no further change.
Timing matters and needs a human call. Removing before 2026-08-31T19:00:00Z breaks users who are successfully using gpt-5.4 today; leaving it after gives an opaque failure. See the linked PR for the reasoning on which way to err.
Summary
gpt-5.4andgpt-5.4-miniare both inOAUTH_ALLOWED_MODELS(packages/opencode/src/plugin/codex.ts), and both retire from the ChatGPT-subscription model picker at 2026-08-31T19:00:00Z.Evidence
openai/codexships its model catalog in the repo. Fetched first-hand fromhttps://raw.githubusercontent.com/openai/codex/main/codex-rs/models-manager/models.json:with explicit migration targets:
Scope — this is the subscription path only
This is not an API deprecation, and the two should not be conflated:
supported_in_api: truedeprecated(the 10 openai ids currently marked deprecated there aregpt-3.5-turbo,gpt-4,gpt-4-turbo,gpt-4.1-nano,gpt-4o-2024-05-13,gpt-image-1,o1,o1-pro,o3-mini,o4-mini— neithergpt-5.4id is among them)OAUTH_ALLOWED_MODELSis only consulted whenauth.type === "oauth"(packages/opencode/src/plugin/codex.ts, the models loader returns{}for any other auth type), so API-key users are unaffected and keep both ids.Why this will not fix itself
Because these are still live API models, models.dev will keep listing them — its stated policy is to hard-delete only once a model actually stops serving (see sst/models.dev#3707). So the catalog will not drop them for us.
After the deadline they would remain in the subscription picker and fail at request time with an opaque 400 — precisely the failure mode #1179 rebuilt this allowlist to prevent.
Fix
Remove both from
OAUTH_ALLOWED_MODELS. Their documented replacements,gpt-5.6-terraandgpt-5.6-luna, are already in the set, so affected users land on a working model with no further change.Timing matters and needs a human call. Removing before 2026-08-31T19:00:00Z breaks users who are successfully using
gpt-5.4today; leaving it after gives an opaque failure. See the linked PR for the reasoning on which way to err.