[Bug] Marketplace update (pull) does not sync git submodules

Resolved 💬 2 comments Opened Mar 11, 2026 by WontakKim Closed Apr 9, 2026

Description

When a marketplace repository uses git submodules to compose plugins from independent repos, git pull during marketplace update does not run git submodule update, leaving submodule checkouts pinned to stale commits. This causes plugin installation to fail with:

Source path does not exist: ~/.claude/plugins/marketplaces/<name>/plugins/<submodule-plugin>

Distinction from #17293

#17293 (fixed in v2.1.7) addressed the initial clone path by adding --recurse-submodules. However, the update (pull) path remains unfixed — after the marketplace remote advances its submodule pointers, git pull only updates the pointer in the index but does not checkout the new submodule commit.

Previous reports of this exact issue (#30696, #25598) were incorrectly auto-closed as duplicates of #17293 by the bot, despite being a different code path.

Reproduction

  1. Install a marketplace that uses git submodules (e.g., a marketplace with plugins/foo as a submodule)
  2. The plugin author pushes new commits to the foo plugin repo
  3. The marketplace CI updates the submodule pointer and pushes
  4. Run /plugin → "Update marketplace"
  5. Try to install the plugin that was added after the initial clone

Expected: Submodule checkout advances to the new pointer — new plugin directories are available.

Actual: Submodule stays at old commit. Installation fails with "Source path does not exist."

Root cause

The marketplace update logic runs git pull but does not follow up with git submodule update --init (or use git pull --recurse-submodules).

Suggested fix

Either:

  • Use git pull --recurse-submodules when updating marketplaces, or
  • Run git submodule update --init after git pull

Environment

  • Claude Code version: 2.1.72
  • OS: macOS (Darwin 24.5.0)

Workaround

cd ~/.claude/plugins/marketplaces/<name>
git submodule update --init

Or set git config submodule.recurse true in the marketplace repo to make git pull auto-update submodules.

View original on GitHub ↗

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