Codex app crashes when opening pinned recovered side/review threads after restart/update

Open 💬 2 comments Opened Jun 5, 2026 by Youyou972

Summary

After a Codex app update/restart, some active threads and side chats became hard to find. One side/review thread was still readable by id, but it did not show up in search or the sidebar. When I tried to recover it by pinning/forking it, clicking the pinned entry crashed the Codex app.

There seem to be two related problems:

  1. A local side/review thread can become orphaned: readable by id, but missing from sidebar/search.
  2. Pinning or forking that recovered thread can create a sidebar entry that crashes the app when clicked.

Impact

  • It looks like work is lost even though the local thread still exists.
  • The user cannot safely open some recovered/pinned threads.
  • Side chats are difficult to recover after app restart/update.
  • A bad pinned entry can become a repeat crash trigger.

What happened

Observed while recovering project work after a Codex update.

Relevant ids:

  • Parent visible thread: 019e985a-cc21-7f13-af7c-516efa6fc47a
  • Orphaned side/review thread: 019e98ee-b189-71d2-8892-12a0964190f3
  • Fork created from that side/review thread: 019e9905-a22f-7e72-b433-d03067cfd5d2
  • Earlier pinned candidate, later unpinned: 019e176b-2f25-7a10-a379-ecfa2325e6b1

The side/review thread existed locally and was not archived:

id: 019e98ee-b189-71d2-8892-12a0964190f3
archived: 0
created: 2026-06-05 13:57:20
updated: 2026-06-05 14:18:31

It could be read directly by id, but search did not find it:

codex_app.list_threads query "019e98ee-b189-71d2-8892-12a0964190f3" -> []
codex_app.list_threads query "Codex agent history" -> []

Renaming it failed:

No AppServerManager registered for conversationId: 019e98ee-b189-71d2-8892-12a0964190f3

Pinning it still succeeded:

set_thread_pinned 019e98ee-b189-71d2-8892-12a0964190f3 pinned=true -> success

Forking it also succeeded:

sourceThreadId: 019e98ee-b189-71d2-8892-12a0964190f3
threadId: 019e9905-a22f-7e72-b433-d03067cfd5d2
environment: same-directory

The fork could be renamed and pinned:

set_thread_title 019e9905-a22f-7e72-b433-d03067cfd5d2 "Recovered side review fork" -> success
set_thread_pinned 019e9905-a22f-7e72-b433-d03067cfd5d2 pinned=true -> success

After that, clicking the pinned entries crashed the Codex app. I unpinned these ids as a workaround:

019e9905-a22f-7e72-b433-d03067cfd5d2
019e98ee-b189-71d2-8892-12a0964190f3
019e985a-cc21-7f13-af7c-516efa6fc47a
019e176b-2f25-7a10-a379-ecfa2325e6b1

Expected behavior

  • If a thread exists locally and is not archived, it should either show up in search/sidebar or have a clear recovery path.
  • If the app cannot load a thread because there is no AppServerManager for it, pinning should not silently succeed.
  • Clicking a pinned thread should never crash the app.
  • A forked side/review thread should be visible and safe to open.
  • Side/review threads should remain connected to their parent thread, or at least be recoverable after restart/update.

Actual behavior

  • Direct id read worked, but sidebar/search could not find the thread.
  • Rename failed with No AppServerManager registered.
  • Pinning still succeeded.
  • Clicking the pinned recovered/forked thread crashed the app.

Suggested fix areas

  • Validate that a thread is loadable before allowing it to be pinned.
  • Make pinned-thread navigation handle missing/unregistered app-server conversations safely.
  • Reconcile local thread rows, rollout files, archived state, and app-server registrations during startup.
  • Keep side/review threads linked to their parent in a way the UI can recover after restart.
  • Make thread search find readable local threads by exact id.

Workaround

I unpinned the affected entries. Forking the orphaned side thread did make a visible thread, but pinning/opening it from the pinned area still appeared unsafe.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗