Marketplace plugins from GitHub repos are not auto-updated

Resolved 💬 3 comments Opened Apr 6, 2026 by stevepeck Closed Apr 10, 2026

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

  1. Configure a custom marketplace plugin from a GitHub repo:

``json
{
"extraKnownMarketplaces": {
"my-marketplace": {
"source": { "source": "github", "repo": "org/my-plugin-repo" }
}
}
}
``

  1. Install and enable a plugin from that marketplace
  2. Push a change to the source repo (e.g., add a new MCP server to .mcp.json)
  3. 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.json retains the original commit SHA and install timestamp
  • known_marketplaces.json lastUpdated may be touched but the actual files aren't updated
  • /reload-plugins reloads 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.

View original on GitHub ↗

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