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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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