Skip to content

Feature request: add plan_mode_model config override for Plan mode #19343

@aaudin90

Description

@aaudin90

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:

    model = "gpt-execute"
    plan_mode_model = "gpt-plan"
  • Support profile-level overrides:

    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_model is 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_model restores the existing Plan preset/global-model behavior.

Acceptance criteria

  • plan_mode_model is accepted in config.toml.
  • plan_mode_model is accepted under [profiles.<name>].
  • Profile-level plan_mode_model overrides 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_model resets 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 model behavior.
  • This does not introduce automatic model routing.
  • This does not change /review model behavior.
  • This does not require Plan mode to always use a different model; it only adds an optional override.

Additional information

Related requests:

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 aaudin90#1.

2026-04-24.14.07.54.mov

Metadata

Metadata

Assignees

No one assigned

    Labels

    configIssues involving config.toml, config keys, config merging, or config updatesenhancementNew feature or requestplanIssues involving plan mode

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions