macOS Desktop sidebar hides older local conversations despite existing thread state
What version of the Codex App are you using (From "About Codex" dialog)?
Codex Desktop: 26.422.71525 (CFBundleVersion 2210)
What subscription do you have?
ChatGPT Pro
What platform is your computer?
macOS 15.6.1 (24G90)
Darwin 24.6.0 arm64
What issue are you seeing?
Older Codex Desktop conversations disappear from the left sidebar / project grouping after normal use over time, even though the local thread data still exists on disk.
This looks like a sidebar/history visibility bug rather than intentional archiving or deletion:
- The user did not explicitly archive the missing threads.
archived_sessions/exists separately and accounts for archived threads.- Active rollout files still exist under
~/.codex/sessions. - SQLite and
session_index.jsonlstill contain substantial thread history. - Promoting affected threads back into the recent window by updating metadata can make them visible again, which suggests the sidebar is relying on a limited recent-thread preload rather than loading full workspace history.
Current local evidence, with paths and project names intentionally redacted:
~/.codex/state_5.sqlitecontains201thread rows.160rows are active / unarchived.41rows are archived.- There are
23distinctcwdvalues in SQLite. ~/.codex/sessionscontains160active rollout JSONL files.~/.codex/archived_sessionscontains41archived rollout JSONL files.~/.codex/session_index.jsonlcontains230lines but only194unique thread ids.- A dry-run repair found:
28duplicate ids insession_index.jsonl6thread ids missing fromsession_index.jsonl24orphan index ids176valid session-file threads201SQLite thread rows25malformed/truncated session JSONL files that had to be skipped
This means the local state is not simply empty, but the Desktop sidebar can still behave as if older project conversations no longer exist.
Related existing issues:
- #14751: Desktop app sidebar only shows loaded recent subset, not full workspace history
- #16095: Mac app stops showing local threads even though local thread data still exists
- #17304: Desktop project sidebar hides active threads after state DB migration drift and stale temporary sessions
- #17540: Windows app variant where older local threads disappear from sidebar/search while still present on disk
What steps can reproduce the bug?
I do not have a minimal clean-room repro yet, but this is the observed workflow:
- Use Codex Desktop normally on macOS across many local workspaces/projects.
- Accumulate many Codex conversations over time.
- Reopen Codex after some days / restarts.
- Older conversations that were previously visible in the left sidebar are no longer visible under their project/workspace grouping.
- Inspect local state:
- active rollout JSONL files still exist under
~/.codex/sessions - archived rollout JSONL files are separate under
~/.codex/archived_sessions state_5.sqlitestill contains many active thread rowssession_index.jsonlmay contain duplicates, missing ids, or stale orphan ids
- Promote a small set of affected workspace threads back into the recent window by updating metadata only.
- Restart Codex Desktop.
- Those threads can reappear in the sidebar, which indicates this is a visibility / recent-window / index issue rather than intentional archive.
The dry-run repair tooling also had to skip malformed/truncated session JSONL files instead of aborting the whole repair. That may be a separate persistence robustness issue, but it contributes to sidebar/index drift.
What is the expected behavior?
Codex Desktop should continue to show local unarchived conversations unless the user explicitly deletes or archives them.
Specifically:
- Expanding a project/workspace should load the full local conversation history for that workspace, or page through results until exhausted.
- Sidebar search should be able to find locally existing unarchived threads, even if they are older than the initial recent-thread window.
- A project/workspace should not appear empty just because its threads fall outside the global recent preload.
session_index.jsonldrift should be repaired or tolerated without hiding valid local sessions.- Malformed session JSONL files should be reported and skipped, not cause the whole local history scan to fail.
- If filesystem mtime, SQLite
updated_at,updated_at_ms, andsession_index.jsonl.updated_atall participate in reindexing, they should be documented and reconciled consistently.
Additional information
This does not appear to be a user-facing "automatic archive after a few days" feature. I could not find official documentation saying Codex Desktop intentionally archives or hides local conversations after a time window.
The practical behavior is nevertheless similar to auto-archiving from the user's perspective: after enough time / enough newer threads, older conversations disappear from the sidebar even though they still exist locally.
Potential fixes:
- When expanding a project/workspace, query local threads by exact
cwd/ workspace root rather than grouping only the globally preloaded recent subset. - Add proper pagination for project/workspace thread lists.
- Make sidebar search query the full local thread store instead of only loaded recent state.
- Add a supported local reindex/repair command for
sessions,session_index.jsonl, andstate_5.sqlite. - Avoid treating malformed individual session files as fatal to broader history discovery.
No raw rollout files, database files, or local paths are attached because they can contain private prompts, project names, and filesystem paths. Redacted artifacts can be provided if maintainers want specific diagnostics.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗