VS Code extension 2.1.126: historical sessions not shown in sidebar or /resume (CLI works) — regression
Summary
In the Claude Code VS Code extension v2.1.126, the sidebar "Local" sessions panel and the /resume slash command in chat do not list any historical sessions — they only show currently-active tabs.
The bundled CLI claude --resume (run from a regular terminal) does list all the historical sessions correctly. So the file layer and core listing logic are healthy; the regression is in the extension's UI listing path.
The user reports this view worked correctly ~3 weeks ago (around mid-April 2026).
Environment
- OS: Windows 11 Enterprise 26200
- Extension:
anthropic.claude-code2.1.126-win32-x64 - Workspace path:
a:\Source(mapped drive;Resolve-PathreturnsA:\Source, NTFS is case-insensitive on this dir) - ~80 historical session JSONL files in
~/.claude/projects/a--Source/, ranging from April to today
Reproduction
- Open a workspace in VS Code that has many historical sessions in
~/.claude/projects/<encoded-path>/. - Open the Claude Code sidebar → "Local" tab → only currently-open tabs are shown, no history.
- Type
/resumeinside an open Claude Code chat → no historical sessions appear in the picker. - From a regular PowerShell terminal in the same workspace, run
claude --resume→ all historical sessions are listed correctly.
What was verified directly
- Files are intact and complete — JSONL files contain valid
user/assistantentries (e.g. one file is 2 MB with 75"type":"user"lines) and end with{"type":"ai-title","aiTitle":"...","sessionId":"..."}lines. - Title markers present in all sampled files —
aiTitleappears within the first 64 KB of every sampled file (positions 3,882 / 5,541 / 34,287 bytes for three sample files of 894 KB / 298 KB / 1.47 MB), well within the head chunk sizeF2 = 65536used byxz4. - The filter logic in
extension.jsshould accept these files — at line 161,c5(G,"customTitle")||c5(x,"customTitle")||c5(G,"aiTitle")||c5(x,"aiTitle")finds a title in the head/tail chunks;c5(defined on line 158) returns the last matching"key":"value"occurrence in a string. - The bundled CLI lists everything correctly from the same workspace — same
claude.exethat ships in the extension'sresources/native-binary/folder.
Hypothesis
The bug is between the listing function (gz4 → Qz4 → xU → $l) and the webview UI message-passing layer. The listing logic itself works (the CLI proves it), but results don't reach either the sidebar Local panel or the /resume picker. Possibly related to:
- A stale extension-globalState cache that isn't invalidated when the bundled CLI updates the on-disk format
- A change to
il(V)(which callsrealpath+normalize("NFC")) producing a different path than the writer uses (a:\Sourcevs realpath resultA:\Source— though NTFS is case-insensitive here) - A new filter/predicate added since the last working version that incorrectly drops files
Workarounds
- Use
claude --resumefrom a regular terminal instead of/resumein chat — this works. - Downgrade the extension to a version from ~mid-April 2026.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗