[Bug] Plugin loading fails with `@` character in macOS username
Bug Description
Bug: Plugin loading fails when macOS username contains @ character
Version: Claude Code 2.1.97 (native)
OS: macOS Darwin 25.4.0
Description
Plugin installation succeeds but /reload-plugins fails with "Plugin superpowers not found in marketplace claude-plugins-official" when the macOS username contains an @ character (e.g., bshutter@kion.io).
Root Cause
The @ in the home directory path (/Users/bshutter@kion.io/) is being stripped or truncated when Claude Code writes the installLocation field in ~/.claude/plugins/known_marketplaces.json. The stored path becomes /Users/bshutter/.claude/plugins/marketplaces/claude-plugins-official instead of the correct /Users/bshutter@kion.io/.claude/plugins/marketplaces/claude-plugins-official.
This causes the plugin loader to look for the marketplace at a non-existent path, so it can never resolve any URL-sourced plugins.
Steps to Reproduce
- Have a macOS user account with
@in the username (common with enterprise/MDM setups likeuser@company.io) - Install Claude Code
- Run
/plugin install superpowers@claude-plugins-official - Run
/reload-plugins - Observe: "1 error during load" — "Plugin superpowers not found in marketplace claude-plugins-official"
- Inspect
~/.claude/plugins/known_marketplaces.json— theinstallLocationpath is missing the@domainportion of the username
Workaround
Manually edit ~/.claude/plugins/known_marketplaces.json and fix the installLocation path to include the full username with the @ character:
{
"claude-plugins-official": {
"source": {
"source": "github",
"repo": "anthropics/claude-plugins-official"
},
"installLocation": "/Users/bshutter@kion.io/.claude/plugins/marketplaces/claude-plugins-official",
"lastUpdated": "2026-04-09T14:23:40.121Z"
}
}
Then /reload-plugins works correctly.
Likely Fix
The path construction for installLocation is likely splitting on @ (perhaps treating it as a URL/email separator) or not properly escaping/quoting the home directory path. The $HOME environment variable or os.UserHomeDir() return should be used as-is without any parsing.
Environment Info
- Platform: darwin
- Terminal: Apple_Terminal
- Version: 2.1.97
- Feedback ID: 335c25af-3654-45ce-9e9c-5a0eec4f0e49
Errors
[{"error":"Error: NON-FATAL: Lock acquisition failed for /Users/bshutter@kion.io/.local/share/claude/versions/2.1.97 (expected in multi-process scenarios)\n at Fd_ (/$bunfs/root/src/entrypoints/cli.js:2774:2153)\n at ua6 (/$bunfs/root/src/entrypoints/cli.js:2774:1233)\n at processTicksAndRejections (native:7:39)","timestamp":"2026-04-09T14:23:29.041Z"}]This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗