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 💬 1 comment Opened Aug 24, 2026 by alexchexes
💡 Likely answer: A maintainer (github-actions[bot], contributor) responded on this thread — see the highlighted reply below.

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

View original on GitHub ↗

1 Comment

github-actions[bot] contributor · 3 days ago

Potential duplicates detected. Please review them and close your issue if it is a duplicate.

  • #40446

Powered by Codex Action