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

Open 💬 2 comments Opened Jun 5, 2026 by Youyou972
💡 Likely answer: A maintainer (github-actions[bot], contributor) responded on this thread — see the highlighted reply below.

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 ↗

2 Comments

github-actions[bot] contributor · 2 months ago

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

  • #26161
  • #26647
  • #26634
  • #26227
  • #25233

Powered by Codex Action

Youyou972 · 2 months ago

I checked the duplicate suggestions.

This is related to the same general Desktop session/sidebar problems, but I think it has one extra failure path worth keeping unless you want to merge it into an existing tracker.

  • #26161 is the closest match. It covers pinned/sidebar restore getting into an unsafe state. In this case, the extra detail is that set_thread_pinned succeeded even though the thread could not be managed normally and set_thread_title failed with No AppServerManager registered for conversationId: .... Clicking the pinned entry then crashed the app.
  • #26647 and #26634 cover the “thread exists and can be read by id, but search/sidebar cannot find it” part.
  • #26227 and #25233 cover side-chat persistence/expiry. This issue is related, but the immediate bug here is that the recovered side/review thread became unsafe to open through the pinned UI.

So this may be the same root cause as one of those, but the concrete invariant that broke here is: if the app cannot load/manage a thread, pinning it should not create a sidebar entry that can crash the app.