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.
Symptom
Section titled “Symptom”在codex桌面端无法看到自定义模型列表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).
Log in with an official ChatGPT account in Codex desktop to ensure official login credentials exist in `~/.codex/auth.json`.
~/.codex/auth.json # 确保文件存在且包含有效的 ChatGPT 官方登录凭据Open cc-switch settings and enable the "Preserve official login when switching to third-party" option.
cc-switch 设置界面 # 开启:切换第三方时保留官方登录Confirm that your third-party provider has local routing / routing takeover enabled.
Fully quit and restart Codex desktop, then open the model selector.
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"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.
Affected Versions
Section titled “Affected Versions”Source Issues
Section titled “Source Issues”This page is distilled from 6 real issues
- #3795[Bug] Codex 接管配置不完整:缺少 requires_openai_auth、model_catalog_json 等关键字段,导致请求静默失败
- #4195[Codex] cc-switch 生成的 model catalog 缺少 available_in_plans / minimal_client_version 等字段,导致 Codex.app 桌面版右下角不显示模型名
- #4420在codex桌面端无法看到自定义模型列表
- #4952[BUG] responses端点模式不支持图片识别的情况
- #5182[bug] 第三方 Codex 供应商导入后模型列表/推理强度显示为"自定义":导出的 model_catalog_json 为 snake_case,与 Codex ≥0.144(camelCase)解析契约不匹配
- #6686火山方舟coding plan看不了diff
- 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.
Related problems
Section titled “Related problems”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.