Client or integration
OpenCodex dashboard
Area
Catalog / models
Summary
When a registry preset renames or retires a model id, existing key-auth provider configs are never updated. The stale id stays in config.json forever, so the dashboard keeps listing a model the vendor is retiring and the real replacement never appears.
Concrete case: d40367c0c renamed qwen3.8-max-preview to qwen3.8-max across both Alibaba Token Plan providers. My alibaba-token-plan-intl entry still carried the preview id in six places today, and alibaba-token-plan-intl/qwen3.8-max was simply absent from the picker.
The cause is the guard in reconcileOAuthProviders (src/oauth/index.ts:917):
if (!def || prov.authMode !== "oauth") continue;
OAUTH_RECONCILE_FIELDS already contains exactly the fields that go stale — models, modelContextWindows, modelInputModalities, modelReasoningEfforts, modelReasoningEffortMap — and there is already a heal step for a defaultModel that no longer exists in the refreshed list. None of it runs for authKind: "key" presets, because reconciliation is keyed on OAUTH_PROVIDERS and an oauth auth mode rather than on "this provider came from a registry preset".
So the repair path exists and is well tested; it is simply unreachable for every key-auth preset (Alibaba Token Plan, Moonshot, Volcengine, and the rest).
Reproduction
- Configure
alibaba-token-plan-intl on a build from before d40367c0c (registry seeds qwen3.8-max-preview).
- Upgrade to any build after
d40367c0c (registry seeds qwen3.8-max).
- Restart the service and open the dashboard model list for
alibaba-token-plan-intl.
Observed: the list shows alibaba-token-plan-intl/qwen3.8-max-preview. alibaba-token-plan-intl/qwen3.8-max is not offered.
Expected: the retired id is replaced by the supported one, carrying the registry's current context window, modalities, and reasoning ladder.
Persisted state on my machine before the manual fix:
models[0] qwen3.8-max-preview
modelContextWindows qwen3.8-max-preview: 983616
modelInputModalities qwen3.8-max-preview: [text, image]
modelReasoningEfforts qwen3.8-max-preview: [low, high, xhigh]
modelDefaultReasoningEfforts qwen3.8-max-preview: xhigh
preserveReasoningContentModels includes qwen3.8-max-preview
thinkingBudgetModels includes qwen3.8-max-preview
disabledModels alibaba-token-plan-intl/qwen3.8-max-preview
Two of those had drifted from the registry beyond the rename, which is the part a plain string replacement would miss:
- ladder was
["low","high","xhigh"]; the registry's QWEN38_REASONING_EFFORTS is ["low","medium","xhigh"]
- the id sat in
thinkingBudgetModels, but the registry puts qwen3.8-max in directReasoningEffortModels and explicitly filters it out of thinkingBudgetModels
A user who edits the id by hand keeps the wrong reasoning contract, silently.
Version
dev at acef0a584
Operating system
macOS
Provider and model
alibaba-token-plan-intl / qwen3.8-max (was qwen3.8-max-preview)
Logs or error output
No error is emitted. That is the problem: the rename fails silently and the only symptom is a model list that disagrees with the registry.
Screenshots and supporting files
Dashboard shows alibaba-token-plan-intl/qwen3.8-max-preview in the 1/15 model list for alibaba-token-plan-intl, with no qwen3.8-max row.
Redacted configuration
{
"providers": {
"alibaba-token-plan-intl": {
"adapter": "openai-chat",
"baseUrl": "https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
"authMode": "key",
"apiKey": "<redacted>",
"defaultModel": "qwen3.7-max",
"models": ["qwen3.8-max-preview", "qwen3.7-max", "..."],
"liveModels": false
}
}
}
Checks
Client or integration
OpenCodex dashboard
Area
Catalog / models
Summary
When a registry preset renames or retires a model id, existing key-auth provider configs are never updated. The stale id stays in
config.jsonforever, so the dashboard keeps listing a model the vendor is retiring and the real replacement never appears.Concrete case:
d40367c0crenamedqwen3.8-max-previewtoqwen3.8-maxacross both Alibaba Token Plan providers. Myalibaba-token-plan-intlentry still carried the preview id in six places today, andalibaba-token-plan-intl/qwen3.8-maxwas simply absent from the picker.The cause is the guard in
reconcileOAuthProviders(src/oauth/index.ts:917):OAUTH_RECONCILE_FIELDSalready contains exactly the fields that go stale —models,modelContextWindows,modelInputModalities,modelReasoningEfforts,modelReasoningEffortMap— and there is already a heal step for adefaultModelthat no longer exists in the refreshed list. None of it runs forauthKind: "key"presets, because reconciliation is keyed onOAUTH_PROVIDERSand anoauthauth mode rather than on "this provider came from a registry preset".So the repair path exists and is well tested; it is simply unreachable for every key-auth preset (Alibaba Token Plan, Moonshot, Volcengine, and the rest).
Reproduction
alibaba-token-plan-intlon a build from befored40367c0c(registry seedsqwen3.8-max-preview).d40367c0c(registry seedsqwen3.8-max).alibaba-token-plan-intl.Observed: the list shows
alibaba-token-plan-intl/qwen3.8-max-preview.alibaba-token-plan-intl/qwen3.8-maxis not offered.Expected: the retired id is replaced by the supported one, carrying the registry's current context window, modalities, and reasoning ladder.
Persisted state on my machine before the manual fix:
Two of those had drifted from the registry beyond the rename, which is the part a plain string replacement would miss:
["low","high","xhigh"]; the registry'sQWEN38_REASONING_EFFORTSis["low","medium","xhigh"]thinkingBudgetModels, but the registry putsqwen3.8-maxindirectReasoningEffortModelsand explicitly filters it out ofthinkingBudgetModelsA user who edits the id by hand keeps the wrong reasoning contract, silently.
Version
devatacef0a584Operating system
macOS
Provider and model
alibaba-token-plan-intl/qwen3.8-max(wasqwen3.8-max-preview)Logs or error output
No error is emitted. That is the problem: the rename fails silently and the only symptom is a model list that disagrees with the registry.
Screenshots and supporting files
Dashboard shows
alibaba-token-plan-intl/qwen3.8-max-previewin the 1/15 model list foralibaba-token-plan-intl, with noqwen3.8-maxrow.Redacted configuration
{ "providers": { "alibaba-token-plan-intl": { "adapter": "openai-chat", "baseUrl": "https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1", "authMode": "key", "apiKey": "<redacted>", "defaultModel": "qwen3.7-max", "models": ["qwen3.8-max-preview", "qwen3.7-max", "..."], "liveModels": false } } }Checks