openai / openai/codex

Unpinned codex exec switched from Sol to Astra and retained unsupported reasoning effort

Open
#45,009 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug CLI config exec
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 setting model_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:

  1. Omitting --model allowed the effective model to change underneath a stable automation, apparently as Astra availability/default selection rolled out.
  2. 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---model default 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.