Codex Desktop hides Fast mode UI with stale model_catalog_json missing service_tiers

Open 💬 2 comments Opened Jun 19, 2026 by loccen

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:

  1. Migrate or normalize additional_speed_tiers into service_tiers for UI purposes.
  2. Warn when model_catalog_json points to an incompatible stale catalog.
  3. 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.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗