Plugin marketplace: shallow clone + SSH remote causes missing plugin files
Resolved 💬 3 comments Opened Feb 26, 2026 by jun-valkai Closed Mar 3, 2026
Bug Description
When installing plugins via /plugin from the claude-plugins-official marketplace, some plugins show in the "Discover" panel but fail to install with:
Error: Failed to install: Source path does not exist: ~/.claude/plugins/marketplaces/claude-plugins-official/plugins/<plugin-name>
Root Cause
The marketplace repo is cloned as a shallow clone (depth=1) with an SSH remote (git@github.com:...). This causes two compounding issues:
- SSH key mismatch: If the user's SSH key is not at the default path git expects,
git fetchfails silently. The/plugin marketplace updatecommand reports success but no files are actually pulled.
- Incomplete working tree: The shallow clone only materializes a subset of plugin directories to disk. In testing,
git ls-tree HEAD plugins/showed 29 plugins tracked by git, but only 14 were checked out to the working tree. The other 15 (includingplugin-dev,ralph-loop, LSP plugins, etc.) were missing from disk.
Steps to Reproduce
- Have an SSH configuration where the default key path doesn't match what git expects
- Use
/plugin→ Discover → try to install a plugin likeplugin-dev - Observe the "Source path does not exist" error
- Running
/plugin marketplace updatereports success but doesn't fix it
Workaround
cd ~/.claude/plugins/marketplaces/claude-plugins-official
# Fix 1: Switch to HTTPS so gh auth is used instead of SSH
git remote set-url origin https://github.com/anthropics/claude-plugins-official.git
# Fix 2: Unshallow and restore all files
git fetch --unshallow origin main
git checkout HEAD -- plugins/
Suggested Fix
- Clone marketplace repos via HTTPS instead of SSH (or respect the user's SSH config)
- After clone/update, verify the working tree matches the git index
- Consider a full clone instead of shallow, or at minimum ensure all tracked files are checked out
Environment
- macOS (Darwin)
- Claude Code CLI (latest as of 2026-02-26)
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗