[BUG] Cowork EXDEV: cross-device link not permitted — rename within same directory (Windows 11 Pro, OneDrive present)
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?
Every time Cowork attempts to set up the workspace, the download of rootfs.vhdx completes and validates the checksum successfully, but the final rename() operation fails with EXDEV — even though both source and destination are within the exact same directory (claudevm.bundle\).
The error repeats on every retry. After the failure, Claude deletes the temp files immediately, leaving no residual files. cowork_vm_node.log is never created.
What Should Happen?
The rootfs.vhdx file should be successfully moved from the temp subdirectory .wvm-tmp-* to the bundle directory, and the Cowork VM should start normally.
Error Messages/Logs
Failed to start Claude's workspace EXDEV: cross-device link not permitted, rename 'C:\Users\theop\AppData\Roaming\Claude\vm_bundles\claudevm.bundle\.wvm-tmp-HdFDd7\rootfs.vhdx' -> 'C:\Users\theop\AppData\Roaming\Claude\vm_bundles\claudevm.bundle\rootfs.vhdx'
Event Log (System):
The Claude service terminated with the following service-specific error: Incorrect function. (Error code 1)
CoworkVMService status:
Status: Stopped
ExitCode: 1 (ERROR_INVALID_FUNCTION)
Steps to Reproduce
- Perform an in-place upgrade from Windows 11 Home to Windows 11 Pro (build 26200.8117)
- Have OneDrive installed and active (folder at C:\Users\<user>\OneDrive, separate from AppData)
- Install Claude Desktop from claude.ai/download
- Enable Hyper-V: Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All
- Enable HypervisorPlatform: Enable-WindowsOptionalFeature -Online -FeatureName HypervisorPlatform
- Reboot
- Open Claude Desktop → navigate to Cowork tab
- Observe EXDEV error after download completes
Claude Model
None
Is this a regression?
No, this never worked
Last Working Version
_No response_
Claude Code Version
Claude Desktop 1.1062.0 (b81bcd) — 2026-04-06
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
PowerShell
Additional Information
Key detail: Both paths in the EXDEV error are inside the same parent directory (claudevm.bundle\). This is not a cross-drive issue. The source is a hidden subdirectory .wvm-tmp-* created by cowork-svc.exe inside the destination directory itself.
Troubleshooting already attempted (all failed):
- Reboot — Error persists
- Full reinstall (Remove-AppxPackage + manual data cleanup) — Error persists
- Enable HypervisorPlatform + VirtualMachinePlatform + Hyper-V — Done, all Enabled
- Disable CldFlt driver (sc.exe config CldFlt start= disabled) + reboot — CldFlt confirmed STOPPED, error persists
- Manually create sessiondata.vhdx via New-VHD — Created successfully, CoworkVMService still fails
- Pre-create vm_bundles\claudevm.bundle directory — Claude deletes and recreates; error unchanged
- Create placeholder rootfs.vhdx at destination before launch — Error unchanged
- FileSystemWatcher to intercept and copy .wvm-tmp-*\rootfs.vhdx — File deleted too fast, watcher does not fire
- Verified $env:APPDATA is not a symlink or junction — Confirmed: normal directory
- Verified OneDrive is at C:\Users\theop\OneDrive (not syncing AppData) — Confirmed: AppData not in OneDrive path
- Confirmed OS build 26200.8117 (KB5086672)
AppData symlink check:
FullName: C:\Users\theop\AppData\Roaming — Target: {} — LinkType: (none)
Hypothesis: The in-place upgrade from Windows 11 Home → Pro may leave filesystem filter driver registrations or NTFS metadata in a state where Node.js fs.rename() across subdirectories within the same parent triggers EXDEV — even with CldFlt stopped. A copyFile + unlink fallback when EXDEV is encountered (as suggested in #30584) would resolve this regardless of the underlying filesystem state.
Related issues: #30584, #38457, #25476, #27801, #29941
Showing cached comments. Read the full discussion on GitHub ↗
15 Comments
Found 3 possible duplicate issues:
This issue will be automatically closed as a duplicate in 3 days.
🤖 Generated with Claude Code
This is not a duplicate of #38457 (CldFlt/Dropbox) — CldFlt was confirmed STOPPED during testing and the error persisted.
The key difference in this report: both source and destination paths are inside the same directory (claudevm.bundle\), not across drives or different volumes. This suggests a distinct failure mode specific to the Home→Pro upgrade path combined with OneDrive presence.
Preventing auto-close as this combination has not been documented in the referenced issues.
Hello, I'd like to report the same issue. I didn't want to open a duplicate, as I see there are already a few marked as duplicates by github-actions.
After chatting with claude about it, and trying to resolve this in many ways, including some directions in powershell. The issue persist and here's the summary:
Cowork workspace setup fails repeatedly with: EXDEV: cross-device link not permitted, rename 'C:\Users\maya4\AppData\Roaming\Claude\vm_bundles\claudevm.bundle.wvm-tmp-AVAM1B\rootfs.vhdx' -> '...\claudevm.bundle\rootfs.vhdx'
Steps already tried:
Reinstalled Claude (fixed initial HRESULT 0x80073D0D error)
Cleared AppX packages via PowerShell
Enabled Hyper-V
Verified AppData is a normal directory on C: drive, not a symlink or network path
Manually pre-created the vm_bundles destination folder
Restarted PC multiple times
Error persists on every attempt.
I've been having the same issue and can't seem to resolve it. It's very frustrating, as I've been wanting to use Cowork.
Issues i keep getting on my end:
Failed to start Claude's workspace
EXDEV: cross-device link not permitted, rename 'C:\Users\Michael\AppData\Roaming\Claude\vm_bundles\claudevm.bundle\.wvm-tmp-Ks6mfv\rootfs.vhdx' -> 'C:\Users\Michael\AppData\Roaming\Claude\vm_bundles\claudevm.bundle\rootfs.vhdx'
Same issue here with a clean claude desktop install.
EXDEV: cross-device link not permitted, rename 'C:\Users\dave\AppData\Roaming\Claude\vm_bundles\claudevm.bundle\.wvm-tmp-vPGulK\rootfs.vhdx' -> 'C:\Users\dave\AppData\Roaming\Claude\vm_bundles\claudevm.bundle\rootfs.vhdx'
Restarting Claude or your computer sometimes resolves this. If it persists, you can reinstall the workspace.
I even tried manually copying the files from the temp folder into the actual and it made no difference.
same issue here
OK , so i found a fix for this the instructions seem to imply that just turning on the VMP is enough, it isnt you also have to turn on the full virtualisation stack (VMP + Windows Hypervisor Platform + WSL) in order for co-work to work .
Confirming this on Windows 11 — same-directory rename, MSIX build. Adding my diagnostics in case they help narrow it down.
Identical failure to OP:
rename()fails with both source and destination inside the sameclaudevm.bundledirectory on a singleC:drive. The.wvm-tmp-*suffix changes each attempt; the error is otherwise constant on every launch.Environment
C:onlyRuled out on my end
%TEMP%,%LOCALAPPDATA%, and%APPDATA%are all standard and underC:\Users\<user>\— no redirectiondir /ALon the user profile folder shows only default Windows compatibility junctions; none point offC:dir /ALonAppData\Roamingreturns no junctions or symlinkssc.exe config CldFlt start= disabled) + reboot — error persists (matches OP)So on my system this is not cross-drive, not a junction, not a redirected profile, and not CldFlt. Consistent with MSIX filesystem virtualization treating the
.wvm-tmp-*subfolder and its parentclaudevm.bundleas separate filesystems, sofs.rename()fails even within one real directory. AcopyFile+unlinkfallback (or a cross-device-safe move) should resolve it.Like OP, I also could not find
cowork_vm_node.log— it does not appear to be created, presumably because the service exits before writing it.Additional impact worth flagging: Cowork project/session state appears to be local-only and does not sync to the account. A clean reinstall done while troubleshooting this left my Projects panel empty (
sessionsemptied, noprojectsrestored). Config backups survive in.claude\backups\but there is no documented restore path. So this bug indirectly pushes users toward reinstalls that can cost them their Cowork projects.+1, same issue here. Cowork fails immediately on workspace setup, before doing anything in a project.
Error (recurs every launch, temp suffix changes each time):
Both source and destination are in the SAME directory on C: — not a cross-drive issue.
What makes my report useful: I systematically ruled out the common culprits, and EXDEV STILL persists:
fltmc unload CldFlt, confirmed GONE fromfltmc filtersoutput — EXDEV still occursThis isolates the root cause to the MSIX sandbox virtualizing AppData\Roaming as a separate filesystem, making Node.js
fs.rename()throw EXDEV even within the same real directory. It is NOT solvable from the user side.Environment:
Requested fix (same as other reports): replace
fs.rename()with copy + unlink fallback on EXDEV, OR resolve the temp dir to share the same VFS mount as the destination.I am experiencing the same / very similar issue with Claude Desktop Cowork on Windows.
Error
Claude Desktop shows this error when starting Cowork / workspace:
Environment
What I expected
Claude Cowork workspace should start normally after downloading and installing the VM bundle.
What happened instead
Cowork fails every time during workspace startup.
It appears to fail when moving or renaming
rootfs.vhdxfrom the temporary.wvm-tmp-*folder into the finalclaudevm.bundlefolder.In my case, the source and destination paths are both under:
So this does not look like a normal cross-drive move. It looks similar to the reported Windows/MSIX/Cowork
rootfs.vhdxrename issue wherefs.rename()fails withEXDEV.Steps already tried
I already tried:
vm_bundlescachewvm-*filesThe issue still happens every time.
Diagnostic logs
I submitted diagnostic logs through Claude Desktop's Cowork feedback dialog.
Reference ID:
Environment:
Claude Desktop version: 1.18286.0.0 (MSIX/Windows Store installation)
Windows 11
Package: Claude_pzs8sxrjxfjjc
Error:
EXDEV: cross-device link not permitted, rename 'C:\Users\Markus\AppData\Roaming\Claude\vm_bundles\claudevm.bundle\rootfs.vhdx.zst.21237ca86d15.partial' -> 'C:\Users\Markus\AppData\Roaming\Claude\vm_bundles\claudevm.bundle\rootfs.vhdx.zst'
Full node log excerpt (cowork_vm_node.log):
2026-07-05 19:21:36 [error] [VM:start] Startup failed: YKt [VMDownloadError]: EXDEV: cross-device link not permitted, rename 'C:\Users\Markus\AppData\Roaming\Claude\vm_bundles\claudevm.bundle\rootfs.vhdx.zst.21237ca86d15.partial' -> 'C:\Users\Markus\AppData\Roaming\Claude\vm_bundles\claudevm.bundle\rootfs.vhdx.zst'
errno: -4037,
code: 'EXDEV',
syscall: 'rename'
Ruled out via testing:
AppData\Roaming is not a reparse point (fsutil reparsepoint query → error 4390, not a reparse point)
AppData is not redirected via registry (HKCU\...\User Shell Folders\AppData = default %USERPROFILE%\AppData\Roaming)
Windows Defender has no quarantine entries related to rootfs/vhdx
Sufficient disk space and write permissions on the target directory confirmed
A plain Rename-Item on a manually created .partial file inside claudevm.bundle succeeds without error, when executed immediately after file creation
Key finding via Process Monitor:
Claude.exe itself deletes .partial files inside claudevm.bundle after a short interval. Procmon captured this event:
Claude.exe (PID 19008) SetDispositionInformationEx
Path: C:\Users\Markus\AppData\Roaming\Claude\vm_bundles\claudevm.bundle\NewTest.txt.partial
Result: SUCCESS
Flags: FILE_DISPOSITION_DELETE, FILE_DISPOSITION_POSIX_SEMANTICS, 0x10
A manually created .partial test file in the same directory was deleted by Claude.exe roughly 60 seconds after creation, without any user action or external process involvement (confirmed via Procmon, no other process touched the file).
Likely root cause: Claude appears to run an internal cleanup routine that removes .partial files in the bundle directory after a timeout. If the rootfs.vhdx.zst download takes longer than this internal timeout, the cleanup routine may delete or mark-for-deletion the .partial file concurrently with the download process's own rename() call, causing a race condition between the two operations on the same file handle. This would explain the EXDEV even though source and destination are in the same directory.
Suggested fix: Either disable/lengthen the internal .partial cleanup timeout during an active download, or ensure the download process holds an exclusive lock on the .partial file until the rename completes, preventing the cleanup routine from acting on it concurrently.
Same with me.
Running command
bash
echo ready
Output
Workspace unavailable. The isolated Linux environment failed to start (EXDEV: cross-device link not permitted, rename 'C:\Users\Asus\AppData\Roaming\Claude\vm_bundles\claudevm.bundle\rootfs.vhdx.zst.21237ca86d15.partial' -> 'C:\Users\Asus\AppData\Roaming\Claude\vm_bundle)
I have tried almost everything as mentioned by different users, OP and in the group. no resolve.
same error with me
Environment:
Claude-Setup.exefrom claude.ai/download — resulted in an MSIX package install (Claude_1.19367.0.0_x64__pzs8sxrjxfjjc), installed on D: drive, user profile/AppData on C:C:\Users\<user>\AppData\Roaming\Claude\vm_bundles\claudevm.bundleKey detail matching your report: source and destination of the failing rename are in the exact same directory — only the filename differs. Not a genuine cross-drive/cross-volume move.
Raw log (
%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\logs\cowork_vm_node.log):[error] [download] VM download failed: EXDEV: cross-device link not permitted, rename 'C:\Users<user>\AppData\Roaming\Claude\vm_bundles\claudevm.bundle\rootfs.vhdx.zst.21237ca86d15.partial' -> 'C:\Users<user>\AppData\Roaming\Claude\vm_bundles\claudevm.bundle\rootfs.vhdx.zst'
[error] [VM:start] Startup failed: l5t [VMDownloadError]: EXDEV: cross-device link not permitted, rename '...\rootfs.vhdx.zst.21237ca86d15.partial' -> '...\rootfs.vhdx.zst'
at async Object.rename (node:internal/fs/promises:785:10)
at async Kvn (app.asar.vite\build\index.chunk-CpjGn3fz.js:799:16528)
at async Object.startVM (app.asar.vite\build\index.chunk-CpjGn3fz.js:2977:45164)
errno: -4037,
code: 'EXDEV',
syscall: 'rename'
[warn] [VM:start] Download failed, leaving VM offline (no auto-reinstall — bundle never reached disk)
Mine fails one stage earlier — on the rename of the compressed
.zstdownload itself (.partial→ final.zst), before decompression even starts, rather than on the post-decompressionrootfs.vhdxrename. Same underlyingfs.rename()EXDEV issue, just triggered at an earlier point in the same pipeline. Auto-retry after ~7s fails identically — fully deterministic, not intermittent.Client-side workarounds tried (all failed, error unchanged):
sc.exe config CldFlt start= disabled+ full system reboot, confirmed CldFlt unloaded viafltMC.exebefore/after — CldFlt ruled out as the causeluafv(UAC virtualization) — avoided as it's more deeply integrated in the OS and riskier to toggleAdding another confirmed case of the same-directory EXDEV rename failure,
with diagnostics ruling out all user-side causes.
Error (every retry, across 3 full reinstalls — Cowork has never worked):
EXDEV: cross-device link not permitted, rename
'C:\Users\<user>\AppData\Roaming\Claude\vm_bundles\claudevm.bundle\rootfs.vhdx.zst.21237ca86d15.partial'
-> 'C:\Users\<user>\AppData\Roaming\Claude\vm_bundles\claudevm.bundle\rootfs.vhdx.zst'
Source and destination are in the same directory.
Environment: Claude Desktop [1.19367.0.0], direct .exe installer (not MSIX/Store).
Windows 11 [25H2, OS Build 26200.8737]. Everything on C:, AppData not redirected, no junctions.
OneDrive fully uninstalled, no Dropbox, no third-party antivirus.
Ruled out (each disabled + reboot, unload confirmed via
fltmc filters):Key evidence — manual rename in the exact failing folder succeeds from user context:
cd $env:APPDATA\Claude\vm_bundles\claudevm.bundle
"test" | Out-File test.partial
Rename-Item test.partial test.txt # succeeds
So the failure is specific to the process context Claude's VM service performs
the rename in, not the filesystem itself.
Related finding: before disabling CldFlt + luafv, new chats did not persist
across app restarts on this machine. After disabling them, chat persistence
works. Something in the filter stack was also breaking write-temp-then-rename
for the main app process — the VM service rename still fails regardless.
This is not fixable user-side. Please ship the copyFile + unlink fallback on
EXDEV proposed in #30584 / #39029.
As a paying customer: this consumed a full day and three reinstalls. If a fix
or timeline isn't forthcoming soon, I'll be canceling my subscription.
Same EXDEV error — root cause on my machine was the MSIX package split across two physical drives. Fixed. Details below in case it helps others.
Environment: Windows 11, Claude Desktop 1.20186.1.0 (MSIX, SignatureKind: Developer, installed from claude.ai/download — not the Store)
Symptom: Identical to OP — download completes, then rename fails within the same directory:
EXDEV: cross-device link not permitted, rename '...\claudevm.bundle\rootfs.vhdx.zst.21237ca86d15.partial' -> '...\claudevm.bundle\rootfs.vhdx.zst'
Looped on every retry. Reinstalling multiple times did not help.
Ruled out:
No OneDrive or Dropbox installed; fltmc filters confirmed CldFlt not loaded
Manually renaming the .partial via Explorer worked fine (so renames weren't blocked system-wide, only for the app process)
Pre-placing a completed rootfs.vhdx in the bundle didn't help — log showed rootfs.vhdx origin missing, redownloading... and it restarted the cycle
cipher /c showed all bundle files EFS-encrypted as "Application Protected" (matches #38316)
The key finding: Get-AppxPackage reported InstallLocation: C:\Program Files\WindowsApps\..., but the stack trace in cowork_vm_node.log showed the app actually executing from D:\WindowsApps\Claude_1.20186.1.0_... — the package was split across two physical drives (likely from Windows' "save new apps to D:" setting during an earlier reinstall). With MSIX per-package encryption in play, this appears to be what made the rename cross a device boundary.
Fix:
Suggestion for the devs: worth checking whether the EXDEV fallback (copy+delete) is still missing, and whether install-drive vs. data-drive mismatch is detectable at setup time — "check if your app installed to a secondary drive" would have saved me many hours.
Also figured this out with the help of Claude lol.