Codex Desktop becomes unresponsive when opening previous conversations; thread history loading appears too eager
What version of the Codex App are you using (From “About Codex” dialog)?
26.616.71553
What subscription do you have?
business
What platform is your computer?
Microsoft Windows NT 10.0.26200.0 x64
What issue are you seeing?
Problem
When opening previous conversations in Codex Desktop, the app often becomes very slow or temporarily unresponsive while loading conversation history.
logs showed slow thread operations:
thread/list: up to about29.9sthread/resume: up to about18.3sthread/start: up to about23.7s
This happens even with a relatively small number of saved sessions.
Local Findings
Raw file I/O does not appear to be the main bottleneck:
- Reading the largest
11.14 MBtranscript from disk: about38ms - Parsing that transcript as JSONL: about
176ms - Parsing all 25 session files, about
48 MB: about962ms
Isolated app-server tests using a temporary CODEX_HOME with only one copied session showed:
thread/listdefault scan:77msthread/listwithuseStateDbOnly=true:10msthread/read includeTurns=false:40-87msthread/read includeTurns=true:479msthread/turns/list summary 20:357msthread/resumedefault: about2.1s
So the long Desktop stalls are likely not caused by JSONL file size alone. They seem to come from higher-level Desktop/app-server behavior around session listing, resume semantics, plugin/network initialization, UI state, or foreground metadata repair.
During isolated app-server tests, thread/resume also attempted plugin/network-related work, including featured/curated plugin fetches and websocket connection attempts. That suggests thread/resume may be too heavy for simply opening/viewing an old conversation.
Expected Behavior
Opening the conversation list or clicking an old thread should remain responsive. The app should show lightweight metadata quickly and load detailed history progressively.
What steps can reproduce the bug?
The bug happens when opening/resuming previous conversations in Codex Desktop on Windows. The app can become very slow or temporarily unresponsive while loading local conversation history.
Observed affected session:
- Session ID:
019ed607-cdbe-7f52-b24e-ff56a519e8fd - Token/context window usage: not applicable / not captured. The slowdown occurs before sending a new prompt or starting a model turn. No new token generation is required to reproduce the loading issue.
Steps to reproduce:
- On Windows, use Codex Desktop with several saved local conversations under
~/.codex/sessions. - Ensure at least one previous conversation has a relatively large transcript. In my case:
019ed607-cdbe-7f52-b24e-ff56a519e8fd, about 11.14 MB.
- Open Codex Desktop.
- Open the previous conversation list / history.
- Click the old conversation above.
- Observe that Codex Desktop may become very slow or temporarily unresponsive while loading/resuming the conversation.
What is the expected behavior?
Opening a previous conversation should be responsive and fast.
Additional information
_No response_
5 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Thanks for writing this up. I am seeing a related Windows Codex Desktop performance regression in #28855: since June 12, opening/using Codex Desktop can cause severe intermittent mouse/typing/system input lag, and it still persists for me on
OpenAI.Codex 26.616.10790.0.I linked your report in a broader Discussion collecting recent Windows Desktop performance reports here: https://github.com/openai/codex/discussions/29949#discussioncomment-17428007
No action needed from you unless you want to add more detail there, but I wanted to connect the reports because the recent Windows issues look related enough that they may need a canonical tracker.
I can reproduce this issue with a newer Codex Desktop version.
Environment:
Additional findings:
excludeTurns: true
initialTurnsPage: { limit: 16, sortDirection: "desc", itemsView: "full" }
reduced the initial response to approximately 52 KB and improved overall responsiveness.
Suggested improvements:
The problem originally reproduced on the stock Codex Desktop app. The paging behavior above was only a local diagnostic workaround added afterward.
Additional Windows reproduction with a bounded read-only capture.
Environment:
CODEX_HOME(~/.codex)Symptom:
The largest stall was observed while opening the current existing task after a Desktop restart, before sending a new prompt. The UI was much less responsive during task/history opening than during ordinary idle use.
Capture window: 2026-08-01 21:56:40-22:06:36 local time.
Observed on the main
codex.exeprocess:Local state activity during the same capture:
state_5.sqlite-walgrew from about 1.02 MB to 2.99 MB.logs_2.sqlite-walhad 78 distinct metadata-update timestamps during the capture window, while its size stayed approximately constant in this sample.codex-code-mode-hostprocess appeared after the main I/O/CPU spike; its peak was substantially lower, so it does not look like the primary source of the opening stall in this run.Interpretation:
This is consistent with a heavy synchronous or foreground phase while reconstructing an existing thread/state and persisting local state. It is not a model-generation delay: the main spike occurred while opening the task, before a new prompt was submitted. File-level attribution is still needed to distinguish transcript hydration from SQLite/state reconstruction, logging, or app-server resume work.
Requested follow-up:
Please add phase-specific timings for opening/resuming a thread and expose whether the work is history parsing, state-db reconstruction, logging, plugin/network initialization, or renderer hydration. Opening a thread should load bounded metadata plus a recent tail, with older transcript/tool/image data loaded lazily; persistence/logging should not block the UI.
Related reports: #29177, #29674, and #29799.
Copy-ready comment for openai/codex#29590
I have additional single-host Windows evidence that supports the “history loading is
too eager” hypothesis and points to an app-server path that already exists.
Environment for this run:
26.727.6591.0(Microsoft Store/MSIX)0.145.0Controlled Desktop observations:
101.56 MBlegacy task took about3,050 msto resume, then the Desktop loadedten additional history pages over about
17,524 msafter the task was alreadyvisible.
53.14 MBtask took about1,316 msto resume, then loaded four additional pagesover about
5,380 ms.3.7logicalcore equivalents. This coincided with visible input/UI contention.
I then built a read-only lab client against a separate local Codex app-server. It did
not parse or modify rollout JSONL. It requested exactly five turns with
thread/turns/list,sortDirection: "desc", anditemsView: "summary", and requestedone older page only after an explicit action.
| Stored task size | Cold five-turn tail | Warm memory tail | One older page |
|---:|---:|---:|---:|
| 101.56 MB | 1,215–1,379 ms | 0.1 ms | 1,187–1,194 ms |
| 94.57 MB | 982 ms | 0.1 ms | 973 ms |
| 53.14 MB | 733 ms | 0.1 ms | 620 ms |
| active 13.55 MB task | 246 ms | 0.1 ms | 238 ms |
In the lab UI, selecting an active task rendered five turns in
199.2 ms; switchingaway and back was served from memory in
0.0 ms; loading once changed the renderedcount from exactly five to ten. Typing or switching tasks cancelled the pending read,
and a stale response could not replace the latest selection. A restart hit a bounded,
revision-checked DPAPI tail snapshot in
42.8 ms.This does not prove that a sidecar fixes Desktop, and I am not proposing a sidecar
as the product solution. It shows that a bounded tail-first client path avoids the
continued all-history DOM work seen in the Desktop baseline.
The app-server already exposes the relevant experimental resume path:
Suggested Desktop behavior:
thread.turnspayload and render only the initial 3–5 turnpage.
cursors in the background.
input, tool execution, or route teardown, cancel the old request and reject any late
stale result even if transport cancellation loses the race.
message DOM until the user asks for it.
Suggested acceptance criteria:
Related: #34663 documents the same
excludeTurns + initialTurnsPagedirection for theCLI/TUI resume surface.