[Bug] Plugin loading fails with `@` character in macOS username

Resolved 💬 3 comments Opened Apr 9, 2026 by bshutterkion Closed Apr 13, 2026

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

  1. Have a macOS user account with @ in the username (common with enterprise/MDM setups like user@company.io)
  2. Install Claude Code
  3. Run /plugin install superpowers@claude-plugins-official
  4. Run /reload-plugins
  5. Observe: "1 error during load" — "Plugin superpowers not found in marketplace claude-plugins-official"
  6. Inspect ~/.claude/plugins/known_marketplaces.json — the installLocation path is missing the @domain portion 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"}]

View original on GitHub ↗

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