CLI /model and Desktop model pickers should expose config profiles / custom provider model aliases

Resolved 💬 3 comments Opened May 11, 2026 by wonderly321 Closed May 11, 2026

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.5
  • gpt-5.4
  • internal-gpt55
  • internal-gpt55-high
  • internal-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_provider
  • model
  • model_reasoning_effort
  • other per-model/per-provider settings, including non-public provider details

But today there is a UX gap:

  • codex -p <profile> works
  • /model does 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

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗