Skip to content

Codex desktop not showing third-party models - CC Switch

Quick fix

Log in with an official ChatGPT account in Codex desktop and enable "preserve official login" in cc-switch to restore display.

Error output
在codex桌面端无法看到自定义模型列表
English translation

Cannot see the custom model list in codex desktop

This is a limitation of the Codex desktop client (upstream client) itself. Its model selector decides whether to display third-party custom models based on **whether an official ChatGPT identity is logged in**. Without an official login state, it forcibly falls back to the official default models (even the thinking level reverts to default). This check is internal to the Codex desktop client and cannot be directly modified by cc-switch.

Additionally, the `~/.codex/cc-switch-model-catalog.json` generated by cc-switch has multiple template defects across different versions, causing the model list to display as "Custom" or be empty even with an official login state: 1. **Missing fields**: Missing key fields like `available_in_plans` and `minimal_client_version` cause models to be filtered out by Codex desktop (#4195). 2. **Naming contract mismatch**: cc-switch writes fields in snake_case (e.g., `display_name`), but Codex ≥0.144 requires camelCase (e.g., `displayName`), causing parsing failures (#5182). 3. **Multimodal support hardcoded**: `input_modalities` is hardcoded to `["text"]`, causing Codex to reject image inputs (#4952, fixed in v3.17.0). 4. **Incomplete configuration**: `config.toml` missing fields like `requires_openai_auth` causes requests to be silently dropped (#3795, fixed in v3.16.2). 5. **Incorrect model ID**: The auto-fetch model list feature for Volcengine Coding Plan pulled incorrect model IDs, causing diff display failures (#6686).

  1. Log in with an official ChatGPT account in Codex desktop to ensure official login credentials exist in `~/.codex/auth.json`.

    ~/.codex/auth.json
    # 确保文件存在且包含有效的 ChatGPT 官方登录凭据
  2. Open cc-switch settings and enable the "Preserve official login when switching to third-party" option.

    cc-switch 设置界面
    # 开启:切换第三方时保留官方登录
  3. Confirm that your third-party provider has local routing / routing takeover enabled.

  4. Fully quit and restart Codex desktop, then open the model selector.

  5. If using Volcengine Coding Plan, do not use the "Fetch model list" feature. Add the model manually. Set the model ID to `deepseek-v4-flash` (without the date suffix) and the request URL to `https://ark.cn-beijing.volces.com/api/coding/v3`.

    ~/.codex/config.toml
    model = "deepseek-v4-flash"
    [model_providers.custom]
    base_url = "https://ark.cn-beijing.volces.com/api/coding/v3"
    wire_api = "responses"
  6. If the issue persists, try clicking "Settings" - "Log out" - "Log in again" - "Log in with ChatGPT account" in Codex desktop. Do not exit cc-switch during this process.

ToolCodex
Version3.16.0 - 3.20.0
PlatformsWindowsmacOS
Why can I see models configured in cc-switch when running `codex debug models` in the terminal, but not in Codex desktop?
This is a limitation of the Codex desktop client itself. It determines whether to display third-party models based on whether an official ChatGPT identity is logged in. Seeing them in the terminal indicates the data layer is normal; the issue is only in the desktop display layer. Log in with an official ChatGPT account in the desktop client and enable "preserve official login" in cc-switch to restore.
What if models disappear again after using it for a while?
Usually, the preserved official login state has expired. Logging in to the official ChatGPT again will restore it.
After upgrading to v3.17.0, custom models still cannot recognize images. What should I do?
v3.17.0 has fixed the issue where `input_modalities` was hardcoded to `["text"]`. After upgrading, please re-save the provider configuration once to regenerate the catalog file. If the issue persists, the model alias might not be recognized as a GPT series. Please reply in the corresponding issue and reopen it.
What to do if file diff changes cannot be displayed after connecting to Volcengine Coding Plan?
Do not use the "Fetch model list" feature of cc-switch, because it calls the Volcengine model plaza API, and the returned model IDs are not applicable to Coding Plan. Please add the model manually. Set the ID to `deepseek-v4-flash` (without the date suffix) and the request URL to `https://ark.cn-beijing.volces.com/api/coding/v3`.
In Codex 0.144 and above, the model list displays as "Custom". How to fix the field contract mismatch?
Codex ≥0.144 requires `cc-switch-model-catalog.json` to use camelCase fields (e.g., `displayName`), but cc-switch generates snake_case (e.g., `display_name`), causing parsing failures. This issue still exists in v3.16.5. It is recommended to follow up on subsequent version updates or manually modify the field names in the catalog file to camelCase.

This is an unofficial community wiki with no affiliation to the cc-switch authors or the project itself. Its content is compiled from the project's public GitHub issues. This site distributes no software.