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

  1. Have ~/.claude on a different filesystem than /tmp (e.g., /tmp is tmpfs, home is on disk)
  2. /plugin install <marketplace>@<plugin>
  3. 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)
  • /tmp mounted as tmpfs, home on ext4/btrfs

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗