CLI /model and Desktop model pickers should expose config profiles / custom provider model aliases
Problem
Codex CLI supports custom profiles in ~/.codex/config.toml, and those profiles can encode a complete model selection:
[model_providers.internal-provider]
name = "Internal Provider"
base_url = "https://<internal-provider>/openai/v1"
wire_api = "responses"
http_headers = { ... }
[profiles.internal-gpt55]
model_provider = "internal-provider"
model = "gpt-5.5-2026-04-24"
model_reasoning_effort = "medium"
[profiles.internal-gpt55-high]
model_provider = "internal-provider"
model = "gpt-5.5-2026-04-24"
model_reasoning_effort = "high"
[profiles.internal-gpt55-xhigh]
model_provider = "internal-provider"
model = "gpt-5.5-2026-04-24"
model_reasoning_effort = "xhigh"
These profiles work when starting Codex from the CLI:
codex -p internal-gpt55-xhigh
However, they are invisible in the interactive /model selector. The model selector only shows built-in model catalog entries such as gpt-5.5, gpt-5.4, etc.
The same limitation affects Codex Desktop: custom profiles are not exposed as selectable model entries, so using a custom provider requires changing global config defaults rather than choosing a profile per conversation.
Expected behavior
Config profiles should be selectable as model entries in the CLI /model selector and in the Desktop model picker.
For example, the picker could show:
gpt-5.5gpt-5.4internal-gpt55internal-gpt55-highinternal-gpt55-xhigh
Selecting internal-gpt55-xhigh should start or switch to a conversation using:
model_provider = "internal-provider"
model = "gpt-5.5-2026-04-24"
model_reasoning_effort = "xhigh"
Why this matters
Many users want to keep the default OpenAI/Codex models for normal conversations, but occasionally use a custom OpenAI-compatible provider for specific conversations.
Profiles are already a good abstraction for this because they can bundle:
model_providermodelmodel_reasoning_effort- other per-model/per-provider settings, including non-public provider details
But today there is a UX gap:
codex -p <profile>works/modeldoes not show<profile>- Desktop model picker does not show
<profile>
This makes custom provider usage feel like a hidden CLI-only feature, and makes reasoning effort variants hard to discover.
Related issues
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗