Sidebar empty after app update: session-index files wiped, transcripts intact

Resolved 💬 3 comments Opened Apr 20, 2026 by GilGarcia Closed Apr 24, 2026

Summary

After updating to Claude Desktop 2.1.92 (bundled Claude Code 1.1617.0) on Windows 11, the desktop app sidebar is empty — all prior sessions are gone from the UI. The underlying transcripts in ~/.claude/projects/ are fully intact (233 files in my case), but the session-index files the sidebar reads from were wiped by the update, and the app does not reconstruct them from the transcripts.

This appears related to #29154, #25524, and #29373 but with a concrete root cause and a verified manual recovery procedure.

Environment

  • OS: Windows 11
  • Claude Desktop: 2.1.92
  • Claude Code bundled: 1.1617.0 (previously 2.1.111 for the CLI)
  • Shell: Git Bash / PowerShell

Root cause

The desktop sidebar populates from per-session JSON files at:

%APPDATA%\Claude\claude-code-sessions\<accountId>\<orgId>\local_<uuid>.json

After the update, this folder contained zero local_*.json files, even though ~/.claude/projects/*/*.jsonl contained 233 transcript files dating back months.

main.log confirms the disconnect:

[CCD] /stats scanning 233/233 transcript files since 2025-10-20
[LocalSessionManager] Initialization succeeded — accountId=…, orgId=…, existingSessions=0
[LocalAgentModeSessionManager] Initialization succeeded — …, existingSessions=0
[CCD] LocalSessions.setFocusedSession: sessionId=null   (repeating)

So the CCD stats scanner can clearly see 233 transcripts, but LocalSessionManager reports 0 existing sessions because its source of truth is the local_*.json folder, which was wiped.

Reproduction

Not fully reproduced from scratch — but every user hitting this reports it started immediately after an app update. The sidebar reads one folder, the transcripts live in another, and the update path appears to clear the former without repopulating it from the latter.

Expected behavior

One of:

  1. The update should not delete the claude-code-sessions/<acct>/<org>/ folder contents.
  2. On init, if existingSessions=0 but transcripts are present in ~/.claude/projects/, LocalSessionManager should rebuild the session index from the transcripts.

Currently: neither happens, and the sidebar is permanently empty from the user's perspective. The only official workaround is claude --resume from the terminal.

Manual recovery (verified working)

For anyone hitting this before a fix ships: the session-index file schema can be reconstructed from the transcripts. Each local_<uuid>.json contains:

{
  "sessionId": "local_<new-uuid>",
  "cliSessionId": "<transcript-filename-uuid>",
  "cwd": "…",
  "originCwd": "…",
  "createdAt": <ms>,
  "lastActivityAt": <ms>,
  "model": "claude-opus-4-7",
  "effort": "default",
  "isArchived": false,
  "title": "<from ai-title event in transcript>",
  "titleSource": "auto",
  "permissionMode": "default",
  "remoteMcpServersConfig": [],
  "completedTurns": <n>
}

All values except sessionId can be extracted from the corresponding transcript at ~/.claude/projects/<encoded-cwd>/<cliSessionId>.jsonl:

  • cwd from any system event
  • createdAt/lastActivityAt from first/last timestamp
  • title from the last ai-title event (falls back to the first user message with slash-command XML stripped)
  • model from any assistant event

Writing one file per transcript into the sessions folder and restarting the app fully restores the sidebar, with correct titles, timestamps, and resume capability. I recovered 157 sessions this way.

Suggested fix

Add a reconciliation step to LocalSessionManager init: if existingSessions=0 but ~/.claude/projects/ is non-empty, rebuild the index from the transcripts using the same fields listed above. This protects users from any future event (update bug, folder corruption, accidental delete) that empties the sessions folder.

Happy to share the recovery script if useful.

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗