Cross-thread message silently changes receiver model and reasoning effort

Open
#34,520 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
48/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Quiet
Tech stack
rust

Research direction

Start with the app-server turn/start and send_message_to_thread entry points, then trace handling of the incoming codex_delegation in the receiver. Use the reproduction steps and sanitized receiver rollout lines 58738, 58742, 58749, 58750, and 58752. Done means the receiver keeps its own model and reasoning effort after cross-thread reports.

Written by the indexing model from the issue text.

Description

app app-server bug windows-os

Codex Desktop bug: cross-thread message changes receiver model

Summary

When a background Codex task configured as gpt-5.6-terra / medium sends a
delegation/report to a foreground task configured as gpt-5.6-sol / high, the
foreground task is silently changed to gpt-5.6-terra / medium after handling
the incoming report.

This is a cross-thread settings leak. The receiver did not request a model
change.

Environment

  • Surface: Codex Desktop on Windows
  • Codex CLI/app-server version recorded in session metadata: 0.144.0-alpha.4
  • Receiver thread: ******
  • Receiver intended setting: gpt-5.6-sol / high
  • Sender setting: gpt-5.6-terra / medium

Minimal observed sequence

  1. 2026-07-21T10:31:16.492Z: receiver log records
    thread_settings_applied with gpt-5.6-sol / high.
  2. 2026-07-21T10:31:16.567Z: receiver accepts an incoming
    <codex_delegation> from thread
    ******.
  3. Receiver completes that turn normally.
  4. 2026-07-21T10:32:29.403Z and 10:32:32.033Z: without a user model
    selection, receiver log records thread_settings_applied with
    gpt-5.6-terra / medium.
  5. The next turn receives a developer <model_switch> message.

Expected behavior

The destination/background thread may use its own model override. Receiving a
message from that thread must not mutate the foreground/receiver thread's model
or reasoning effort.

Actual behavior

The source thread's terra / medium setting is applied to the receiver.

Relevant product contract

The Codex app-server manual states that optional fields on turn/start
override the model for the target threadId. The send_message_to_thread
tool also says to omit model/thinking to retain the target thread's settings.
Neither contract permits changing the sender or receiver of a separate
cross-thread report.

Reproduction

  1. Open foreground thread A with gpt-5.6-sol / high.
  2. Open background thread B with gpt-5.6-terra / medium.
  3. Send a delegation/report from B to A.
  4. Complete the incoming-report turn in A.
  5. Observe that A changes to gpt-5.6-terra / medium and receives
    <model_switch> on the next turn.

Workaround used

  • Do not pass model or thinking in follow-up message tool calls.
  • Stop push-style reports from background tasks to the foreground task.
  • Poll background tasks with read-only thread inspection instead.
  • Manually restore foreground model to gpt-5.6-sol / high after a leak.

Log location (not attached wholesale)

The full local rollout is about 270 MB and may contain project/user content, so
it should not be uploaded unredacted. Relevant event lines are 58738, 58742,
58749, 58750, and 58752 in the receiver rollout JSONL. Attach only a sanitized
excerpt if support requests it.

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.