Plugin install fails with "EXDEV: cross-device link not permitted" (Windows desktop app)

Status Fixed / completed
Maintainer reply None cached
Activity 0 comments · opened Aug 28, 2026 · closed Aug 28, 2026

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?

Installing a plugin from the in-app Directory (Plugins) fails every time with a Node.js EXDEV error during the final rename step of the install, so the install never completes.

What Should Happen?

The plugin installs successfully.

Error Messages/Logs

EXDEV: cross-device link not permitted, rename 'C:\Users\ADMINS\AppData\Roaming\Claude\local-agent-mode-sessions\66711dda-94b5-4fea-8222-ee60b56d5f2b\9f87b643-6f6b-4499-a4bf-fef420cd2505\rpm\plugin_01Eeb9y5m4iFuY3yRtytYfdc.tmp.1787889862517' -> 'C:\Users\ADMINS\AppData\Roaming\Claude\local-agent-mode-sessions\66711dda-94b5-4fea-8222-ee60b56d5f2b\9f87b643-6f6b-4499-a4bf-fef420cd2505\rpm\plugin_01Eeb9y5m4iFuY3yRtytYfdc'

Steps to Reproduce

  1. Open the Claude desktop app on Windows.
  2. Open Directory -> Plugins.
  3. Select the "Marketing" plugin (by Anthropic).
  4. Click "Install".
  5. Installation fails immediately with the EXDEV error shown above.

Already tried, none of which fixed it:

  • Restarting the Claude desktop app and retrying
  • Pausing OneDrive sync on the affected folders
  • Updating Claude desktop app to the latest version
  • Retrying in a fresh session

Claude Model

None

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

N/A - bug is in the Claude desktop app's Plugin Directory installer (GUI), not the claude CLI. Desktop app was on its latest available version as of 2026-08-28.

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

Other

Additional Information

Likely root cause: EXDEV occurs when Node's fs.rename() is used to move a file between two different filesystem mount points - a hard OS-level limitation, not a permissions issue. Several duplicate reports in this repo trace similar plugin-install failures to the installer relying on fs.rename() without a cross-device (copy+delete) fallback:

try {
fs.renameSync(src, dest);
} catch (err) {
if (err.code === 'EXDEV') {
fs.cpSync(src, dest, { recursive: true });
fs.rmSync(src, { recursive: true });
} else {
throw err;
}
}

Here, source and destination both print as being under the same local-agent-mode-sessions\...\rpm\ directory, suggesting the temp file and plugin cache directory sit on different underlying volumes/mounts (possibly because %APPDATA%\Roaming is redirected/synced, e.g. via OneDrive Known Folder Move or a corporate profile redirection policy) even though the paths look identical at the string level.

Related known issues in this repo (same EXDEV root cause, different environments):

None of the above exactly matches this Windows local-agent-mode-sessions\...\rpm\ path pattern, so this may be a distinct instance of the same underlying bug class specific to the Windows desktop app's plugin installer.

Suggested fix: replace the fs.rename() call in the plugin install/extract path with a cross-device-safe move (attempt rename, and on EXDEV fall back to copy + delete).

View original on GitHub ↗