[BUG] sessions-index.json contains stale/placeholder metadata after crash-recovery, breaking session resume from Desktop UI

Resolved 💬 1 comment Opened Jun 8, 2026 by lucazinicola-create Closed Jul 14, 2026

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

  1. Have a large Claude Code session (~30 MB / 7,000+ events) that was originally created from Claude Desktop (entrypoint: "claude-desktop").
  2. Trigger (or experience) a crash that initiates the recovery process — evidenced here by a backup/ folder created on 2026-06-07 at 21:04, and sessions-index.json rewritten the same day at 21:03.
  3. Reopen Claude Desktop → Code tab → Recents: the session entry shows a placeholder summary ("Sessione Recuperata Post-Crash") instead of its real generated title.
  4. 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

  1. 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.
  2. Clicking that entry does not load the original conversation — instead Desktop spawns a new session with a different ID, with no prior history.
  3. 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 aiTitle as 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 summary field ("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 created timestamp (2026-06-07T20:00:00Z) does not match the session's actual creation date — the .jsonl transcript 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:

  1. Created a backup copy of the original session transcript file.
  2. Overwritten/regenerated sessions-index.json with placeholder metadata ("Sessione Recuperata Post-Crash" / wrong created timestamp) instead of preserving or correctly updating the reference to the original session.
  3. Left Desktop's index pointing to a "stub" reference that no longer matches the real .jsonl transcript (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

  1. Have a large Claude Code session (~30 MB / 7,000+ events) that was originally created from Claude Desktop (entrypoint: "claude-desktop").
  2. Trigger (or experience) a crash that initiates the recovery process — evidenced here by a backup/ folder created on 2026-06-07 at 21:04, and sessions-index.json rewritten the same day at 21:03.
  3. Reopen Claude Desktop → Code tab → Recents: the session entry shows a placeholder summary ("Sessione Recuperata Post-Crash") instead of its real generated title.
  4. 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.json after 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 .jsonl transcript (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.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗