Marketplace update does not run `git submodule update` after pull

Resolved 💬 3 comments Opened Mar 4, 2026 by WontakKim Closed Mar 8, 2026

Bug Description

When a marketplace repository uses git submodules to organize plugins, /plugin marketplace update pulls the latest parent repo changes but does not run git submodule update. This leaves submodule working directories at stale commits, causing plugin installation failures for any plugin added after the initial marketplace clone.

Steps to Reproduce

  1. Create a marketplace repo that uses git submodules for plugin sources (e.g., plugins/my-team/ as a submodule)
  2. Install the marketplace in Claude Code
  3. Add a new plugin (e.g., sounds) to the submodule repo and update the parent repo's submodule pointer via CI
  4. Run /plugin marketplace update <name>
  5. Try to install the newly added plugin

Expected Behavior

After marketplace update, submodule working directories should be checked out to the commits referenced by the updated parent repo. The new plugin should be installable.

Actual Behavior

  • The parent repo is pulled successfully (submodule pointer is updated to the new commit)
  • But git submodule update is not executed, so the submodule working directory remains at the old commit
  • The new plugin's source path does not exist
  • Installation fails with: Error: Failed to install: Source path does not exist: .../<submodule-path>/<new-plugin>

Evidence

# After running `/plugin marketplace update`:

$ git ls-tree HEAD plugins/my-team
160000 commit <new-commit-hash>    plugins/my-team   # parent expects new commit

$ git submodule status plugins/my-team
+<old-commit-hash> plugins/my-team (heads/main)      # actual checkout is old (+ indicates mismatch)

Suggested Fix

After git pull, the marketplace update logic should also run:

git submodule update --init --recursive

Environment

  • Claude Code CLI
  • macOS
  • Marketplace with git submodules

---

Contact: wontak0103@gmail.com

View original on GitHub ↗

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