Desktop plugin marketplace: Remove reports success but entry persists
Summary
In Claude Desktop (1.2773.0 on macOS), a plugin marketplace shown as claude-code-plugins (installed as vladolaru-claude-code-plugins) cannot be removed from Directory → Plugins → Personal. Clicking Remove shows a success toast — "Marketplace 'claude-code-plugins' removed." — but the entry remains in the list and persists across full app restarts.
Environment
- Claude Desktop 1.2773.0
- macOS 15 (Darwin 25.4.0)
- Synced commit shown in UI:
905be5a
UI error text (before Remove)
Marketplace sync failed Some plugins in this marketplace have validation errors.
Reproduction
- Open Directory → Plugins → Personal.
- See
claude-code-pluginswith a red error badge ("Marketplace sync failed").
<img width="1062" height="924" alt="Image" src="https://github.com/user-attachments/assets/3eca012d-1e9d-4abb-88f2-e297bfa6bf44" />
- Click the
⋯menu → Remove (or click Remove in the error banner).
<img width="1170" height="906" alt="Image" src="https://github.com/user-attachments/assets/7cd98d01-f832-4186-92f8-947cf0c9b5f6" />
- A toast appears: "Marketplace 'claude-code-plugins' removed." The error badge is cleared — but the
claude-code-pluginsentry is still visible in the Personal list.
<img width="1337" height="749" alt="Image" src="https://github.com/user-attachments/assets/53634803-3358-45e2-b656-e298cf3a0d30" />
- Restarting the desktop app does not clear it. Reopening Directory shows the entry again (sometimes with the sync-failed badge restored).So the Remove action reports success to the user but the marketplace is not actually removed.
<img width="1062" height="924" alt="Image" src="https://github.com/user-attachments/assets/44cacf06-f3e7-4da1-bc10-7038121759ff" />
What I tried on disk (no effect)
- Removed the entry from
~/.claude/settings.json→extraKnownMarketplaces. - Removed the entry from
~/.claude/plugins/known_marketplaces.json. - Deleted
~/.claude/plugins/marketplaces/vladolaru-claude-code-plugins/. - Fully quit the desktop app (
pgrep -lf Claude.appreturned no processes) between each step.
Terminal Claude Code shows clean state (/mcp fine, no references). Only the desktop Directory UI still shows the entry.
Investigation
grep -rforvladolaruandclaude-code-pluginsacross~/Library/Application Support/Claude/— includingIndexedDB/,Local Storage/,Session Storage/,shared_proto_db/, andPartitions/— returned no matches. The marketplace is not cached locally.~/Library/Application Support/Claude/config.jsoncontains"remote_marketplace_migration_done_v1": true, suggesting marketplaces have been migrated to a server-synced store tied to the claude.ai account rather than local files.
Hypothesis: the client-side Remove path shows a success toast optimistically, but the server-side delete is failing or isn't being called — so on next render/sync the entry reappears from the remote store.
Suggested fixes
- The Remove action should wait on the server response before showing a server response before showing a success toast, and surface an error if the delete fails.
- Provide a way to force-remove a stuck marketplace entry from the account.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗