Codex Desktop hides Fast mode UI with stale model_catalog_json missing service_tiers
Summary
Codex Desktop can silently hide the Fast mode / Speed selector when ~/.codex/config.toml points model_catalog_json at an older local model catalog that contains additional_speed_tiers but not the newer service_tiers field.
The request/config layer still appears to know about fast mode, but the Desktop model/reasoning dropdown has no Speed/Fast UI because the frontend derives serviceTierOptions from service_tiers.
Environment
- Codex CLI/App version:
0.142.0-alpha.1 - Platform: macOS arm64
- Auth mode: ChatGPT auth configured
- Feature flag:
fast_mode stable true - Config contains a local model catalog override:
model = "gpt-5.5"
model_catalog_json = "~/.codex/model_catalog.local.json"
model_reasoning_effort = "xhigh"
service_tier = "fast"
Paths and account identifiers are intentionally redacted.
Observed behavior
The Codex Desktop model/reasoning dropdown showed only reasoning levels, for example:
- Low
- Medium
- High
- Extra High
The Speed/Fast selector was missing.
Deleting the Desktop global state file temporarily made the Fast UI appear, but that also removed project/sidebar history, so it was not a usable fix. Clearing stale remote host state did not fully fix the issue. The durable fix was updating the configured local model catalog so that gpt-5.5 contained service_tiers.
Evidence
The stale local catalog had this shape:
{
"fetched_at": "2026-05-01T16:33:02.699363Z",
"client_version": "0.128.0",
"gpt55": {
"service_tiers": null,
"additional_speed_tiers": ["priority", "fast"]
}
}
The current cache generated by the newer client had this shape:
{
"fetched_at": "2026-06-19T05:34:15.395173Z",
"client_version": "0.142.0",
"gpt55": {
"service_tiers": [
{
"id": "priority",
"name": "Fast",
"description": "1.5x speed, increased usage"
}
],
"additional_speed_tiers": ["fast"]
}
}
After merging the service_tiers field from the current cache into the configured local model catalog, codex debug models showed:
{
"slug": "gpt-5.5",
"service_tiers": [
{
"id": "priority",
"name": "Fast",
"description": "1.5x speed, increased usage"
}
],
"additional_speed_tiers": ["fast"]
}
After restarting Codex Desktop, the Speed/Fast UI returned.
Expected behavior
Codex Desktop should not silently hide Fast mode when a configured model catalog uses an older schema. Possible fixes:
- Migrate or normalize
additional_speed_tiersintoservice_tiersfor UI purposes. - Warn when
model_catalog_jsonpoints to an incompatible stale catalog. - Prefer the current model cache for UI-only speed tier metadata when the configured catalog lacks
service_tiers.
Why this is hard to diagnose
The visible symptom points at Desktop UI/global state, and deleting .codex-global-state.json can appear to fix it temporarily while also removing sidebar/project history. The actual durable fix was updating model metadata, which is not obvious from the UI.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗