Desktop App: paginated thread history is replaced by a single interrupted initial turn after update
What variant of Codex are you using?
Codex Desktop App on Windows 11, signed in through a ChatGPT account.
Summary
After a recent Desktop App update, previously completed tasks can open with only their first user message and a partial initial assistant response. The displayed turn is marked interrupted and no further history is available.
This is not lost rollout data: the canonical local JSONL for the same task contains the full completed conversation and tool activity.
Reproduction pattern
- Use Codex Desktop for a multi-turn task, including tool use and delegated tasks.
- Let the task complete or continue it across several turns.
- Update/restart Codex Desktop.
- Reopen the existing task.
- Observe that the UI shows only the initial turn as
interrupted; there is no available older/newer page.
Observed on two independent tasks.
Expected behavior
Completed tasks should display their complete historical turns after a Desktop App update or restart.
Actual behavior
The Desktop UI / thread reader returns only the first fragment of the conversation:
- first user message;
- partial first assistant message;
- turn status
interrupted; - no additional history (
hasMore=false).
Local evidence (redacted and aggregate-only)
For two affected Desktop tasks, the corresponding canonical rollout JSONL files parse cleanly and contain:
- task A: 18 user messages, 42 assistant messages, 15 completed turns;
- task B: 13 user messages, 67 assistant messages, 9 completed turns.
Both affected threads use history_mode=paginated. A comparable unaffected current Desktop thread uses legacy history. The primary local SQLite state passes integrity checks, and its rollout paths/timestamps match the complete JSONL files.
No raw prompts, credentials, project names, local paths, or thread IDs are included here.
Related issue
This looks like the Desktop/App manifestation of openai/codex#37577, which reports the same completed-rollout-to-interrupted reconstruction failure through CLI resume/app-server. The difference here is that it is visible directly in Codex Desktop UI after an update.
User feedback: Linux and Remote also show truncated paginated history
- Source: [https://github.com/openai/codex/issues/40342](<https://github.com/openai/codex/issues/40342>)
- Source: [https://github.com/openai/codex/issues/40342#issuecomment-5393483353](<https://github.com/openai/codex/issues/40342#issuecomment-5393483353>)
- Source: [https://github.com/openai/codex/issues/40342#issuecomment-5409222951](<https://github.com/openai/codex/issues/40342#issuecomment-5409222951>)
- Source: [https://github.com/openai/codex/issues/40342#issuecomment-5409937838](<https://github.com/openai/codex/issues/40342#issuecomment-5409937838>)
- Type: external
- User reports:
- “Reproduces across Linux Desktop, laptop Remote, and mobile Remote.”
- “the Desktop/thread reader returns only one
interruptedturn and reports no additional page” while the rollout contains later completed turns. - On a remote Ubuntu 24.04 host, “24/24 paginated-history threads have incomplete projections” and “The affected rollout files remain present and valid.”
2 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
I can corroborate this on a newer Windows Desktop build, with a precise restart/resume trace and an active Goal continuation.
Environment
26.818.5229.00.149.0-alpha.4.1Observed sequence (UTC)
task_startedat2026-08-25T14:25:27Zand persisted normal messages/tool items.14:31:48Z, Desktop loggedRecoverable Chromium child process gone ... processType=GPU reason=crashed exitCode=2.14:31:55Z, the same Desktop build launched again; there was no update or graceful-quit record.14:32:16Z, Desktop reported the initial turn aslatestTurnStatus=interrupted.14:32:56Z, Desktop issuedthread/goal/setand started a Goal continuation with a new turn ID.task_complete,turn_aborted, or another terminal lifecycle event for the initial turn.Resulting inconsistency
The rollout was about 131 MB at inspection time. A lifecycle snapshot contained 11
task_started, 8task_complete, 1 intentionalturn_aborted, and 1 then-active diagnostic turn, leaving exactly 1 historical orphaned start (the initial turn). It had also undergone 20 compactions.However, Desktop/app
thread/readreturned only the initial turn:The later completed turns were visible in the raw rollout but absent from the read model. The UI consequently placed very early setup commentary next to much later completion/follow-up messages, making old work appear current.
This was not project or rollout corruption: the Git worktree/commits were intact, JSONL parsed, the durable Goal had been cleared, and there were no queued follow-ups.
Why this case may help
This provides a concrete producer-side path for the orphan described here and in #40836:
Expected recovery behavior:
turn_id; an older orphan must not act as a pagination barrier.I did not edit the JSONL or SQLite state and have not attached raw logs because they contain private prompts, local paths, and tool output. I can provide a sanitized event fixture or submit the existing session through in-app feedback if maintainers need it.