Data loss: resumed-thread errors due missing rollout JSONL files (state still has threads, files gone)
Open 💬 5 comments Opened May 5, 2026 by ywkuno
Environment
- Date: 2026-05-05 (local timezone)
- Platform: Codex Desktop (local session data under
C:\Users\[redacted]\\.codex)
What happened
Attempting to resume a thread failed with a missing rollout file error.
This was not an isolated thread: all historical thread payloads appear to be missing from disk while metadata rows remain.
Findings
state_5.sqlitecontains 91 rows inthreads.session_index.jsonlcontains 1 entry.- Only 1
rollout-*.jsonlfile exists in session storage. - 90 other thread IDs in
threadspoint to missingrollout_pathfiles. - The broken path reported in the failure is:
C:\Users\[redacted]\.codex\sessions\2026\05\05\rollout-2026-05-05T21-23-50-<redacted>.jsonl
This appears to be a case where durable chat payloads were removed without corresponding metadata cleanup, causing previously available history to become unreachable.
Expected behavior
- Rollout files should not disappear silently while metadata remains.
- If files are missing, the system should provide recovery/repair guidance and avoid orphaning threads.
Severity
High (multiple days of user history become inaccessible).
5 Comments
Additional context from latest report: user says this happened while ~3 threads were still active. I rechecked local storage and confirmed the same pattern: hreads table has 91 entries, but only 1 rollout file exists on disk, meaning 90 JSONL payloads are missing. This isn’t a single missing thread; it’s effectively all historical chat payloads unavailable while metadata remains. No filesystem search in .codex or nearby AppData/Documents paths found backups for those rollout files.
Follow-up from user backup check: both desktop backup folders are state-only (state_5.sqlite + shm/wal), contain no rollout jsonl payload files. Thread rows in backup DBs: 125/126, with 0 existing rollout files for all referenced paths right now. First folder also has .codex-global-state.json (app metadata), not chat payload.
Update: checked plugin recovery path. .codex still contains plugin framework files (cache/runtime runtime bundles, plugin directories, and marketplace catalog), but UI shows all plugins as not installed and config.toml only has 4 enabled plugin entries (documents/spreadsheets/presentations/browser-use). No other plugin-install-state files found in .codex that could reconstruct previous install list. This suggests installed plugin state was likely reset/disconnected even though binaries and marketplace manifest remain intact.
Additional redacted forensic findings after correlating Codex Desktop logs, Codex app-server logs, surviving state DBs, and Windows event timing. All times below are UTC; user/profile paths, project names, rollout filenames, thread IDs, and raw chat/log contents are intentionally withheld.
Observed sequence:
2026-05-05T13:45:40Z-13:45:53Z, multiple Codex threads were still active and receiving/streaming model responses.2026-05-05T13:45:48Z, Codex Desktop sentwindowsSandbox/setupStartto the app server.2026-05-05T13:45:50Z-13:45:55Z,codex-windows-sandbox-setup.exeran. The sandbox log records sandbox-user setup, firewall rule setup, and aread-acl-only mode: applying read ACLspass. That pass touched user-profile app-state paths outside the active project, plusLocalAppData; exact paths withheld because they reveal private local app usage.2026-05-05T13:45:55Z, Codex emittedwindowsSandbox/setupCompleted.2026-05-05T13:46:02Z, the Codex app-server process had restarted/changed process identity.2026-05-05T13:46:04Z, Codex Desktop repeatedly attemptedthread/resumeand failed withfailed to resolve rollout path ... The system cannot find the path specified. (os error 3)for active/recent threads.app_server_restart_recovery_failedfor at least one active conversation immediately after these resume failures.Scope / persistence findings:
Why this looks Codex-triggered:
The first confirmed failures occur immediately after the Codex Desktop sandbox setup event and app-server restart/recovery path, before the OS reboot. The critical pattern is: active sessions running ->
windowsSandbox/setupStart/ sandbox setup -> app-server restart -> repeatedthread/resumemissing-rollout errors -> recovery failure -> user reboot.Suggested areas to investigate:
.codex/sessions, plugin state, memories, or adjacent user-profile app-state paths.read-acl-onlysandbox setup path is guaranteed non-destructive and properly scoped.logs_2.sqliteor another durable store instead of making the conversation unrecoverable.I can provide private evidence bundles or exact redacted-to-unredacted mappings through a private support channel, but I do not want to post raw logs or full local paths publicly because they contain private chat/project/account data.
Same signature at larger scale on Windows: 417 of 431 threads lost on 2026-08-06,
thread index in state_5.sqlite intact, rollout files gone, no error logged at the
time of deletion. Full write-up with timestamps and eliminated causes: https://github.com/openai/codex/issues/37419