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
- Symlink
~/.claude/plugins/installed_plugins.jsonto a dotfiles repo synced between machines (e.g., a Linux server and a Mac laptop) - Install plugins on Machine A (e.g., as
rooton a server — paths become/root/.claude/plugins/cache/...) - On Machine B (e.g., macOS as user
sma), start a Claude Code session - 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:
- Use relative paths (e.g.,
cache/claude-plugins-official/code-simplifier/1.0.0) resolved relative to~/.claude/plugins/, or - Use
~or$HOMEin the stored path and expand at load time, or - 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.jsonis symlinked:~/.claude/plugins/installed_plugins.json -> ~/projects/dotfiles/common/.claude/plugins/installed_plugins.json
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗