Plugin installation fails on network filesystems (EXDEV cross-device link error)
Resolved 💬 3 comments Opened Jan 22, 2026 by Jaureguy760 Closed Jan 22, 2026
Description
Plugin installation/update fails on HPC clusters and network filesystems with EXDEV: cross-device link not permitted error.
Environment
- Claude Code version: v2.1.15
- OS: Linux (RHEL 9) on HPC cluster
- Home directory: Network filesystem (NetApp NFS mount at
/iblm/netapp/home/...) /tmp: Local filesystem (different mount point)
Error Message
Error: Failed to install: EXDEV: cross-device link not permitted, rename
'/iblm/netapp/home/username/.claude/plugins/cache/claude-scientific-writer' ->
'/tmp/claude-plugin-temp-1769049515451'
Root Cause
The plugin installer uses fs.rename() to move directories between the plugin cache (~/.claude/plugins/cache/) and /tmp. On Unix systems, rename() cannot work across different filesystems/mount points.
This is common in:
- HPC clusters (home on NFS/Lustre/GPFS, tmp on local SSD)
- Docker containers with mounted volumes
- Any system where
~and/tmpare on different filesystems
Suggested Fix
Replace fs.rename() with a copy-then-delete approach when cross-device operations are needed:
const fs = require('fs-extra');
async function safeMove(src, dest) {
try {
await fs.rename(src, dest);
} catch (err) {
if (err.code === 'EXDEV') {
// Cross-device: copy then delete
await fs.copy(src, dest);
await fs.remove(src);
} else {
throw err;
}
}
}
Or use fs-extra's move() function which handles this automatically.
Workaround
Currently users must manually manage plugin installations, which is error-prone and tedious.
Impact
This affects all users on:
- Academic/research HPC clusters
- Enterprise environments with network home directories
- Cloud instances with mounted storage
Thank you!
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗