[macOS Desktop] Restoring one large VS Code-origin thread floods thread/items/list and resets IPC
What version of the Codex App are you using (From “About Codex” dialog)?
- Codex Desktop:
26.820.60940(build7119) - Bundled codex-cli/app-server:
0.150.0-alpha.8
What subscription do you have?
ChatGPT paid plan. The exact tier does not appear relevant because the failure occurs in the local Desktop renderer and IPC path before model execution.
What platform is your computer?
- macOS
26.5.2(build25F84), Apple Silicon uname -mprs:Darwin 25.5.0 arm64 arm
What issue are you seeing?
Codex Desktop repeatedly becomes unresponsive while restoring a large, recent, pinned thread that originated in the VS Code extension. The VS Code app and its app-server were fully closed during the reproduction, so this is not caused by two concurrently running app-servers.
The affected thread is unarchived, uses paginated history, and has approximately:
- 15,386 persisted display items
- 1.84 million reported tokens
- three persisted Desktop route entries
On one clean Desktop launch, the client issued 122 thread/items/list requests for only two threads within about 2.5 seconds. Of those, 114 targeted the affected thread. The app-server responses were fast:
- mean response time: 9.37 ms
- maximum response time: 60 ms
Immediately afterward, the Desktop main-process log recorded four window missing events, three ipc-connection-reset broadcasts, and one Stopping app-server transport event. The UI stopped progressing even though the app-server had answered the history requests quickly.
This sequence reproduced across five Desktop launches:
| Launch | thread/items/list calls | IPC resets | window missing | Transport stops |
| --- | ---: | ---: | ---: | ---: |
| 1 | 110 | 3 | 6 | 1 |
| 2 | 130 | 3 | 6 | 1 |
| 3 | 120 | 3 | 4 | 1 |
| 4 | 125 | 3 | 4 | 1 |
| 5 | 122 | 3 | 4 | 1 |
By contrast, a later launch that did not restore/open the large thread made only eight thread/items/list calls and recorded zero IPC resets, zero missing-window events, and zero transport stops. It remained responsive.
The evidence points to an unbounded or duplicated renderer hydration/restoration path, possibly amplified by stale or repeated window/tab routes. It does not look like slow rollout parsing or a slow app-server query.
No data loss has been observed, but the Desktop UI can become unusable and require relaunching.
What steps can reproduce the bug?
- Create or retain a very large local Codex thread in the VS Code extension. The reproduced thread had about 15.4k display items and 1.84M reported tokens.
- Keep that thread unarchived and pinned so it remains represented in shared/persisted Codex state.
- Fully quit VS Code and verify that its Codex app-server is no longer running.
- Launch Codex Desktop on macOS.
- Let Desktop restore the previous UI state, or open the pinned VS Code-origin thread.
- Observe a burst of more than 100
thread/items/listrequests for that single thread. - Observe that the Desktop window becomes unresponsive, followed by missing-window messages, IPC resets, and app-server transport shutdown in the main-process log.
- Relaunch Desktop without restoring/opening that large thread. The request burst and IPC reset sequence do not occur.
A minimal synthetic thread is not yet available. Private thread IDs, prompts, outputs, local paths, and raw logs are intentionally omitted. I can provide narrower sanitized diagnostics if maintainers specify what is needed.
What is the expected behavior?
- Desktop should remain interactive while restoring a large paginated thread.
- Initial hydration should have bounded item and byte budgets and should render the newest useful content first.
- Concurrent or repeated history requests for the same thread should be coalesced, deduplicated, or cancelled when the owning view/window disappears.
- Stale route or window state should be discarded without resetting IPC or stopping the app-server transport.
- Older history should load progressively and must not block the composer, task navigation, or active status.
- A single large pinned thread should not make the whole Desktop app unusable.
Additional information
Isolation checks performed:
- VS Code was fully closed.
- Only one Codex Desktop app-server remained running.
- The Chrome companion extension host was idle and did not correlate with the freezes.
- No plugin or MCP error correlated with the failure.
- Archiving old sessions and rotating a multi-gigabyte log database reduced local storage pressure but did not remove this failure, because the triggering thread is recent and pinned.
- The current small thread remains stable in the same Desktop installation.
Potentially related but not exact duplicates:
- #38653: count-only bootstrap budget for a large paginated turn
- #33786: repeated full replay of a completed large thread
- #39228: IPC churn and EPIPE in the macOS Desktop main process
- #40934: broad instability and eager restoration of long-running threads
The distinguishing signal here is the combination of a fast app-server, more than 100 item-list requests for one VS Code-origin thread during a short restoration burst, renderer/window loss, and the deterministic IPC reset/transport-stop sequence.
3 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
I reviewed the three automatically suggested issues. This report is related to the same general reliability family, but it is not an exact duplicate.
unknown conversationevents; it does not show the repeated history-request burst or IPC shutdown sequence.The distinguishing signature in #41148 is 114
thread/items/listrequests for one VS Code-origin thread in about 2.5 seconds, despite fast app-server responses, immediately followed by fourwindow missingevents, threeipc-connection-resetbroadcasts, and one app-server transport stop. This reproduced across five launches; avoiding that thread produced only eight list calls and zero resets.An exact search for both
thread/items/listandipc-connection-resetcurrently returns only #41148. The issues may share an architectural family, but closing #41148 as a duplicate would lose the macOS, cross-client restoration, renderer-window, and deterministic IPC evidence. It should remain separate or be linked as a specific child of a broader tracking issue.Follow-up diagnostic: thread/MCP lifecycle pressure alongside the IPC failure
A later clean-session diagnostic on the same macOS Desktop installation found a second pressure path alongside the original history-hydration/IPC signature. VS Code was closed and only one Desktop app-server was running.
During the inspected log window:
thread/resumerequeststhread/unsubscriberequeststhread/closednotificationsRepresentative backend calls in the same diagnostic remained fast:
thread/items/listabout 6 ms,thread/readabout 21 ms, andthread/listabout 24 ms. The UI nevertheless stalled twice. No explicitrenderer unresponsiveevent was emitted, so this supports renderer/lifecycle pressure but does not by itself prove a specific React loop.Duplicate review
The MCP-retention part is not novel and overlaps with:
node_replstacks on Windows#41166 is also related through large-thread restoration and renderer pressure, but it concerns concurrent multi-GB Windows threads, a
ResizeObserverstorm, and a whole-OS freeze.#41148 remains distinct: its reproducible signature is one large VS Code-origin thread on macOS, 114
thread/items/listrequests in about 2.5 seconds despite fast responses, immediately followed bywindow missing,ipc-connection-reset, and app-server transport shutdown. A search combining those IPC and item-list signals still identifies #41148 as the specific macOS/cross-client report.The new evidence therefore does not replace the original suspected failure path. It shows that the already-known per-thread MCP lifecycle behavior can materially amplify the renderer hydration/IPC failure.
The fix likely needs two independent bounds: