[BUG] "Past Conversations" appears empty due to case-sensitive project-path hashing on Windows
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?
The VS Code extension's "Past Conversations" list appears empty even though session files exist on disk. This happens because the extension hashes the project's working-directory path to find its storage folder, and that hash is case-sensitive — but Windows drive letters aren't. When the extension resolves the same folder path with different casing (e.g. c:\ vs C:\), it computes a different hash and looks in a folder that doesn't exist, silently showing no conversations.
What Should Happen?
The extension should normalize path casing (e.g. lowercase the drive letter, or the whole path) before hashing it into a project storage key, so the same physical folder always resolves to the same project directory regardless of which process or API reported its casing. "Past Conversations" should show all sessions for the current project reliably, without depending on incidental case differences in how cwd is reported.
Error Messages/Logs
None. No error is shown in the UI or logs — the "Past Conversations" list simply renders empty. The failure is silent: the extension's readdir on the (wrong) hashed project folder throws ENOENT internally, which is caught and treated as "no sessions found" rather than surfaced as an error.
Steps to Reproduce
- On Windows, use the Claude Code CLI/agent from a shell context where the working directory is reported with one drive-letter case (e.g. a git-bash/MSYS shell, which conventionally lowercases the drive letter), under a project path longer than 200 characters, so sessions get written under a path-hashed folder in ~/.claude/projects/.
- Open the same project folder in VS Code, where the extension's Node host may resolve process.cwd() / the workspace path with the opposite (uppercase) drive-letter casing.
- Open "Past Conversations" in the Claude extension sidebar.
- Observe: the list is empty, even though .jsonl session files exist on disk for that project under a differently-cased-hash folder.
Claude Model
Sonnet (default)
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.222
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
VS Code integrated terminal
Additional Information
OS: Windows 10 Home, build 10.0.19045.
Affected functions in the bundled extension.js (minified, identifiers may change between builds): _x() and FIt() (project-key hashing), yb()/bfe() (session file enumeration that consumes the resulting project folder).
This was diagnosed by directly reading the extension's own bundled source rather than guessing — confirmed there is no separate "sessions-index.json" file involved in this version; conversations are enumerated live from .jsonl files in the hashed project folder.
Applied a manual workaround (Windows directory junction aliasing the alternate-case hash folder to the real one) which resolved the symptom locally, but this isn't a real fix since any third casing/path variant would reproduce the failure.