openai / openai/codex

An annotation sent with "Steer" now makes the active chat go blank while its turn continues invisibly and triggers about 60 thread-resume attempts per second

Open
#40,448 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug extension performance session
Dominant language
Rust
Stars
125k
Forks
19.4k
PR merge metrics
PR metrics pending

Description

What version of the IDE extension are you using?

openai.chatgpt 26.5818.61809-darwin-arm64

What subscription do you have?

Plus

Which IDE are you using?

VS Code

What platform is your computer?

Darwin 25.6.0 arm64 arm

What issue are you seeing?

The behavior reported in #40446 changed after updating the extension from 26.5727.51351 to 26.5818.61809.

It is now partially "fixed": the active-writer protection prevents the other VS Code windows from actually starting duplicate turns and writing to the same rollout and workspace concurrently. In both new reproductions, only one successful turn ran and only one file with one ordered TICK sequence was created.

However, an annotation sent with Steer still makes the other VS Code windows try to resume the same chat and become its owner. Their thread/resume requests then fail with thread-store conflict: thread ... already has an active writer, but by that point the original visible window has already been demoted from owner to follower, and its ownership is not restored.

Immediately after clicking Steer, the active chat goes blank and remains blank while the original turn keeps running "invisibly" and modifying the workspace. At the same time, the visible client remains stuck in the resuming/follower state and logs maybe_resume_started about 60 times per second. The loop continues even after the actual turn finishes. In one reproduction it exceeded 22,000 attempts and rotated the extension log.

So the new protection prevents the destructive concurrent writes from #40446, but the underlying cross-window ownership problem remains and now produces a different failure mode.

What steps can reproduce the bug?

Repeat the reproduction steps from #40446 with the extension version listed above.

After clicking Steer in step 6, the duplicate turns are rejected by the active-writer protection, but the visible chat immediately goes blank while its existing turn continues running. The resume loop described above starts at the same time.

I reproduced this twice after updating the extension.

What is the expected behavior?

The annotation should be handled exactly once by the current owner. Other VS Code windows should not try to resume the chat or take ownership from its active client.

The active chat should remain visible and continue showing its running turn, and no client should enter a continuous resume loop.

Additional information

Relevant extension log sequence from a clean three-window reproduction:

18:38:13.063  dormant windows: maybe_resume_started; previousResumeState=needs_resume; previousStreamRole=null
18:38:13.076  dormant window: role=owner
18:38:13.089  original visible window: role changed from owner to follower
18:38:13.105  dormant windows: thread-store conflict; thread already has an active writer
18:38:13.124  original visible window: maybe_resume_started; previousResumeState=resuming; previousStreamRole=follower
18:38:13.156  same maybe_resume_started event repeats, continuing at about 60 times per second

Bundled Codex CLI: 0.149.0-alpha.4.3

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 by repeating the reproduction steps from #40446 with the listed VS Code extension and Bundled Codex CLI versions, then inspect the extension logs around maybe_resume_started, resuming/follower, and thread-store conflict. Done means the current owner handles the Steer annotation once, the active chat remains visible, other windows do not take ownership, and no continuous resume loop occurs.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust, vscode
Domain
developer-experience, tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.