VS Code extension hard-deletes conversation transcript on update/restart (no soft-delete, bypasses Recycle Bin)

Status Open
Reported on v2.1.211
Maintainer reply None cached
Activity 2 comments · opened Jul 17, 2026

Summary

After the VS Code extension auto-updated from 2.1.211 → 2.1.212, the window relaunched into a fresh session instead of resuming the active one, and the prior conversation's transcript was permanently deleted. The resume picker was blank after the restart. The deleted .jsonl transcript did not go to the Recycle Bin and is unrecoverable.

Environment

  • OS: Windows 11 Pro
  • Extension: anthropic.claude-code, updated 2.1.211 → 2.1.212 (both versions present under ~/.vscode/extensions)
  • Model: Opus 4.8
  • Storage: local SSD, TRIM enabled

Evidence

  • Lost session ID 96c6a1e1-88f7-469a-8abc-67b408ddf52a (cwd ...\cmc-it-admin-tool), confirmed via surviving MCP connection logs under AppData\Local\claude-cli-nodejs\Cache\<project>\mcp-logs-*. The transcript 96c6a1e1-*.jsonl no longer exists in ~/.claude/projects/<project>/.
  • Timing ties the loss to the update: the old session's MCP log was last touched at 12:01, and the new replacement session began at 12:03.
  • Full-disk scan across all local drives found no copy. Not in the Recycle Bin (verified at the raw $I/$R level). No Volume Shadow Copies. SSD + TRIM → file-carving/undelete not viable.
  • The extension keeps only a single current session pointer per workspace (memento/webviewView... in state.vscdb) — no durable list of past sessions, so once the file is gone there is no in-app reference to it either.

Impact

A large, multi-week, important conversation was lost with no recovery path.

Root issues / requests

  1. Transcripts are hard-deleted (Node fs unlink), which bypasses the Windows Recycle Bin. Please soft-delete instead — move to a .trash/recycle-aware location — so high-value history is recoverable.
  2. cleanupPeriodDays default of 30 days is too aggressive for low-volume, high-value data like chat history. Consider a much longer default, or exempt transcripts from silent hard-deletion.
  3. Extension update/restart should resume the prior session, not spawn a fresh one and prune the old transcript.
  4. Blank resume picker after an update — the picker read an empty project folder with no fallback/warning.

Suggested mitigation for other users (until fixed)

  • Set "cleanupPeriodDays": 3650 in ~/.claude/settings.json.
  • Periodically back up ~/.claude/projects to versioned storage.
  • After any extension update, use the resume/history picker (or claude --resume) before starting new work.

View original on GitHub ↗

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