Plugins fail to load in VS Code Dev Containers: marketplace cache uses Windows host path inside Linux container
Bug Description
When using Claude Code VS Code extension inside a Dev Container (Remote - Containers), all marketplace plugins fail to load with plugin-not-found errors. The same plugins work correctly in non-Dev Container projects on the same Windows host.
Root Cause
The plugin system stores/resolves the marketplace cache path using the Windows host absolute path (C:\Users\<user>\.claude\plugins\marketplaces\...) even when running inside a Linux Dev Container where the same directory is mounted at /root/.claude/plugins/marketplaces/....
This causes two failures:
- The marketplace cache directory exists but is not recognized as a git repository (git metadata contains Windows-format paths)
- Re-clone attempts fail because the path
C:\Users\<user>\...is invalid on Linux
Environment
- OS: Windows 11 (host) → Linux Dev Container (target)
- Claude Code version: 2.1.25 (also reproduced on 2.1.19)
- VS Code: Remote - Containers extension
- Container:
/root/.claude/is mounted from host~/.claude/
Steps to Reproduce
- Install Claude Code plugins on Windows (they work fine in native Windows projects)
- Open a project in a VS Code Dev Container
- Claude Code starts inside the Linux container
- All plugins show
plugin-not-found
Log Evidence
Plugin system loads installed_plugins.json correctly (Linux path works):
Loaded 7 installed plugins from /root/.claude/plugins/installed_plugins.json
Initialized versioned plugins system with 7 plugins
But marketplace resolution uses Windows path (fails on Linux):
[ERROR] Failed to refresh marketplace claude-plugins-official: Cache directory exists at
C:\Users\alexm\.claude\plugins\marketplaces\claude-plugins-official but is not a git repository.
Please remove it manually and try again.
Cache validation also uses Windows path:
[WARN] Cache corrupted or missing for marketplace claude-plugins-official, re-fetching from source:
Invalid cached directory at C:\Users\alexm\.claude\plugins\marketplaces\claude-plugins-official:
missing .claude-plugin/marketplace.json
Autoupdate uses mixed Windows/Linux path:
[WARN] Plugin autoupdate: failed to update learning-output-style@claude-plugins-official:
Plugin source not found at C:\Users\alexm\.claude\plugins\marketplaces\claude-plugins-official/plugins/learning-output-style
Result: 0 plugins enabled despite 7 installed:
Found 0 plugins (0 enabled, 0 disabled)
Plugin loading errors: Plugin learning-output-style not found in marketplace claude-plugins-official,
Plugin auto-memory not found in marketplace severity1-marketplace, ...
Additional Issues in Dev Container
These are secondary but also present:
- MCP servers fail —
ERR_MODULE_NOT_FOUNDfor all npx-based MCP servers (github,context7,memory) due to stale/incomplete npm cache at/root/.npm/_npx/ - Missing managed skills directory —
ENOENT: scandir '/etc/claude-code/.claude/skills' - enabledPlatforms check fails —
Failed to check enabledPlatforms: TypeError: undefined is not an object (evaluating 'r7.join')
Expected Behavior
The marketplace cache path should be resolved relative to the user's home directory (e.g., ~/.claude/plugins/marketplaces/...) rather than stored as an absolute OS-specific path. This would allow the same ~/.claude directory to work correctly when mounted into a Dev Container.
Workaround
Deleting the marketplace cache inside the container forces a fresh clone with Linux-native paths, but this breaks again when returning to Windows host projects:
rm -rf /root/.claude/plugins/marketplaces/claude-plugins-officialThis issue has 3 comments on GitHub. Read the full discussion on GitHub ↗