[BUG] sessions-index.json contains stale/placeholder metadata after crash-recovery, breaking session resume from Desktop UI
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
After a crash-recovery event, sessions-index.json for a project gets rewritten with stale/placeholder metadata (wrong title, wrong creation timestamp) instead of preserving the correct reference to the original session. As a result, Claude Desktop's "Code" tab shows the session with a placeholder title, and attempting to resume it from the UI spawns a brand-new session with a different ID, losing access to the full history through the GUI — even though the original .jsonl transcript file is completely intact on disk.
Support has already confirmed the diagnosis (via a support ticket referencing this same session ID): the session file itself is intact, but sessions-index.json holds stale metadata after the crash-recovery process, which causes Desktop to create a new session ID instead of resuming the existing one. Filing this issue per their suggestion to track the underlying bug in the recovery process.
What Should Happen?
Opening the session entry ea4f3d01-75ca-4023-9651-c3fa98915277 from Claude Desktop's "Code" tab should load the exact same conversation history available via:
claude --resume ea4f3d01-75ca-4023-9651-c3fa98915277
with the correct title "Review Antigravity AI Advisor system architecture".
Error Messages/Logs
Steps to Reproduce
- Have a large Claude Code session (~30 MB / 7,000+ events) that was originally created from Claude Desktop (
entrypoint: "claude-desktop"). - Trigger (or experience) a crash that initiates the recovery process — evidenced here by a
backup/folder created on 2026-06-07 at 21:04, andsessions-index.jsonrewritten the same day at 21:03. - Reopen Claude Desktop → Code tab → Recents: the session entry shows a placeholder summary (
"Sessione Recuperata Post-Crash") instead of its real generated title. - Click to resume it: a new, empty session with a different ID opens, instead of the original (intact) history — which remains fully accessible and correct via
claude --resume <id>from the terminal.
Claude Model
Sonnet (default)
Is this a regression?
Yes, this worked in a previous version
Last Working Version
_No response_
Claude Code Version
2.1.149
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
Other
Additional Information
sessions-index.json contains stale/placeholder metadata after crash-recovery, breaking session resume from the Desktop "Code" tab
Summary
After a crash-recovery event, sessions-index.json for a project gets rewritten with stale/placeholder metadata (wrong title, wrong creation timestamp) instead of preserving the correct reference to the original session. As a result, Claude Desktop's "Code" tab shows the session with a placeholder title, and attempting to resume it from the UI spawns a brand-new session with a different ID, losing access to the full history through the GUI — even though the original .jsonl transcript file is completely intact on disk.
Support has already confirmed the diagnosis (via a support ticket referencing this same session ID): the session file itself is intact, but sessions-index.json holds stale metadata after the crash-recovery process, which causes Desktop to create a new session ID instead of resuming the existing one. Filing this issue per their suggestion to track the underlying bug in the recovery process.
Environment
- Claude Code version: 2.1.168 (CLI); session originally created with 2.1.149 (
entrypoint: "claude-desktop") - OS: Windows
- Project path:
C:\Users\lucaz\Documents\Agent_Finance - Session data path:
C:\Users\lucaz\.claude\projects\C--Users-lucaz-Documents-Agent-Finance\ - Affected session ID:
ea4f3d01-75ca-4023-9651-c3fa98915277
Expected behavior
Opening the session entry ea4f3d01-75ca-4023-9651-c3fa98915277 from Claude Desktop's "Code" tab should load the exact same conversation history available via:
claude --resume ea4f3d01-75ca-4023-9651-c3fa98915277
with the correct title "Review Antigravity AI Advisor system architecture".
Actual behavior
- The "Recents" entry in Desktop's Code tab shows a stale/placeholder title (
"Resume session ea4f3d01"/ underlying summary"Sessione Recuperata Post-Crash") instead of the real generated title. - Clicking that entry does not load the original conversation — instead Desktop spawns a new session with a different ID, with no prior history.
- The original session does not appear among archived sessions in Desktop either — it appears effectively "disconnected" from the index the UI relies on.
The CLI workaround (claude --resume <id>) works perfectly and loads the full 7,780-event history, because it reads the .jsonl transcript directly, bypassing the broken index.
Diagnostic evidence (collected from the filesystem)
A) The session transcript file exists and is intact
- File:
ea4f3d01-75ca-4023-9651-c3fa98915277.jsonl - Size: 30,103,050 bytes (~30 MB)
- Line count (jsonl events): 7,780
- Last modified: 2026-06-08 07:00
- The last
"ai-title"event recorded in the file matches exactly what the CLI shows:
````
"aiTitle":"Review Antigravity AI Advisor system architecture"
- The very first event in the file confirms the session was originally created by Claude Desktop:
``json``
{"...","entrypoint":"claude-desktop","cwd":"C:\\Users\\lucaz\\Documents\\Agent_Finance","sessionId":"ea4f3d01-75ca-4023-9651-c3fa98915277","version":"2.1.149",...}
B) A near-identical backup copy exists
- File:
backup\ea4f3d01-75ca-4023-9651-c3fa98915277.jsonl - Size: 28,944,204 bytes (~29 MB), 7,233 lines
- Same
aiTitleas the main file - The
backup/folder was created on 2026-06-07 21:04, presumably by a post-crash recovery routine
C) The index the Desktop UI reads is stale/out of sync
- File:
sessions-index.json(modified 2026-06-07 21:03 — one minute before the backup folder was created) - Full contents:
``json``
{
"entries": [
{
"sessionId": "ea4f3d01-75ca-4023-9651-c3fa98915277",
"created": "2026-06-07T20:00:00.000Z",
"summary": "Sessione Recuperata Post-Crash"
}
]
}
- The
summaryfield ("Sessione Recuperata Post-Crash", i.e. "Session Recovered Post-Crash") does not match the session's real generated title ("Review Antigravity AI Advisor system architecture"). - The
createdtimestamp (2026-06-07T20:00:00Z) does not match the session's actual creation date — the.jsonltranscript starts on 2026-05-27.
Suspected root cause
A crash-recovery process (which appears to have run around 2026-06-07 ~21:00–21:04, based on the modification times of backup/ and sessions-index.json) seems to have:
- Created a backup copy of the original session transcript file.
- Overwritten/regenerated
sessions-index.jsonwith placeholder metadata ("Sessione Recuperata Post-Crash"/ wrongcreatedtimestamp) instead of preserving or correctly updating the reference to the original session. - Left Desktop's index pointing to a "stub" reference that no longer matches the real
.jsonltranscript (30 MB / 7,780 events), causing the UI to spawn a brand-new session with a different ID whenever a resume is attempted from the GUI.
The original transcript file is not corrupted or lost — the bug is exclusively in the index/metadata that Claude Desktop uses to populate and resolve entries in "Recents" / archived sessions.
Steps to reproduce
- Have a large Claude Code session (~30 MB / 7,000+ events) that was originally created from Claude Desktop (
entrypoint: "claude-desktop"). - Trigger (or experience) a crash that initiates the recovery process — evidenced here by a
backup/folder created on 2026-06-07 at 21:04, andsessions-index.jsonrewritten the same day at 21:03. - Reopen Claude Desktop → Code tab → Recents: the session entry shows a placeholder summary (
"Sessione Recuperata Post-Crash") instead of its real generated title. - Click to resume it: a new, empty session with a different ID opens, instead of the original (intact) history — which remains fully accessible and correct via
claude --resume <id>from the terminal.
Suggested fix / request
- Review and fix the logic that regenerates
sessions-index.jsonafter crash-recovery, so that it preserves the correct reference (session ID, real title, original creation timestamp) to the source session instead of overwriting it with placeholder data. - If feasible, provide a way to manually "relink" an intact
.jsonltranscript (with a known session ID) back into Desktop's index, so cases like this can be recovered without losing GUI access.
Workaround (currently in use)
claude --resume ea4f3d01-75ca-4023-9651-c3fa98915277
This reads the .jsonl transcript directly, bypassing the broken index, and loads the full conversation history correctly.
---
Happy to provide the full sessions-index.json, transcript header lines, or directory listings on request.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗