Summary
Installing marketplace plugins via Claude Desktop (Cowork) fails with an EXDEV: cross-device link not permitted error. The VM's plugin installer attempts to fs.rename() across different filesystem mount points, which is not supported.
Steps to Reproduce
- Open Claude Desktop (Cowork)
- Browse plugins → Add marketplace by URL
- Add a marketplace (e.g.,
https://github.com/thebushidocollective/ai-dlc.git)
- Attempt to install a plugin from that marketplace
Error
✘ Failed to install plugin "ai-dlc@ai-dlc": EXDEV: cross-device link not permitted,
rename 'mnt/.claude/cowork_plugins/cache/ai-dlc' ->
'/sessions/cli-ff6fe91d/tmp/claude-plugin-temp-1770961568395'
The source (mnt/.claude/cowork_plugins/cache/) and destination (/sessions/<id>/tmp/) are on different mounts inside the VM, so rename() fails with EXDEV.
Additional Context
- App version: 1.1.2998 (also reproduced on 1.1.2685)
- Platform: macOS (darwin arm64, Apple M4 Max)
- OS: macOS 26.2.0 (Darwin 25.2.0)
- The marketplace add succeeds — only the plugin install step fails
- The UI shows a generic "Failed to install plugin" without the EXDEV detail
- Sentry events are being reported as
Failed to install plugin
- Previous version (1.1.2685) also had frequent segfaults (exit code 139) during marketplace operations which appear fixed in 1.1.2998
Expected Behavior
Plugin installation should succeed. The installer should use a copy + unlink fallback (or fs.cp + fs.rm) when fs.rename() fails with EXDEV, which is standard practice for cross-device moves in Node.js.
Logs
From ~/Library/Logs/Claude/main.log:
2026-02-12 22:46:07 [info] [MarketplacePluginManagerCLI] Installing plugin: ai-dlc@ai-dlc
2026-02-12 22:46:07 [info] [VMCLIRunner] Running: claude plugin install ai-dlc@ai-dlc --cowork
2026-02-12 22:46:07 [info] [VMCLIRunner] Command completed with exit code 1
2026-02-12 22:46:07 [error] [MarketplacePluginManagerCLI] Failed to install plugin: Installing plugin "ai-dlc@ai-dlc"...
✘ Failed to install plugin "ai-dlc@ai-dlc": EXDEV: cross-device link not permitted, rename 'mnt/.claude/cowork_plugins/cache/ai-dlc' -> '/sessions/cli-ff6fe91d/tmp/claude-plugin-temp-1770961568395'
Summary
Installing marketplace plugins via Claude Desktop (Cowork) fails with an
EXDEV: cross-device link not permittederror. The VM's plugin installer attempts tofs.rename()across different filesystem mount points, which is not supported.Steps to Reproduce
https://github.com/thebushidocollective/ai-dlc.git)Error
The source (
mnt/.claude/cowork_plugins/cache/) and destination (/sessions/<id>/tmp/) are on different mounts inside the VM, sorename()fails withEXDEV.Additional Context
Failed to install pluginExpected Behavior
Plugin installation should succeed. The installer should use a copy + unlink fallback (or
fs.cp+fs.rm) whenfs.rename()fails withEXDEV, which is standard practice for cross-device moves in Node.js.Logs
From
~/Library/Logs/Claude/main.log: