openai / openai/codex

Voice exit leaves hidden overlay owning the thread; primary UI remains thinking

Open
#44,645 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

app app-server bug windows-os
Dominant language
Rust
Stars
125k
Forks
19.4k
PR merge metrics
PR metrics pending

Description

Voice exit leaves hidden overlay owning the thread; primary UI remains thinking

Desktop package: OpenAI.Codex 26.903.9818.0, running as ChatGPT.exe on Windows. Built-in Check for Updates reports up to date.

User impact: after ending voice, the main UI can remain thinking indefinitely and submitted text/replies appear missing. Force-quit/relaunch recovers it. Repeated during the same day.

Observed sequence on September 10, 2026 (UTC):

  • 20:05:10: avatarOverlay became thread owner; primary changed owner to follower.
  • 21:07:15: thread/realtime/stop succeeded.
  • No later ownership transition released the overlay in that desktop run.
  • 21:09 onward: hidden avatarOverlay sent turn/steer requests that returned "no active turn to steer"; built-in fallback immediately started new turns successfully.
  • Persisted session confirms completed final answers at 21:07:20, 21:09:15, 21:10:04, 21:10:26, and 21:11:12.
  • Navigating away/back at 21:10 did not transfer ownership: primary re-entered as follower of the same hidden overlay.
  • After relaunch, primary became owner at 21:11:34. Subsequent turns completed normally; no no-active-turn failures appeared in the new run.

Important: the no-active-turn fallback itself works. Backend computation is not hung in these examples. The evidence points to thread ownership/state synchronization between the hidden avatar overlay and main window after realtime stop. Exact causal code defect is not established.

Suggested investigation: ownership lifecycle and final turn-state propagation after realtime stop, including owner release/transfer and primary rehydration from persisted completed turns.

Acceptance test: start voice from an existing thread, end it, send text, confirm exactly one completed answer appears and persists, with no permanent thinking indicator or force-quit. Repeat across several voice-end cycles. Include the floating overlay path.

This report contains no raw conversation, credentials, private thread identifiers, usernames, or full logs.

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

Trace the ownership lifecycle around realtime stop, hidden avatarOverlay ownership, primary-window rehydration, and persisted completed turns. Reproduce the floating-overlay path by ending voice, then sending text across several cycles. Done means one completed answer persists each time, the primary UI stops thinking, ownership transfers correctly, and no force-quit is needed.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
desktop
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.