Plugin install paths are absolute and break when installed_plugins.json is shared across machines

Resolved 💬 3 comments Opened Feb 28, 2026 by mistakeknot Closed Mar 4, 2026

Summary

installed_plugins.json records absolute filesystem paths (e.g., /root/.claude/plugins/cache/... or /home/claude-user/.claude/plugins/cache/...) in the installPath field. When this file is shared across machines (e.g., via dotfiles symlinks), plugins installed on one machine fail to load on another because the paths don't exist.

Reproduction

  1. Symlink ~/.claude/plugins/installed_plugins.json to a dotfiles repo synced between machines (e.g., a Linux server and a Mac laptop)
  2. Install plugins on Machine A (e.g., as root on a server — paths become /root/.claude/plugins/cache/...)
  3. On Machine B (e.g., macOS as user sma), start a Claude Code session
  4. Observe: plugins installed on Machine A show as "failed to load" because /root/.claude/plugins/cache/... doesn't exist on the Mac

Observed behavior

12 plugins were broken in my setup. Example entries in installed_plugins.json:

"code-simplifier@claude-plugins-official": [{
  "installPath": "/root/.claude/plugins/cache/claude-plugins-official/code-simplifier/1.0.0",
  ...
}]

On a Mac where the home dir is /Users/sma, this path doesn't exist.

Expected behavior

Either:

  1. Use relative paths (e.g., cache/claude-plugins-official/code-simplifier/1.0.0) resolved relative to ~/.claude/plugins/, or
  2. Use ~ or $HOME in the stored path and expand at load time, or
  3. Re-resolve paths at load time — if the stored path doesn't exist, try the equivalent path under the current user's ~/.claude/plugins/cache/

Workaround

Manually reinstall broken plugins on each machine with claude plugin install <name>@<marketplace>. This overwrites the entry with a local path.

Environment

  • Claude Code (latest as of 2026-02-28)
  • macOS 15 (Sequoia) + Linux server, sharing dotfiles via symlinks
  • installed_plugins.json is symlinked: ~/.claude/plugins/installed_plugins.json -> ~/projects/dotfiles/common/.claude/plugins/installed_plugins.json

View original on GitHub ↗

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