Codex Desktop fails to render legacy-mode thread histories that are fully intact on disk (post-migration-0040)
Summary
After the July 9 update, Codex Desktop displays radically shortened chat histories across multiple projects. Some tasks show only one prompt, one response, or no response, despite the raw session JSONL on disk containing the full conversation. This is a display/reconstruction defect for legacy history-mode threads, not data loss.
This appears related to (but is a distinct, verified data point for) the existing reports:
- #26236 — Chat history disappeared from sidebar after app update
- #27251 — Latest update only restores last-week chats; older histories still missing
- #25084 — Desktop hides project chat history while local threads remain on disk
- #23979 — Local conversation history missing after update; threads still exist in state_5.sqlite
- #21734 — All historical conversations missing after auto-update; local data intact
Environment
- Codex Desktop 26.715.31251, macOS (Apple Silicon)
- Database migration 0040 (
threads_history_mode) applied 2026-07-09 20:22:52 - All 325 local threads are marked
history_mode = 'legacy'
Audit performed (full local storage audit)
- Database thread records: 325
- Records with existing raw session files: 325 (missing: 0)
- Raw JSONL files verified byte-complete; pre-July-9 files unmodified except 2 that were legitimately resumed
- Compaction events exist in only 37 sessions — cannot explain the widespread truncation
- Conclusion: no mass deletion or rewrite occurred; the raw histories are complete on disk, but Codex Desktop's legacy-history reconstruction/rendering shows only a fraction of them
Concrete reproducible example
Thread 019f32f7-ac86-7450-b35d-6034112268f7 ("Condense website art ideas", 2026-07-05):
- Raw JSONL: 4 user turns, 4 assistant responses, 51 records, ~435 KB
- Codex Desktop displays only a small fraction of this conversation
Second example: thread 019f32e2-d384-7001-b6cf-73a502c2f990 displays a prompt with no assistant response, while the corresponding archived task 019f32e5-8cbd-7ae1-a110-81ba62feabee contains the preserved responses.
Why this looks like a legacy-history rendering regression
- Migration 0040 only adds a label column (
ALTER TABLE threads ADD COLUMN history_mode TEXT NOT NULL DEFAULT 'legacy';) — it does not convert or delete anything. - The truncation coincided exactly with the introduction of the projection-backed paginated history architecture.
- 325/325 indexed raw files exist and contain the missing turns; the app simply does not render them.
- The problem spans multiple projects and both active and archived sessions.
Asks
- Is Desktop 26.715.31251 known to mis-render
legacyaccumulated-prompt histories? - Is there (or will there be) an official legacy → paginated/projection backfill so legacy threads render fully again?
- If useful, I can provide thread IDs, timings, and structural metadata (not chat contents) for debugging.
Raw chat contents available on request with explicit authorization only.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗