Codex desktop: non-default model effort resets before the first message

Open 💬 2 comments Opened Jul 14, 2026 by alex-3deye

What version of the Codex App are you using (From “About” / installed bundle)?

ChatGPT/Codex desktop app 26.707.72221 (CFBundleVersion 5307).

Bundled CLI:

codex-cli 0.144.2

What subscription do you have?

Not automatically available from the local diagnostic data.

What platform is your computer?

  • macOS 26.5.1
  • Darwin 25.5.0 arm64

What issue are you seeing?

In the desktop app, reasoning effort cannot be changed for a non-default model while composing the initial message in an empty/new task.

The picker accepts the new effort and displays it for roughly one second, then resets it to the effort configured for the default model.

Once the first user message has been sent and is present in the task, changing the model's reasoning effort works correctly and the selection persists. The failure is therefore limited to the pre-first-message/new-task composer state, not the normal active-task picker path.

This has reportedly been reproducible for months.

Current valid global configuration:

model = "gpt-5.6-sol"
model_reasoning_effort = "medium"

This is not a malformed TOML/config parsing failure. The config is readable, and the desktop log shows the app re-applying the configured default pair through config/batchWrite around the initial-composer picker interaction:

info [electron-message-handler] Setting default model and reasoning effort newEffort=medium newModel=gpt-5.6-sol profile=null
info [AppServerConnection] ... method=config/batchWrite ...
info [AppServerConnection] ... method=config/read ...

The same sequence was observed twice within about 20 seconds.

What steps can reproduce the bug?

  1. Set a default model and effort in Codex configuration (for example, gpt-5.6-sol with medium).
  2. Start a new task and leave it empty; do not send the first message yet.
  3. Open the model/reasoning control beneath the composer.
  4. Select any available model other than the configured default model.
  5. Select a different supported reasoning effort for that model (for example, High or Extra High).
  6. Observe that the newly selected effort appears for about one second, then resets to the configured default effort.
  7. Send the first user message.
  8. Change reasoning effort again.
  9. Observe that the change now persists correctly.

What is the expected behavior?

The model/effort combination selected before the first message should remain selected and should be used for that initial turn. The configured global default should initialize the empty composer, but it should not overwrite a valid explicit selection immediately afterward.

Additional information

The official Codex manual says the model and reasoning control beneath the composer can be used to choose an available model and adjust its reasoning effort, so the initial-message reset contradicts the documented behavior.

The successful post-first-message behavior points to the new-task composer initialization or pre-thread state synchronization path. The app appears to reconcile the explicit initial selection back to the global model + model_reasoning_effort pair before a persisted task/thread state exists.

Related reports:

  • #21093 — new-chat effort selector did not apply to the initial prompt (closed as completed; this may be a regression or a remaining UI-state variant)
  • #17318 — intermittent inability to change model and reasoning effort in some threads
  • #14008 — model selection reverted to the default model (closed as not planned; older app)
  • #26930 — effort resets during active-thread delegation/continuation, unlike this pre-first-message-only case

No full logs are attached because Codex logs can contain sensitive session data; the minimal non-sensitive diagnostic excerpt is included above.

View original on GitHub ↗

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