[BUG] Chat history not persisting for projects on mapped drives / OneDrive
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?
Environment
OS: Windows 11 ARM64
VS Code: 1.107.0 (also tested with 1.106.2)
Claude Code Extension: 2.0.46
Project location: Mapped drive O: pointing to OneDrive folder
Summary
Claude Code extension fails to persist chat history when the project is located on a mapped Windows drive (e.g., O:\OneDrive\Projects\...). The same project works correctly when opened from a local path (e.g., C:\temp\project).
Symptoms
Chat history disappears: After restarting VS Code, the chat title briefly appears (~1 second) then vanishes. "Past Conversations" shows empty.
Empty .jsonl files created: The extension creates empty (0 bytes) session files in ~/.claude/projects/ on every startup:
63f5f607-d84c-477d-b6b2-ff2b9243b937.jsonl 0 bytes
d733edbc-d2df-4a34-b90d-870bfc870158.jsonl 0 bytes
...
Console errors:
ERR [UriError]: Scheme contains illegal characters.
ERR chatParticipant must be declared in package.json: claude-code
ERR Error providing chat sessions: TypeError: Cannot read properties of undefined (reading 'created_at')
Root Cause Analysis
The mapped drive letter O: appears to be interpreted as a URI scheme by VS Code/extension, causing the UriError: Scheme contains illegal characters error.
Additionally, the extension creates empty .jsonl session files which then break the session loading logic (attempting to read created_at from empty/invalid JSON).
What Should Happen?
Chat history should persist across VS Code restarts regardless of whether the project is on a local drive or mapped drive.
Error Messages/Logs
Steps to Reproduce
- Map a network drive or OneDrive folder to a drive letter (e.g., O:)
- Create/open a project on that mapped drive: code O:\Projects\myproject
- Open Claude Code sidebar and start a conversation
- Close VS Code completely
- Reopen VS Code with the same project
- Observe: Chat history briefly appears then disappears
Claude Model
Sonnet (default)
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
1.107.0
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
VS Code integrated terminal
Additional Information
Workaround
Open the project using a local path instead of the mapped drive:
bash# Instead of:
code O:\OneDrive\Projects\myproject
Use:
code C:\Users\username\OneDrive\Projects\myproject
Additional Notes
VS Code 1.107.0 Compatibility Issue
With VS Code 1.107.0, there's an additional error:
ERR Error providing chat sessions: TypeError: Cannot read properties of undefined (reading 'created_at')
This error originates from mainThreadChatSessions.ts:498 (VS Code internal code), suggesting a Chat Participant API incompatibility. Downgrading to VS Code 1.106.2 reduces (but doesn't eliminate) the errors for mapped drive projects.
Empty File Creation Bug
The extension should either:
Not create empty .jsonl files, OR
Handle empty files gracefully when loading sessions (skip them instead of crashing)
File System Monitoring Evidence
Using PowerShell FileSystemWatcher, observed that:
Extension creates new session files on every startup
Some files remain at 0 bytes
Deleting empty files temporarily fixes history loading, but new empty files are created immediately
Suggested Fixes
Path handling: Normalize Windows mapped drive paths before using them as identifiers or in URI construction
Empty file handling: Add null/empty check when parsing .jsonl session files
VS Code 1.107.0: Update Chat Participant API integration for compatibility
39 Comments
Found 3 possible duplicate issues:
This issue will be automatically closed as a duplicate in 3 days.
🤖 Generated with Claude Code
Update: Root cause identified
After extensive debugging, the actual root cause is Windows Junction points, not the mapped drive itself.
Setup:
O:\Projects was a Junction pointing to O:\OneDrive\Projects
Opening project via junction path: code O:\Projects\_optimai\euronaradi → broken history
Opening project via real path: code O:\OneDrive\Projects\_optimai\euronaradi → works fine
Solution:
Removed the junction and moved the folder directly to O:\Projects. Chat history now persists correctly, even with VS Code 1.107.0.
Bug behavior:
When a project is opened through a Windows Junction, Claude Code:
Creates empty (0 bytes) .jsonl session files in ~/.claude/projects/
These empty files break session loading (causing created_at error)
Chat history briefly appears on startup, then disappears
Suggested fix:
Resolve junction/symlink paths to their real targets before using them as project identifiers or for session storage paths.
Same basic problem happens on linux with symlinks:
lrwxrwxrwx 1 jk jk 14 Nov 15 11:15 NAME -> /mnt/@/NAME/2026-01-07 11:28:42.900 [warning] Failed to load sessions from /home/jk/NAME/NAME-worker-js: Error: ENOENT: no such file or directory, scandir '/home/jk/.claude/projects/-home-jk-NAME-NAME-worker-js'So when writing to .claude/projects the vscode extension uses the fully resolved absolute path of '/mnt/@/SUBVOLUME/..projects..'
But when attempting to load the same project it uses the unresolved /home/USER/SYMLINK_TO_SUBVOLUME/... to look up the history
This is a very simple bugfix.
This issue has been inactive for 30 days. If the issue is still occurring, please comment to let us know. Otherwise, this issue will be automatically closed in 30 days for housekeeping purposes.
Adding another data point from #26815 — same issue occurs with Google Drive for Desktop virtual drives (H:\) on Windows 11.
When the virtual drive is temporarily unavailable (Google Drive disconnects), Claude Code silently falls back to
C:\Windowsas the CWD. This means:C--Windowsproject directory instead of the correct one--resumecan't find any previous sessions (looks in wrong directory)The fix that would help all mapped/virtual drive users: show an error when the CWD path doesn't exist or can't be resolved, instead of silently falling back.
Root Cause Analysis (v2.1.69)
Traced through the minified extension code to identify the exact mismatch:
Write path (CLI)
When the CLI creates a session, it uses the literal
cwd(e.g.,A:\MyProject) to compute the project directory name viaIG(), which replaces non-alphanumeric chars with-:Sessions are stored in
~/.claude/projects/A--MyProject/.Read path (VS Code extension)
When the extension lists sessions, it calls
ks()which runsfs.realpath()before computing the directory name. On Windows,realpathresolves mapped/subst drives to their actual paths:Then
IG()produces a completely different directory name:The extension looks in a directory that doesn't exist and returns zero sessions.
Code path (extension.js)
Suggested fix
Both the CLI and extension should normalize paths the same way. Either both use
realpathor neither does.Workaround
Create a directory junction so the extension's resolved path points to the existing sessions:
A:→\\server\share):fs.realpathreturns UNC pathIG()mentally: replace all non-[a-zA-Z0-9]with-\\server\share\Project→--server-share-Project(note: double leading dash from\\)Confirmed working on Windows Server with Samba/SMB mapped drives.
It's weird that this issue seems to come-and-go between updates of VS Code and/or updates of the Claude Code extension. I had this issue a week or two ago, then it seemed to go away on it's own, then it started doing it again today.
I'm not sure if that's helpful information, but I figured I might as well add it
Workaround: Windows Junction
Root cause:
fs.promises.realpath()resolves mapped drive paths (e.g.X:\MyFolder\Project) to their UNC equivalents (\SERVER\Share\MyFolder\Project). The session loader usesrealpathto derive the project directory name, but session files were originally saved using the drive letter path. This creates a mismatch:{configDir}/projects/X--MyFolder-Project/{configDir}/projects/--SERVER-Share-MyFolder-Project/(does not exist)Fix: Create a Windows junction linking the expected UNC-based directory name to the actual drive-letter-based directory:
Past Conversations dropdown works immediately after creating the junction.
Upvote the OP, if you want Antropic to actually fix it.
They don't even have a human look at these git hub issues unless they pass a certain upvote threshold.
Additional finding: DFS environments break junction workaround across workstations
The junction workaround from my earlier comment has an additional failure mode in DFS (Distributed File System) environments.
The problem
GetFinalPathNameByHandleW(the Win32 API behind Node.jsfs.realpathSync) resolves DFS paths through to the underlying target server, not just the DFS namespace. The target server can differ per workstation depending on DFS referrals.Example with drive
I:mapped to\domain.com\DFSRoot\Folder:| Workstation |
GetFinalPathNameByHandleresolves to | Sanitized directory name ||---|---|---|
| Server A |
\server-a.domain.com\Share\Scripts|--server-a-domain-com-Share-Scripts|| Server B |
\server-b.domain.com\Share$\Scripts|--server-b-domain-com-Share--Scripts|Same mapped drive, same DFS path, but different kernel-resolved paths → different session directories on each machine.
Win32_LogicalDisk.ProviderName(WMI) only returns the DFS namespace path (\domain.com\DFSRoot\Folder), which is stable across workstations. But that's not what Node.js uses.Workaround update
The junction workaround needs to cover all three path variants:
I--ScriptsrealpathSync):--server-a-domain-com-Share--Scripts--domain-com-DFSRoot-Folder-ScriptsMust be re-run on each workstation since the kernel-resolved path varies.
Suggested fix (for the extension)
Both the CLI and extension should normalize to the same path. Using the DFS namespace path (from
Win32_LogicalDisk.ProviderNameor equivalent) would be more stable thanrealpathSyncin DFS environments, since it doesn't vary with DFS referral targets. Alternatively, normalize both sides throughrealpathSyncconsistently.Adding a confirmed root cause and fix for the mapped drive case (separate from the junction/symlink angle raised by @michalekz and @JeffKwasha).
For mapped drives specifically, the root cause is in
IS(v)/FS(z)in the VS Code extension — the function that normalises workspace paths before computing the session directory hash:fs.promises.realpath()on Windows resolves mapped drive letters to their UNC equivalent (e.g.O:\Projects→\server\share\Projects). The session directory hash is then computed from the UNC path, which doesn't match the directory the CLI created using the drive-letter path.listSessions()returns 0 results — the sessions exist on disk but can't be found.Fix: swap to
fs.realpathSync()(syncrequire("fs")variant), which does not resolve mapped drives to UNC:Confirmed working on v2.1.76 —
listSessions()immediately returns correct results, session history restores on VS Code restart.---
On the junction/symlink issue (@michalekz, @JeffKwasha): that's a related but separate inconsistency — write vs read using different resolution strategies. The
realpathSyncfix above would help junction points too (sincerealpathSyncresolves junctions to their target), but only if the CLI and extension both use the same resolution. Worth tracking separately.On the empty 0-byte
.jsonlfiles: that's also a separate bug — the session loading code crashes oncreated_atfrom invalid JSON rather than skipping or deleting the corrupt file. Probably worth a separate issue.See #34125 and #33140 for more detail on the mapped drive / UNC fix.
Update for v2.1.78: The function was renamed and variables changed again. New targets:
Summary across versions:
| Version | Function | Async fs var | Sync fs var |
|---------|----------|-------------|-------------|
| v2.1.74 |
FS(z)|o8|DH|| v2.1.76 |
IS(v)|N3|b2|| v2.1.78 |
pP(z)|M3|Iq|All three sync vars are
require("fs")— already in scope. The fix pattern is identical across versions; only the names change.Update for v2.1.79: Only the function name changed again. All other variables identical to v2.1.78.
| Version | Function | Async fs var | Sync fs var |
|---------|----------|-------------|-------------|
| v2.1.74 |
FS(z)|o8|DH|| v2.1.76 |
IS(v)|N3|b2|| v2.1.78 |
pP(z)|M3|Iq|| v2.1.79 |
hP(z)|M3|Iq|The function has been renamed in every minor release since v2.1.76. The fix pattern is always the same — swap the async
fs/promisescall for the syncfsequivalent that's already in scope.Update for v2.1.81: Multiple variable changes. Updated table:
| Version | Function | Async fs var | Sync fs var |
|---------|----------|-------------|-------------|
| v2.1.74 |
FS(z)|o8|DH|| v2.1.76 |
IS(v)|N3|b2|| v2.1.78 |
pP(z)|M3|Iq|| v2.1.79 |
hP(z)|M3|Iq|| v2.1.81 |
hP(z)|F3|bW|v2.1.81 kept the function name
hPbut changed both fs variable names (M3→F3,Iq→bW). Confirmed patched and working across 11 user accounts (v2.1.74, v2.1.76, v2.1.81), 0 failures.Hello Claude,
The gap in your solution is... Claude's code is not open source..... we can't patch it (or rather it's not practical to do so)
further
The function name is changing because it's minified/compiled javascript not the original source.
If I am missing something obvious let me know, but your comments are a lot of words that doesn't really say much.
Update for v2.1.83: Function renamed again, parameter changed, both fs variables changed.
| Version | Function | Async fs var | Sync fs var |
|---------|----------|-------------|-------------|
| v2.1.74 |
FS(z)|o8|DH|| v2.1.76 |
IS(v)|N3|b2|| v2.1.78 |
pP(z)|M3|Iq|| v2.1.79 |
hP(z)|M3|Iq|| v2.1.81 |
hP(z)|F3|bW|| v2.1.83 |
KT(K)|i1|WN|Note: v2.1.83 also changed the function parameter from
ztoK, and both the async and sync fs variable names changed. The function name, parameter, and fs variables have now all changed simultaneously — the only stable pattern across versions is the function signature shape and the.normalize("NFC")calls.Confirmed patched and working on v2.1.83 across 16 user accounts (spanning v2.1.74 through v2.1.83), 0 failures.
Suggestion: Label should include [area:vscode], and possibly [platform:vscode]
label:area:vscode
@BoostlyPeter is being down voted because he is letting claude write slop comments with out reviewing them to see if they add value. (I have been guilty of it too in the past)
Update for v2.1.87: Function renamed again, all variables changed.
| Version | Function | Async fs var | Sync fs var |
|---------|----------|-------------|-------------|
| v2.1.74 |
FS(z)|o8|DH|| v2.1.76 |
IS(v)|N3|b2|| v2.1.78 |
pP(z)|M3|Iq|| v2.1.79 |
hP(z)|M3|Iq|| v2.1.81 |
hP(z)|F3|bW|| v2.1.83 |
KT(K)|i1|WN|| v2.1.87 |
Oh(K)|w3|uv|Seven versions tracked, bug still present and unfixed. Confirmed patched and working across 17 user accounts (v2.1.74 through v2.1.87), 0 failures.
Still experiencing this issue as of April 2026 on Windows 11 Pro with the VSCode extension.
Project is on a Samba share mapped to a Windows drive letter. Session files are being written correctly to ~/.claude/projects/ and are confirmed present on disk, but the VSCode extension shows zero conversation history in the sidebar for this project. History works fine on projects located on local drives.
This has been happening across dozens of sessions over multiple months with no workaround. The data exists — it's purely a display/lookup failure in the extension.
Please prioritize this fix. Network-mounted drives are a common workflow on Windows and this makes conversation history completely unusable for those projects.
Also experiencing this on shared network drives. I'll note that using the terminal interface solve the bug.
Still occurring on 4 April 2026.
Workarounds:
Don't use a mapped network drive. =(
This is a regression because mapped network drive used to work fine for me ~1 month ago.
Confirming this isn't OneDrive-specific — same failure mode with a plain SUBST'd drive on Windows 11.
Setup
Symptoms across the three surfaces, all opening the same workspace:
Net effect: two project folders for one workspace, and the VS Code extension is internally inconsistent on top of that.
This points at the path-normalization layer rather than anything OneDrive-specific — any virtual/mapped drive letter (SUBST, net use, OneDrive, junction-mounted volume) will hit it.
A fix that canonicalizes the workspace path once (e.g. fs.realpath) before deriving the project-folder identifier, and uses that same canonical form on both write and read, should cover all of these cases.
Up vote the op then.
That is the only way Anthropic will notice and fix it
On Fri, Apr 17, 2026, 9:07 AM AleksiAleksiev @.***>
wrote:
+1, hitting this exact issue. Adding another data point to support keeping this open.
Environment
Z:\\\MyNAS\MyShare→Z:\Z:\~/.claudesymlinked toZ:\work\.claudeso memory/settings/sessions are shared between both PCsSymptom
.jsonlfiles are intact in~/.claude/projects/<encoded>/Workarounds I tested (none worked)
C:\work\→Z:\work\symlink and opened the workspace viaC:\work\...to fake out the path encoding. The extension still calledrealpath()and saved the session underZ--work-.... Renaming that folder toz--work-...,c--work-..., orC--work-...did not make the sidebar enumerate them on restart..jsonlcontent is correct, withcwd:"Z:\\work\\..."recorded inside.Same path-normalization smell as the OP
Same logical project accumulated 7+ different "project folders" over time due to inconsistent path representations:
z--work-<project>c--work-<project>c--<project>(noworkprefix)y--work-<project>(Y drive era)--MyNAS-MyShare-work-<project>(UNC encoded)Some
~/.claude/ide/*.lockfiles also containworkspaceFolderswith mangled paths likez:\\MyShare\\work\\<project>(drive letter spliced with the UNC share name). Points to inconsistent path normalization in the extension, exactly as the OP described.Note on related issues
#33140, #37923, #31219, #31787 all describe the same root cause but are closed and locked. This one is the only one still open. Please don't auto-close — the bug is not resolved as of 2.1.140.
Why this matters
Blocks the use case of "shared
~/.claudeon NAS for cross-PC session continuity," which is a natural multi-machine workflow. The data is technically shared — the UI just can't see it.I can't believe this is still bugged. I know someone is probably going to chime in and tell me to quit complaining about this bug, but it is becoming a deal breaker for me. If claude terminal didn't have its own short comings with working in VS then it might be fine, but these production gaps are real and I don't see any attempts for anthropic to improve them. I literally cannot work on projects consistently when I cannot pull open previous conversations in my projects. Enough ranting, but seriously this is a major issue.
No, keep complaining. Anthropic won't fix it unless it stays near the top.
I also have exactly this issue, as of v 2.1.170. UNC workaround noted above works, but this is not satisfactory as introduces other issues (e.g. with interactive R terminal)
fix-network-sessions.md
this is my workaround for the issue - nevertheless I hope this gets fixed soon
My Claude ended up creating a
SessionStarthook that needs to be added to each machine, but it fixes it with junction points (hardlinks in Windows):~/.claude/settings.jsonfix-mapped-drive-sessions.jsIt worked for me without even having to restart VSCode.
I lost so many tokens and chats to this. I'm glad I finally found a per-machine workaround.
I can confirm this bug is still present in VSCode extension v2.1.181 (June 2026).
My environment
\\SRV001\Dati\Server\...mapped asZ:\Symptoms
.jsonlsession files are present in~/.claude/projects/Z--MASTER-...claude --resumecorrectly lists all 73 sessions with proper titlesWhat I tried (did NOT work)
.batfile to force VSCode to always open workspace with the mapped drive path (Z:\) instead of UNC pathRoot cause hypothesis
The VSCode extension appears unable to properly read session metadata when the workspace is on a mapped network drive, even though:
This suggests the bug is specific to the VSCode extension's file handling with network-mapped drives, not a data corruption or path resolution issue.
Impact
This makes the VSCode extension essentially unusable for users working with network-based workspaces. The only workaround is switching to CLI (
claude --resume), which is less intuitive for non-technical users.Hope this bug gets prioritized — it's been open since December 2025 and affects many users working in enterprise environments with network shares.
What you've traced as the URI-scheme error is the downstream symptom; the upstream cause is a path mismatch in how the CLI and the VS Code extension derive the project slug from your cwd.
When your workspace is at
O:\OneDrive\Projects\myproject, the CLI writes session transcripts to~/.claude/projects/O--OneDrive-Projects-myproject/using the literal drive letter. The VS Code extension callsfs.realpathSyncon the cwd before encoding it, which dereferencesO:back to the physical path (something likeC:\Users\username\OneDrive\Projects\myproject) and reads from (and writes stub files to)C--Users-username-OneDrive-Projects-myproject/instead. Two slug directories for the same workspace, and the extension can only see the one it wrote to.The empty
.jsonlfiles on every startup are the extension's stubs in the realpath-derived folder. Any content the CLI wrote lives in the drive-letter slug — worth checking~/.claude/projects/for a folder starting withO--to see if sessions with actual content are there.I built a toolkit for diagnosing this split:
diagnose.pyinBasedGPT/claude-code-session-recoverymaps both directories and shows which transcripts have content versus which are empty stubs. If CLI sessions exist in theO--...folder,recover_vscode_sessions.pycan read those transcripts and rebuild the VS Code session cache (state.vscdb).For future sessions, the junction hook @Sawtaytoes shared above addresses the root cause directly: it creates a Windows directory junction so the extension's realpath lookup finds the CLI's data automatically. Running
diagnose.pyfirst gives you the picture of what's already there before applying any fix.Hope this helps, if my tools are able to help you, would appreciate a ⭐ :)
Cross-linking to keep two distinct failure modes from getting conflated here.
This issue's original report is the write-side / OneDrive case (0-byte .jsonl files +
UriError: Scheme contains illegal characters). There's a separate read-side variant —transcripts exist with data, but the sidebar shows only the current session — tracked
in #63527 / #34125: the extension's listSessions() calls async realpath(), which resolves
mapped drives to their UNC path, so it reads a non-existent project folder and silently
returns []. Still reproducing on v2.1.183, including DFS/SASE-mapped drives. Detailed
root-cause + one-call-site fix in #63527.
Hi Karl!
Thank you for your advice.
I'll keep you update if your tool will work also for me, as soon as I have
my my hands on my system, because at the moment I'm out for a commission.
Thanks a lot.
Francesco
Il ven 19 giu 2026, 10:23 BasedGPT @.***> ha scritto:
@BasedGPT @ktremain Thank you both for the detailed analysis and clarifications!
Confirming the variant: Read-side issue
@ktremain is correct — my case is the read-side variant described in #63527:
listSessions()returns[]because it dereferences mapped drive to non-existent UNC pathWhat I tried with @BasedGPT's tools:
1. Diagnosis with
diagnose.py:Z--MASTER-...: 80 sessions (CLI using literal drive letter)--SRV001-...: 7 sessions (VSCode dereferencing to UNC path)D--MASTER-...: 0 sessions (old local path)2. Session unification:
--SRV001toZ--MASTER3. Manual cache rebuild attempt:
recover_vscode_sessions.pyexpects pre-populated cache (mine was completely empty), I created a custom script.jsonlfilesagentSessions.model.cachein VSCode'sstate.vscdbThe problem persists: VSCode overwrites the cache
Timeline:
[]❌Root cause (confirming @ktremain's analysis):
When creating a new session, the extension:
listSessions()to refresh the sidebarlistSessions()usesrealpath()which dereferencesZ:→\\SRV001\...--SRV001-...folder (now empty after unification)[]This creates a cycle: even if you manually populate the cache, VSCode erases it on the next session creation because
listSessions()can't find the files (looking in wrong path).Current workaround confirmed:
CLI (
claude --resume) works perfectly — correctly finds all 90 sessions with proper titles. The bug is isolated to VSCode extension'srealpath()dereferencing behavior.Cross-reference to #63527
Based on @ktremain's pointer, this is clearly the read-side variant tracked in #63527. The one-call-site fix mentioned there (preventing
realpath()from dereferencing mapped drives inlistSessions()) would likely resolve this completely.Environment details:
\\SRV001\...mapped asZ:\listSessions()→realpath()→ UNC path → non-existent folder →[]Thank you both for the diagnostic tools and the clear separation of the two bug variants. The tools were invaluable for confirming the exact failure mode!
@Armnum So glad it was helpful mate, thanks for the update and the detailed write up. If you think it earned it, would appreciate a star! Will update my tooling to help others with the same problems in the future.
The durable key should be the canonical workspace identity, not whichever path form one caller saw.
For mapped drives and OneDrive, I would store both raw cwd and resolved path, then derive one canonical project key after normalization. Session metadata should include the transcript directory it expects, and the sidebar should be able to rebuild from JSONL if IndexedDB/session metadata points at the wrong slug.
Also treat 0-byte JSONL as a recoverable corrupt record. Skip it with a warning rather than letting one stub break the whole session list.
---
_Generated with ax._
Adding a variant I don't see covered in this thread (or in #63527 / #34125 / #33140): the same empty-history failure with no drive letter involved at all — workspace opened directly as the root of an SMB share (
\\server\share\). Still present in extension 2.1.200.Why it's relevant to the fix being discussed: in this variant the lister's
fs.promises.realpathhas nothing to dereference (no mapped drive, no junction, no DFS). It merely drops the trailing separator of the share root, and that alone breaks the lookup:process.cwd(), which keeps the separator for a share root:\\server\share\→ sanitized--server-share-(trailing dash).listSessions) normalizes throughfs.promises.realpath→ libuv →GetFinalPathNameByHandleW, which returns share roots without the separator:\\server\share→--server-share. That folder doesn't exist → silent empty list.Queried the Win32 API directly to confirm the asymmetry — it only affects UNC roots, which is why local folders (and even a
C:\root workspace) are fine:| Input |
GetFinalPathNameByHandleWresult ||---|---|
|
C:\|\\?\C:\(separator kept) ||
\\server\share\|\\?\UNC\server\share(separator dropped) |Transcripts on disk are valid and non-empty with the correct
"cwd": "\\\\server\\share\\"recorded — no 0-byte files involved, so the empty list doesn't require the corrupt-stub angle in this variant.Implication for the one-call-site fix tracked in #63527: if the fix only special-cases drive-letter dereferencing, share roots stay broken. Normalizing writer and lister through the same function fixes both variants — e.g. the JS-implementation
fs.realpathSyncpreserves the root's trailing separator (verified: returns\\server\share\), matching what the writer produces.Workaround (verified — history and resume fully restored): same junction trick as earlier in this thread, just one dash apart:
Environment: VS Code extension 2.1.200 (win32-x64), Windows 11 Pro build 26100; transcripts written by 2.1.195 were equally affected.
I asked Claude Fable to fix the extension and he did, faster than the developers could read this issue :)