openai / openai/codex

[Android][Remote Voice][Windows] Archived Voice thread remains active on mobile

Open
#37,841 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

Summary

After ending and archiving a Codex Realtime Voice thread from ChatGPT Remote on Android, the archived Voice session remained shown as active on the mobile device and could not be stopped.

On the Windows host, no active rollout existed for the retained recent-Voice thread ID, while desktop global state still contained a realtime-voice-most-recent-thread pointer referencing an archived thread. Restarting the desktop host and removing only that stale pointer cleared the host-side stale state.

Environment

  • Host: Windows x64, build 26200
  • Codex Desktop: 26.803.5235.0
  • Bundled Codex CLI: 0.147.0-alpha.6.5
  • Client: ChatGPT Android app using Codex Remote Voice
  • Observed: 2026-08-10

Steps to reproduce

  1. Start a Codex Remote Voice session from the ChatGPT Android app against a Windows desktop host.
  2. End or stop Voice.
  3. Archive the Voice thread.
  4. Observe that the thread is archived, but the mobile client still shows Voice as active and the stop control does not end it.

Expected behavior

Ending or archiving the Voice thread should terminate any associated Realtime transport, reconcile the recent-Voice pointer, and make the mobile client leave its active state. Repeated stop/archive requests should be safe and idempotent.

Actual behavior

The persistence/archive state and Voice transport/client state diverge:

  • The Voice thread is archived.
  • Mobile continues to show the Voice session as active and cannot stop it.
  • The desktop host can retain a recent-Voice pointer to an archived thread even though there is no active rollout for that ID.
  • Recovery required restarting the desktop host and removing the stale recent-Voice pointer.

Sanitized runtime evidence

voice_pointer=<archived-thread-id>
active_rollout_count=0
archived_rollout_count=1

recovery:
  desktop_host_restarted=true
  recent_voice_pointer_removed=true

post_check:
  voice_pointer_present=false
  state_database_quick_check=ok
  state_database_foreign_key_errors=[]

The archived chat was preserved; no conversation was deleted. Raw thread IDs, local paths, transcript content, account identifiers, and raw state files are intentionally omitted.

Host-side recovery was verified. The mobile UI after recovery was not independently captured, so the likely lifecycle race below is an inference rather than a confirmed root cause.

Suspected lifecycle gap

This appears to be a reconciliation problem between three independently persisted states:

  1. thread archive state,
  2. the Realtime Voice transport,
  3. the mobile client's active-session state / desktop recent-Voice pointer.

Archiving is documented as moving the persisted thread log, but it apparently does not always close or invalidate the Voice transport and pointer atomically. See the App Server thread lifecycle documentation.

Related evidence

This report is distinct: the user-visible failure is an already archived Voice thread remaining active and unstoppable on Android.

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 with the App Server thread lifecycle documentation and compare related reports #35629, #36587, and #36761; then reproduce the Android-to-Windows archive flow while tracing the archived thread, Realtime transport, and recent-Voice pointer. Done means archiving or stopping leaves no active mobile session or stale pointer, and repeated requests are idempotent.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, rust
Domain
backend-api-design, desktop-dev, mobile-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.