docs/guides/codex-desktop-custom-model-visibility-en.md
Applies to CC Switch v3.16.1 and later. This article explains "why the Codex desktop app can't see custom models" and the available mitigation; for the detailed step-by-step setup with screenshots, see Keep Codex Remote Control and Official Plugins While Using Third-Party APIs.
After you switch Codex to a third-party / custom model in CC Switch (DeepSeek, Kimi, GLM, MiniMax, an aggregator, etc.):
codex /model menu.Many users have run into this. Here's why, and what you can do about it.
This is not a CC Switch local-config problem and not a CC Switch bug — it is the Codex desktop app's (the upstream closed-source client's) own model-gating behavior.
The Codex desktop app's model picker decides which models to allow based on your current login identity: when it can't detect an official ChatGPT / Codex login state, it forces the picker back to the official default model and hides the custom models you configured through config.toml (the reasoning level falls back to the official default too). The upstream has marked "exposing custom-provider models in the desktop GUI" as not planned, so CC Switch cannot fully fix this at the desktop-GUI level.
The command-line codex /model menu and request routing both recognize the custom providers in config.toml correctly — only the desktop GUI picker is constrained by this gating layer.
The workaround is to keep the official login state so the desktop app's gating allows your custom models through. The key points are below (the full step-by-step setup with screenshots is in the linked guide):
Settings -> General -> Codex App Enhancements -> Keep official login when switching third-party providers (off by default).Once enabled, CC Switch preserves the official login state in ~/.codex/auth.json when switching to a third-party provider and writes the third-party key into config.toml, so the desktop app still recognizes the official login identity, the gating lets your models through, and the custom models you configured reappear in the picker. The preserved official token is never sent to the third party — third-party model requests still use the key you configured, forwarded through the local route.
📖 Detailed step-by-step setup: Keep Codex Remote Control and Official Plugins While Using Third-Party APIs
codex debug models to list the models actually available on the CLI side and confirm the model itself is configured correctly (the CLI is unaffected by this gating).