Desktop Cowork: RemotePluginManager removes 3rd-party GitHub marketplace plugins on every sync
Summary
Claude Desktop (Cowork mode) removes all plugins from third-party GitHub-sourced marketplaces after every restart. The RemotePluginManager.syncPlugins() cleanup marks them as NOT_AVAILABLE because it only protects source: "manual" marketplaces, not source: "github" ones.
Reproduction
- Add a third-party GitHub marketplace in Claude Desktop (e.g.,
cogni-work/insight-wavewith 14 plugins) - Install plugins from that marketplace in Cowork mode
- Restart Claude Desktop
- All plugins from the marketplace are gone from the UI
Log evidence (~/Library/Logs/Claude/main.log)
20:58:27-49 [CustomPlugins] installPlugin: remote API install succeeded for plugin cogni-*@insight-wave (source=remote, mode=ccd)
... all 14 plugins installed successfully ...
20:59:11 [remoteMarketplaceMigration] marketplace_migration.invoked
20:59:12 [RemotePluginManager] Starting remote plugins sync
20:59:12 [PluginsFetcher] fetchAutoInstalledPlugins: 0 plugins
20:59:14 [RemotePluginManager] Removed 14 user-installed plugins set to NOT_AVAILABLE
20:59:15 [RemotePluginManager] Removed 14 user-installed plugins set to NOT_AVAILABLE
Root cause
In RemotePluginManager._syncPlugins(), user-installed plugins are checked against Anthropic's remote catalog. Plugins not found in the catalog are removed unless they belong to a source: "manual" marketplace:
// Protection set only includes "manual" marketplaces
const j = featureFlag("720735283")
? new Set(serverMarketplaces.filter(z => z.source === "manual").map(z => z.name))
: new Set;
// Plugins from "github" marketplaces are NOT protected → deleted
const W = userPlugins.filter(V =>
!remoteCatalog.has(V.id) &&
!remoteCatalogByKey.has(key(V)) &&
!(V.marketplaceName && j.has(V.marketplaceName)) // "github" !== "manual"
);
Third-party marketplaces added via source: "github" (the standard way to add a marketplace) are not included in the protection set j, so their plugins are always removed during sync.
State after removal
~/Library/.../cowork_plugins/installed_plugins.json:{ "plugins": {} }— emptied by removal~/Library/.../cowork_plugins/cache/insight-wave/: All 14 plugin caches still exist (files not cleaned)~/Library/.../cowork_settings.json:enabledPluginsstill has all 14 entries (stale)
Expected behavior
Plugins from any user-added marketplace (source: "github", source: "manual", etc.) should be protected from the NOT_AVAILABLE cleanup. Only plugins that were pushed from Anthropic's server and are no longer available should be removed.
Workaround
Use Claude Code CLI (claude plugin install <name>@<marketplace>) instead of the Desktop Cowork GUI. CLI-installed plugins use the global ~/.claude/plugins/installed_plugins.json and are not subject to RemotePluginManager sync.
Environment
- Claude Desktop: latest (March 2026)
- Claude Code CLI: 2.1.81
- macOS (Darwin 25.3.0)
- Affected marketplace:
cogni-work/insight-wave(14 plugins), but likely affects all GitHub-sourced third-party marketplaces
This issue has 8 comments on GitHub. Read the full discussion on GitHub ↗