Plugin install fails with EXDEV on cross-device /tmp
Resolved 💬 3 comments Opened Feb 18, 2026 by m-wells Closed Feb 22, 2026
Description
/plugin install fails with EXDEV: cross-device link not permitted when ~/.claude/ and /tmp are on different filesystems (common on Linux with tmpfs /tmp).
Error Message
Error: Failed to install: EXDEV: cross-device link not permitted, rename '/home/<user>/.claude/plugins/cache/catenary' -> '/tmp/claude-plugin-temp-1771439586649'
Steps to Reproduce
- Have
~/.claudeon a different filesystem than/tmp(e.g.,/tmpis tmpfs, home is on disk) /plugin install <marketplace>@<plugin>- Observe the EXDEV error
Expected Behavior
Plugin install should work regardless of filesystem boundaries. Use copy+delete instead of rename() for cross-device moves, or fall back to copy+delete when rename() fails with EXDEV.
Actual Behavior
rename() is used to move from ~/.claude/plugins/cache/ to /tmp/, which fails across filesystem boundaries on Linux.
Workaround
Set TMPDIR to a path on the same filesystem as ~/.claude:
{
"env": {
"TMPDIR": "/home/<user>/.claude/tmp"
}
}
in ~/.claude/settings.json (and ensure the directory exists).
Environment
- Claude Code v2.1.39
- Linux (Arch Linux, kernel 6.18.9)
/tmpmounted as tmpfs, home on ext4/btrfs
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗