Skip to content

[Bug]: Routed models are loaded by Codex app-server but missing from Desktop model picker #241

Description

@Lingchen97

Summary

OpenCodex successfully injects 13 routed models into the Codex catalog, and the Codex CLI/app-server can read all of them, but Codex Desktop does not show any routed model in its model picker.

The desktop picker only shows the current native models:

  • 5.6 Sol
  • 5.6 Terra
  • 5.6 Luna
  • 5.5
  • 5.4
  • 5.4 Mini

Expected: routed entries such as input/glm-5.2, input/grok-4.5, and input/kimi-k2.7-code should also appear, as described in the OpenCodex “Codex App model picker” documentation.

This does not appear to be a stale catalog, failed injection, or stopped proxy:

  • OpenCodex is healthy and running.
  • model_catalog_json and openai_base_url are present as root settings.
  • opencodex-catalog.json contains all 13 routed entries with visibility: "list".
  • The Codex Desktop bundled CLI's codex debug models reads all 13 routed entries.
  • A direct model/list request to the bundled Codex app-server also returns all routed entries.
  • Fully quitting and reopening Codex Desktop does not change the picker.

Reproduction

  1. Configure a custom OpenAI Responses-compatible provider:

    {
      "defaultProvider": "openai",
      "providers": {
        "openai": {
          "adapter": "openai-responses",
          "baseUrl": "https://chatgpt.com/backend-api/codex",
          "authMode": "forward"
        },
        "input": {
          "adapter": "openai-responses",
          "baseUrl": "https://example.invalid",
          "authMode": "key"
        }
      }
    }
  2. Run ocx start.

  3. Confirm that ~/.codex/config.toml contains:

    model_catalog_json = "/Users/example/.codex/opencodex-catalog.json"
    openai_base_url = "http://127.0.0.1:10100/v1"
  4. Confirm that the generated catalog contains routed models with visibility: "list".

  5. Run the Codex binary bundled with the desktop app:

    /Applications/ChatGPT.app/Contents/Resources/codex debug models

    Observe that the returned model list includes all routed input/... entries.

  6. Fully quit and reopen Codex Desktop.

  7. Open the model picker.

  8. Observe that only native OpenAI models are displayed; none of the routed input/... models appear.

Logs and screenshots

$ ocx status
Proxy: running
Health: http://127.0.0.1:10100/healthz ok v2.7.31

$ /Applications/ChatGPT.app/Contents/Resources/codex --version
codex-cli 0.145.0-alpha.27

$ jq -r '.models[] | select(.slug | startswith("input/")) | [.slug, .visibility] | @tsv' ~/.codex/opencodex-catalog.json
input/grok-4.5               list
input/gpt-5.6-sol            list
input/glm-5.2                list
input/codex-auto-review      list
input/gemma-4                list
input/glm-4.7-flash          list
input/gpt-5.3-codex-spark    list
input/gpt-5.4                list
input/gpt-5.4-mini           list
input/gpt-5.5                list
input/gpt-5.6-luna           list
input/gpt-5.6-terra          list
input/kimi-k2.7-code         list

Additional diagnostic evidence:

  • The bundled Codex app-server returns 20 models from model/list, including all 13 routed entries.
  • The routed entries are returned as visible/non-hidden.
  • Inspection of the current Desktop frontend bundle shows that the picker can switch from catalog visibility to an available_models allowlist when the remote use_hidden_models setting is active. In this environment, that allowlist appears to contain only native model ids. This would explain why the app-server sees the routed entries while the picker drops them.

Screenshot available if needed: the picker contains only 5.6 Sol, 5.6 Terra, 5.6 Luna, 5.5, 5.4, and 5.4 Mini.

Area

Other

Version

OpenCodex 2.7.31

Codex Desktop 26.715.70719 (build 5650)

Bundled codex-cli 0.145.0-alpha.27

OS

macOS 27.0 (build 26A5378n), Apple Silicon

Config shape

{
  "defaultProvider": "openai",
  "providers": {
    "openai": {
      "adapter": "openai-responses",
      "baseUrl": "https://chatgpt.com/backend-api/codex",
      "authMode": "forward"
    },
    "input": {
      "adapter": "openai-responses",
      "baseUrl": "<redacted relay URL>",
      "authMode": "key"
    }
  }
}

Checks

  • I searched existing issues and docs first.
  • I removed secrets, tokens, and personal data from logs and screenshots.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingcatalogModel catalog, slugs, visibility, routed entriesupstream-trackingBlocked on an upstream (Codex CLI/Desktop) fix; kept open for discoverability

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions