[BUG] Desktop plugin browser: personal marketplace git URL silently ignores #branch fragment — displays it, syncs default branch

Open 💬 0 comments Opened Jul 10, 2026 by nikhilsitaram

Summary

The desktop app's plugin browser accepts a git URL with a branch fragment (https://github.com/<owner>/<repo>.git#my-branch) when adding a personal marketplace, displays the fragment as part of the marketplace name — and then silently ignores it, syncing the repository's default branch instead.

Environment

  • Claude Desktop 1.20186.0, macOS 26.5.1
  • Personal marketplace added via Cowork → Customize → Browse Plugins → Personal → + → git URL

Steps to reproduce

  1. Have a repo whose default branch (master) and a feature branch (my-branch) point at different commits.
  2. In the desktop plugin browser, add a personal marketplace with the URL https://github.com/<owner>/<repo>.git#my-branch.
  3. Open the marketplace's ⋯ menu and note the Synced commit.

Observed

  • The marketplace tile is named <repo>.git#my-branch — the fragment is retained in the display name.
  • Synced commit shows the default branch's tip, not the branch's. Verified by comparing the displayed short SHA against git rev-parse origin/master (match) and git rev-parse origin/my-branch (no match; the commit isn't on the branch at all).
  • "Check for updates" continues to sync the default branch.

Expected

Either honor the #branch fragment (Claude Code CLI's claude plugin marketplace add <url>#<branch> does exactly this), or reject the URL with a clear "branch pinning not supported" error. Accepting it, displaying it, and syncing something else is the worst combination — it looks pinned while serving different code, which is nasty for release-candidate testing and has supply-chain-ish implications (you believe you're running reviewed branch X; you're running whatever lands on the default branch).

Related

  • #76287 — marketplace clone wedged after a default-branch rename (adjacent default-branch coupling).
  • #73907 — personal marketplace "Update" reports latest while the repo is versions ahead (adjacent sync-trust issue).

View original on GitHub ↗