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.
4 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Thanks for the duplicate pointer. I reviewed #20635, and I think this request is related but not the same.
#20635 asks for an in-session
/profilecommand that can switch profiles without restarting the current session.This issue is mainly about model/profile discoverability in existing pickers:
codex -p <profile>./modelselector does not show config profiles.-pcommand.For this issue, preserving the current session is not required. It would already help if profiles appeared as selectable entries when starting or configuring a conversation, for example:
internal-gpt55internal-gpt55-highinternal-gpt55-xhighIf the current profile mechanism is going to be replaced, the same UX need probably still applies to the replacement: users need a way to define provider/model/effort aliases and select them from the CLI
/modelUI and Desktop model picker.We are planning to deprecate profiles soon and replace it with a new mechanism. For that reason, we don't have plans to improve the current mechanism.
@etraut-openai this isn't about profiles tho
It just happens that right now you have to use profiles to register other models - the core point is, users want to be able to select their custom models with /model.
Thats currently impossible unless we mess with the inbuilt catalog which is likely a bad idea since it expects metadata other models dont provide