[BUG] Cowork: Plugin marketplace fails to load when TEMP directory is on a different drive (EXDEV cross-device link error)
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?
Cowork's plugin marketplace fails to load with an EXDEV (cross-device link not permitted) error when the Windows TEMP directory is located on a different physical drive than the C: drive.
The VM workspace image (rootfs.vhdx) is downloaded to the TEMP directory, then Cowork attempts to rename (move) it to C:\Users\<username>\AppData\Roaming\Claude\vm_bundles\claudevm.bundle\rootfs.vhdx. Since rename cannot operate across different filesystem boundaries on Windows, the operation fails.
What Should Happen?
The plugin marketplace should load successfully regardless of where the TEMP directory is located. The file operation should use copy + delete (or fs.copyFile + fs.unlink) instead of fs.rename when the source and destination are on different drives/volumes.
Suggested Fix
Replace the rename call with a cross-device-safe operation, for example:
javascript// Instead of:
fs.renameSync(src, dest);
// Use:
try {
fs.renameSync(src, dest);
} catch (err) {
if (err.code === 'EXDEV') {
fs.copyFileSync(src, dest);
fs.unlinkSync(src);
} else {
throw err;
}
}
Error Messages/Logs
Error Message
Failed to load marketplaces
Error invoking remote method '$eipc_message$_8da60cf1-ffca-4300-be84-6af2f603bd1c_$_claude.web_$_CustomPlugins_$_listMarketplaces':
Error: EXDEV: cross-device link not permitted, rename 'D:\temp\wvm-MEDS6B\rootfs.vhdx' ->
'C:\Users\leong\AppData\Roaming\Claude\vm_bundles\claudevm.bundle\rootfs.vhdx'
Steps to Reproduce
Steps to Reproduce
Configure Windows TEMP/TMP environment variables to point to a drive other than C: (e.g., D:\temp)
Open Claude Desktop on Windows 11
Switch to Cowork mode
Click to browse plugins
Plugin cards appear as blank placeholders (loading state)
After some time, the error message above appears
Claude Model
Sonnet (default)
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
Claude 1.1.4498 (24f768) 2026-02-26T19:47:09.000Z
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
Non-interactive/CI environment
Additional Information
<img width="1023" height="675" alt="Image" src="https://github.com/user-attachments/assets/fb5a017b-408e-4089-96b9-74df8dc37a93" />
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗