sessions-index.json out of sync with session files; /resume picker limited
Description
The sessions-index.json file is severely out of sync with actual session files on disk. In my case:
- 157 entries in
sessions-index.json - 613
.jsonlsession files on disk in the same project directory
This means ~74% of sessions are untracked by the index.
Issues
1. Index not updated on session creation
Many recent sessions (including the current active session) are not present in the index at all. This isn't limited to old sessions — brand new ones are missing too.
2. /rename custom titles not reliably persisted
I've renamed significantly more than 8 sessions using /rename, but only 8 have a customTitle field in the index. The rest show customTitle: "" or are missing from the index entirely.
3. /resume picker caps at ~10 sessions
The resume picker UI shows "1 of 10" and only displays the most recent sessions. Combined with the broken index, this makes it effectively impossible to find or resume older sessions through the UI. Ctrl+A (show all) doesn't expand the list beyond this cap.
Expected behavior
- The index should stay in sync with session files on disk
/renameshould reliably persist custom titles- The
/resumepicker should provide access to all sessions (or at least offer pagination/search that covers the full history)
Workaround
Sessions can still be resumed by ID using claude --resume <session-id>, but finding the right ID requires manually searching the .jsonl files or parsing sessions-index.json.
Environment
- macOS (Darwin 25.3.0)
- Claude Code used in both VS Code and Ghostty terminal
- 613 session files accumulated over ~2 months (Dec 2025 – Feb 2026)
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗