Plugin marketplace: empty clones, stale cache not refreshing, broken update/delete
Summary
The Claude Code plugin marketplace state manager has three systemic lifecycle bugs for git-sourced marketplaces. These affect all marketplace operations (add, update, remove) and have stable workarounds but should be fixed in the manager.
Bug 1: Clone creates empty directory
Symptom: Adding a marketplace via URL succeeds (no error shown) but the clone directory is empty — no plugin.json or skill files are present.
Workaround: Manually clone the repo:
git clone <url> ~/.claude/plugins/marketplaces/<name>
Bug 2: Stale data, refresh does not work
Symptom: After a marketplace is updated upstream, the cached data does not refresh even when the "Refresh" action is triggered.
Workaround: Set lastUpdated to "2020-01-01T00:00:00.000Z" in ~/.claude/plugins/known_marketplaces.json, then restart Claude Code.
Bug 3: "Update" button not pressable / "Delete" does not work
Symptom: The Update button is grayed out or unresponsive. The Delete action silently fails or leaves stale entries.
Workarounds:
- Update:
cd ~/.claude/plugins/marketplaces/<name> && git pull - Delete: Remove the entry directly from
~/.claude/plugins/known_marketplaces.json
Additional behavior
Claude Code rewrites known_marketplaces.json on startup, which silently reverts any manual URL edits made to the file. URL changes must go through the UI add/remove flow to persist.
Key file
~/.claude/plugins/known_marketplaces.json — source of truth for registered marketplaces.
Environment
Claude Code (CLI), macOS, git-sourced marketplaces.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗