Unpinned codex exec switched from Sol to Astra and retained unsupported reasoning effort
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
What version of Codex CLI is running?
Affected: 0.153.0 through 0.153.4 (Codex binary bundled with the macOS ChatGPT/Codex app). Latest available at reporting time is 0.154.0; the automation has been disabled and pinned to a model, so I have not reproduced against 0.154.0.
What subscription do you have?
Team / workspace-authenticated Codex.
Which model were you using?
The job intentionally omitted --model. Its effective model changed automatically from gpt-5.6-sol to gpt-6-astra.
What platform is your computer?
Darwin 25.6.0 arm64 arm
What terminal emulator and version are you using (if applicable)?
Noninteractive macOS LaunchAgent; no terminal emulator.
Codex doctor report
Not available for the historical 0.153.0 run. Paths, account identifiers, prompts, and session IDs below are sanitized.
What issue are you seeing?
An hourly, noninteractive codex exec job had run with the effective default gpt-5.6-sol for weeks. The command used --ignore-user-config and intentionally did not pass --model.
On 2026-09-04, two consecutive runs using Codex 0.153.0 produced different effective models without any change to the launcher or command:
- 18:00 UTC:
model: gpt-5.6-sol; the job completed. - 19:00 UTC:
model: gpt-6-astra; the request failed with HTTP 400 because the existing explicit settingmodel_reasoning_effort="none"is valid for Sol but unsupported by Astra.
The same unattended job subsequently recorded 169 Astra attempts through 2026-09-11. They failed with:
Unsupported value: 'none' is not supported with the 'gpt-6-astra' model.
Supported values are: 'low', 'medium', 'high', 'xhigh', and 'max'.
This creates two problems for unattended users:
- Omitting
--modelallowed the effective model to change underneath a stable automation, apparently as Astra availability/default selection rolled out. - Codex combined the newly selected model with an incompatible configured reasoning effort instead of retaining the previous model, migrating to a supported effort, or failing locally with guidance before issuing a model request.
This is particularly difficult to diagnose because the job is external to the Codex Scheduled Jobs UI. Repeated failed invocations may also make account usage appear to drain in the background, although the logs do not provide enough billing data to say whether rejected requests were charged.
What steps can reproduce the bug?
The historical command shape was:
codex exec \
--ephemeral \
--ignore-user-config \
--ignore-rules \
--strict-config \
--sandbox workspace-write \
--skip-git-repo-check \
-c 'model_reasoning_effort="none"' \
--disable apps \
--disable plugins \
'Return OK and stop.'
Do not include --model. Run it under workspace authentication before and after Astra becomes the account/client default, or simulate that default-selection transition. Observe that the effective model can change while the explicit effort remains none.
The production mitigation was to pin both values explicitly:
--model gpt-5.6-sol
-c model_reasoning_effort="low"
What is the expected behavior?
For noninteractive execution, one or more of the following should hold:
- The no-
--modeldefault is stable and documented for automation. - A server-side/account default change does not silently change the model used by an already deployed scheduled command.
- Codex validates the model/effort pair and chooses a supported default effort when the model was selected implicitly.
- Codex provides an explicit
--require-model/fail-closed option for unattended jobs.
At minimum, a newly implicit model must not be combined with a reasoning setting that it cannot accept.
Additional information
GPT-6 Astra was announced on September 3 and requires Codex CLI 0.153.0 or newer, which matches the observed transition boundary.
Possibly related but distinct: #44184 reports Codex Desktop restoring gpt-6-astra with stale reasoning_effort: none. This report concerns noninteractive CLI default-model selection with --ignore-user-config.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the noninteractive codex exec entry point and reproduce the supplied command across the model-default transition, observing model and reasoning-effort selection. Trace the model/effort validation path; done means an implicit model cannot be paired with an unsupported none effort and the behavior is covered by regression tests or clear fail-closed guidance.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- cli
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100