Marketplace plugins from GitHub repos are not auto-updated
Summary
Marketplace plugins sourced from GitHub repositories (via extraKnownMarketplaces in settings) are stored as git clones under ~/.claude/plugins/marketplaces/, but Claude Code never runs git pull to fetch upstream changes. This means new MCP servers, skills, or other plugin changes pushed to the source repo are never picked up — even across restarts or /reload-plugins.
Steps to reproduce
- Configure a custom marketplace plugin from a GitHub repo:
``json``
{
"extraKnownMarketplaces": {
"my-marketplace": {
"source": { "source": "github", "repo": "org/my-plugin-repo" }
}
}
}
- Install and enable a plugin from that marketplace
- Push a change to the source repo (e.g., add a new MCP server to
.mcp.json) - Restart Claude Code or run
/reload-plugins
Expected behavior
Claude Code should fetch the latest changes from the source repo (at minimum on restart or /reload-plugins) and update both:
- The marketplace clone at
~/.claude/plugins/marketplaces/<name>/ - The versioned cache at
~/.claude/plugins/cache/<name>/<plugin>/<version>/
It should also update gitCommitSha and lastUpdated in installed_plugins.json.
Actual behavior
- The git clone is never pulled — it stays at the commit from initial install
- The cache copy is never refreshed
installed_plugins.jsonretains the original commit SHA and install timestampknown_marketplaces.jsonlastUpdatedmay be touched but the actual files aren't updated/reload-pluginsreloads from the stale cache, not from upstream
Environment
- Claude Code CLI (macOS, Darwin 25.4.0)
- Plugin source: private GitHub repo via
extraKnownMarketplaces
Workaround
Manually pull and sync:
cd ~/.claude/plugins/marketplaces/<marketplace-name>
git pull origin master
rsync -av --delete <marketplace>/<plugin>/ ~/.claude/plugins/cache/<marketplace>/<plugin>/<version>/
Then update gitCommitSha in installed_plugins.json and run /reload-plugins.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗