Feature request: add `plan_mode_model` config override for Plan mode
What variant of Codex are you using?
CLI / TUI Plan mode
What feature would you like to see?
Add a first-class plan_mode_model configuration option that lets users choose the default model used by Plan mode independently from the global model.
Today, Plan mode follows the built-in Plan preset model, which currently inherits the global model. That means users who want one model for planning and another model for normal execution need to manually switch models before/after using Plan mode, or keep separate profiles/sessions.
Requested behavior:
- Support a top-level config value:
``toml``
model = "gpt-execute"
plan_mode_model = "gpt-plan"
- Support profile-level overrides:
```toml
plan_mode_model = "gpt-top-plan"
profile = "dev"
[profiles.dev]
plan_mode_model = "gpt-profile-plan"
```
When profile dev is active, Plan mode should use gpt-profile-plan.
- If
plan_mode_modelis unset, preserve the existing behavior: Plan mode uses the built-in Plan preset model, which currently follows the global model.
- When switching into Plan mode, the TUI should apply the configured Plan-mode model override.
- When submitting a message with Plan mode active, the submitted collaboration mode should use the configured Plan-mode model.
- When the model/reasoning selector is used while Plan mode is active, users should be able to choose whether the change applies only to the Plan-mode override or to both the global default and the Plan-mode override.
Why this matters
This makes Plan mode configurable in the same spirit as other mode/phase-specific settings.
It also makes the Plan-mode workflow less error-prone:
- users no longer need to manually switch models before entering Plan mode;
- the execution model can remain stable while Plan mode uses a different default;
- profile-specific defaults make it possible to have different Plan-mode model choices per team, project, or workflow;
- clearing the override cleanly returns Plan mode to the built-in preset behavior.
Example configuration
model = "gpt-5.4"
plan_mode_model = "gpt-5.2"
plan_mode_reasoning_effort = "high"
Resulting behavior:
- normal execution uses
gpt-5.4; - Plan mode uses
gpt-5.2; - Plan mode uses the configured Plan-mode reasoning effort;
- removing
plan_mode_modelrestores the existing Plan preset/global-model behavior.
Acceptance criteria
plan_mode_modelis accepted inconfig.toml.plan_mode_modelis accepted under[profiles.<name>].- Profile-level
plan_mode_modeloverrides the top-level value. - The generated config schema includes
plan_mode_model. - The TUI applies the Plan-mode model override when Plan mode is active.
- The TUI persists Plan-mode-only model changes to the appropriate config path:
- root path when no profile is active;
[profiles.<active_profile>]when a profile is active.- Clearing
plan_mode_modelresets Plan mode to the built-in Plan preset model. - Documentation explains the new config option and fallback behavior.
Non-goals
- This does not change the global
modelbehavior. - This does not introduce automatic model routing.
- This does not change
/reviewmodel behavior. - This does not require Plan mode to always use a different model; it only adds an optional override.
Additional information
Related requests:
- #13206 asks for a dedicated model config for
/plan. - #5558 asks for separate model selection for Plan vs Execute modes.
- #18406 asks for better model switching inside the Plan-mode approval flow.
This request is narrower: add a persisted, profile-aware Plan-mode model default via plan_mode_model, while preserving the current fallback behavior when the setting is absent.
Example implementation
A prototype implementation is available in https://github.com/aaudin90/codex/pull/1.
https://github.com/user-attachments/assets/f76c7ebb-7437-4b52-ac40-614764403fba
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗