codex resume --all does not list existing local sessions, while resume <session-id> can open them
What version of Codex CLI is running?
0.125.0
What subscription do you have?
ChatGPT Plus
Which model were you using?
gpt-5.4-mini, gpt-5.4, gpt-5.4, gpt-5.5, etc
What platform is your computer?
Darwin 25.4.0 arm64 arm
What terminal emulator and version are you using (if applicable)?
Terminal.app and VSCode integrated terminal
What issue are you seeing?
Existing local sessions still exist under ~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl.
However:
codex resume --all
shows "No sessions yet".
Direct resume by session id works:
codex resume <session-id>
Example:
codex resume 019dd81b-cdcd-7da1-8b5a-ee131f2f004a
This suggests the local session files still exist and are readable, but the session picker/index is stale, corrupted, or not rebuilt.
The issue started after switching authentication/config from API key custom provider to ChatGPT account login.
The same local-state issue also appears to affect the VSCode Codex extension because it uses the same ~/.codex directory.
What steps can reproduce the bug?
- Use Codex CLI with existing local sessions stored in ~/.codex/sessions.
- Confirm rollout files exist, for example:
~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl
- Change authentication/configuration (in my case: switched from API key custom provider to ChatGPT login).
- Run:
codex resume --all
- Observe the picker shows "No sessions yet".
- Run:
codex resume <existing-session-id>
- Observe the session can still be opened or partially resumed.
Expected:
resume --all should list all valid local sessions.
Actual:
resume --all shows no sessions even though valid local sessions exist.
What is the expected behavior?
codex resume --all should detect and list all valid local sessions stored under ~/.codex/sessions.
If local index files are stale or missing, Codex should automatically rebuild the session picker from existing rollout session files.
Sessions that can be opened with:
codex resume <session-id>
should also appear in the resume --all picker.
The VSCode extension should show the same local sessions when it uses the same ~/.codex state directory.
Additional information
Relevant local files existed during the issue:
~/.codex/sessions/**/*.jsonl
~/.codex/history.jsonl
~/.codex/session_index.jsonl
~/.codex/state_5.sqlite
~/.codex/logs_2.sqlite
The problem began after switching authentication/configuration from API key custom provider to ChatGPT login.
Direct resume by session id still works, which suggests the sessions themselves are not lost.
This looks like a local session index / picker synchronization problem rather than missing session data.
5 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Short summary for maintainers:
I found a likely root cause and prepared a tested patch, but I cannot open a PR because the upstream repo rejects
CreatePullRequestfrom my fork.Issue:
Filtered
thread/listcan reconcile SQLite DB hits but still return the filesystem scan page. This can omit valid indexed sessions from resume/fork pickers even though directcodex resume <thread-id>works.Patch:
Return the repaired SQLite indexed page after reconciliation, while preserving the existing filesystem fallback on DB failure.
Branch:
https://github.com/minsing-jin/codex/tree/fix/resume-picker-indexed-filter-results
Compare:
https://github.com/openai/codex/compare/main...minsing-jin:codex:fix/resume-picker-indexed-filter-results
Validated with:
just fmtjust fix -p codex-rolloutcargo test -p codex-rollout --manifest-path codex-rs/Cargo.tomlIf this direction matches the maintainers' expectations, would you be open to inviting a PR from my fork or advising the preferred next step? I'm happy to help with additional QA and regression coverage for resume/listing reliability.
I have a proposed fix available in my fork, but PR creation is restricted to collaborators on this repository.\n\nBranch: https://github.com/minsing-jin/codex/tree/fix/resume-picker-indexed-filter-results\nCommit: https://github.com/minsing-jin/codex/commit/a45684b388280879b6b995ccf0e2d46eb3bbda2b
The picker/index path should probably treat the filesystem scan as the recovery source of truth.
If
codex resume <id>can open a rollout butresume --allomits it, the list path can rebuild a degraded row from the JSONL: session id, file path, first/last timestamps, cwd if parseable, parser version, and parse status. SQLite hits and filesystem hits should be reconciled before filtering.---
_Generated with ax._
I’m testing Codex Rescue
0.1.0a3against local session-discovery failures. Your case is a strong fit becausecodex resume --allloses the sessions while direct resume by ID can still reach them and the rollout files remain on disk.Rescue discovers local rollout sessions independently of the normal picker/index and does not modify Codex SQLite/index files.
If the state still reproduces, would you be willing to try:
I’d be especially interested in whether
sessionsfinds entries thatcodex resume --allmisses. Sanitized output only; please don’t post raw rollouts, prompts, DBs, credentials, or private paths.https://github.com/shleder/codex-rescue