[app][macOS][26.810.41047] Realtime voice leaves an orphan thread that cannot be opened, archived, or deleted

Open 💬 1 comment Opened Aug 17, 2026 by fire-hearts
💡 Likely answer: A maintainer (github-actions[bot], contributor) responded on this thread — see the highlighted reply below.

App version

ChatGPT/Codex Desktop 26.810.41047 (build 6570)

Subscription

ChatGPT Pro

Platform

macOS 26.4.1 (25E253), Apple Silicon arm64

Issue

A realtime voice conversation left a visible orphan entry in the Codex task sidebar. The entry cannot be opened, archived, or deleted.

Opening it shows:

Failed to resume conversation
failed to resolve rollout path `<CODEX_HOME>/sessions/2026/08/14/rollout-...jsonl`: file does not exist

Local inspection confirms an inconsistent state:

  • no matching rollout exists under sessions/ or archived_sessions/;
  • no matching row exists in state_5.sqlite.threads;
  • the app's global UI state still contains the thread ID in the projectless-thread list, permission state, thread-reference capability, and output-directory map;
  • the desktop logs repeatedly report failureReason=rollout_not_found and thread not loaded;
  • removing those stale UI references while the app is running does not work because the app writes them back.

Steps to reproduce

  1. Start a new realtime voice conversation in Codex Desktop.
  2. End or leave the voice conversation.
  3. Observe that the voice-created task remains in the sidebar.
  4. Try to open, archive, or delete the task.

The exact creation condition may be intermittent. Multiple realtime voice conversations have shown similar cleanup problems.

Actual behavior

The sidebar retains a task whose backing rollout and database record do not exist. Selecting it repeatedly attempts hydration and shows a recovery error. Because the thread cannot be loaded, normal archive/delete controls cannot clean it up.

Expected behavior

Realtime voice startup and shutdown should be transactional:

  • materialize the thread, database row, and rollout before exposing it as a normal task; or
  • if creation or shutdown fails, remove all provisional UI/index state;
  • when hydration detects rollout_not_found, offer a safe "Remove stale entry" action rather than leaving an undeletable sidebar item.

Related issue

This appears related to #35252, which reports failed cleanup of an unmaterialized provisional realtime voice thread on Windows. This report covers a macOS variant where the provisional entry survives as an orphan after both the rollout and database row are absent.

Privacy

The public report intentionally omits the account ID, full local username/path, conversation contents, exact thread ID, and contact email. These can be provided privately to OpenAI Support if required.

View original on GitHub ↗

1 Comment

github-actions[bot] contributor · 11 days ago

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

  • #38724

Powered by Codex Action