Silently switched models and cost extra time and tokens to fix.

Open
#33,418 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
35/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Quiet
Tech stack
rust
Domain
cli

Research direction

Start with the uploaded thread 019f66dc-8ca7-74e1-a825-d91c7fc7c427 and the model-setting events described in the report; reproduce on Codex CLI 0.144.4 using the selected Luna model. Trace where the forced switch occurs and verify that a user's model is not changed silently during a stream. Done means the selected model remains in use unless the user explicitly changes it.

Written by the indexing model from the issue text.

Description

bug CLI model-behavior
What version of Codex CLI is running?

codex-cli 0.144.4

What subscription do you have?

$20/month

Which model were you using?

luna light

What platform is your computer?

Darwin 25.5.0 arm64 arm

What terminal emulator and version are you using (if applicable)?

wezterm

Codex doctor report
codex doctor returned overallStatus: "fail".

  1. Failure: ChatGPT HTTP endpoint unreachable.
  2. Warning: WebSocket DNS lookup failed.
  3. Warning: Homebrew update check could not resolve formulae.brew.sh.
  4. All auth, config, installation, databases, rollout parity, Git, MCP, and
     search checks passed.

  5. Installed version: 0.144.4.

  Important: this command ran inside Codex’s restricted-network sandbox, so the
  network failures likely describe the diagnostic process’s sandbox access—not
  necessarily your Mac’s normal connectivity.
What issue are you seeing?

name: reference_oai_model_switch_cost
description: "Verified token-cost ledger for the 2026-07-15 forced Luna-low model switch and remediation"
metadata:
node_type: memory
type: reference

OAI forced-model-switch cost ledger

Source of truth: local Codex rollout JSONL token-count and thread-settings events. Aggregate tokens
include cached input. Reasoning tokens are reported separately by Codex metadata and may be a subset
of output accounting. Do not represent aggregate tokens as an API bill without OpenAI's pricing and
cache treatment; they are the exact product-reported consumption counter.

Incident boundary

  1. Pre-switch counter, 2026-07-15 15:25:25 EDT: 15,195,167 total tokens; weekly limit 11%.
  2. Forced setting applied, 15:25:46 EDT: gpt-5.6-luna, reasoning effort low.
  3. Restored setting applied, 16:01:30 EDT: gpt-5.6-sol, reasoning effort medium.
  4. First restored-model counter, 16:01:30 EDT: 27,401,495 total tokens; weekly limit 23%.

Forced-Luna interval consumption: 12,206,328 aggregate tokens:

  1. Cached input: 11,630,080.
  2. Uncached input: 563,303.
  3. Output: 12,945.
  4. Reasoning output reported separately: 4,130.

Remediation snapshots

  1. 16:04:05 EDT: 28,613,671 total; remediation since restoration 1,212,176; incident total
    13,418,504; weekly limit 25%.
  2. 16:06:56 EDT: 29,261,044 total; remediation since restoration 1,859,549; incident total
    14,065,877 aggregate tokens; weekly limit 27%.
  3. 16:08:46 EDT, immediately before the full repair pass: 31,016,552 total; weekly limit 28%.
  4. 16:15:51 EDT, after tracker reconstruction, corrective logging, commit/push, and Sisyphus
    reconciliation: 31,973,633 total; repair-pass cost 957,081; remediation since restoration
    4,572,138; full incident cost 16,778,466 aggregate tokens; weekly limit 32%.

What the remediation is correcting

  1. False ChatGPT 366th-record repair claim.
  2. Group C triage vs distillation conflation.
  3. Raw-Markdown screenshot misdiagnosis.
  4. Obsidian symlink visibility failure and unverified success claim.
  5. Duplicate visible/hidden tracker sources of truth.
  6. Incomplete five-row lifecycle matrix followed by an unsynchronized 19-row revision.
  7. Inconsistent lifecycle-stage semantics and stale three-stage pipeline text.
  8. Mac/Sisyphus/GitHub divergence and untracked Group C residue.
  9. Append-only project-log discipline violations.

Update this ledger from the rollout JSONL after each remediation block. Keep forced-interval cost and
remediation cost separate, and report the weekly-limit percentage change.

What steps can reproduce the bug?

Uploaded thread: 019f66dc-8ca7-74e1-a825-d91c7fc7c427

What is the expected behavior?

Don't silently switch models on your users mid stream.

Additional information

I did not choose to switch models.

Dominant language
Rust
Stars
125k
Forks
19.5k
Avg merge
1m
Merged PRs (30d)
1k

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.

More from openai/codex

All issues in openai/codex

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.