Cowork: personal marketplace plugin removed by RemotePluginManager sync on every cycle
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
A plugin installed from a personal Git-based marketplace (registered via extraKnownMarketplaces in ~/.claude/settings.json) is repeatedly removed by RemotePluginManager during its sync cycle. The plugin installs successfully via the Cowork GUI, but within seconds RemotePluginManager marks it as NOT_AVAILABLE and removes it.
The plugin works fine via Claude Code CLI (LocalPluginsReader handles it correctly). The issue is specific to the Cowork/desktop plugin flow.
Root cause: RemotePluginManager fetches 18 browsable plugins from the remote API (fetchBrowsableRemotePlugins). Any installed plugin not in that list is treated as NOT_AVAILABLE and removed. Personal marketplace plugins are never in the remote browsable list, so they're always removed.
extraKnownMarketplaces is not propagated to Cowork. The CLI side reads this from ~/.claude/settings.json and handles it correctly. The Cowork side's cowork_settings.json has the plugin in enabledPlugins but missing the extraKnownMarketplaces entry, so RemotePluginManager doesn't know the marketplace exists.
What Should Happen?
Personal marketplace plugins registered via extraKnownMarketplaces should persist in Cowork sessions. Either:
extraKnownMarketplacesfrom~/.claude/settings.jsonshould be propagated to Cowork's plugin resolutionRemotePluginManagershould not remove plugins that belong to known (non-official) marketplaces- The NOT_AVAILABLE cleanup should only apply to plugins from the official remote catalog
Error Messages/Logs
From ~/Library/Logs/Claude/main.log:
12:41:23 [info] [PluginsFetcher] fetchAutoInstalledPlugins: 0 plugins
12:41:23 [info] [RemotePluginManager] Delta: 0 to download, 0 to remove
12:41:24 [info] [PluginsFetcher] fetchBrowsableRemotePlugins: 18 plugins (offset=0, hasMore=false)
12:41:25 [info] [RemotePluginManager] Removed 1 user-installed plugins set to NOT_AVAILABLE
12:41:25 [info] [RemotePluginManager] Sync complete: 0 downloaded, 0 removed, 0 orphans cleaned
12:41:26 [info] [LocalPluginsReader] Found 1 local plugins
12:41:27 [info] [NativeMarketplaceReader] Found 2 marketplace(s)
The cycle repeats every time:
- User installs plugin via GUI →
Installed plugin: wafery-base-pack✓ - Sync runs →
fetchBrowsableRemotePlugins: 18 plugins(personal marketplace not included) Removed 1 user-installed plugins set to NOT_AVAILABLE- New Cowork sessions don't get the plugin
Meanwhile LocalPluginsReader always reports: Found 1 enabled local plugins (1 installed) — the CLI side works fine.
Steps to Reproduce
- Register a personal marketplace in
~/.claude/settings.json:
``json``
{
"extraKnownMarketplaces": {
"my-marketplace": {
"source": { "source": "github", "repo": "user/my-plugins" }
}
}
}
- Install the plugin via Claude Code CLI:
claude plugin install my-plugin@my-marketplace— works fine - Open Claude Desktop → Customize → the marketplace and plugin are visible
- Click Install for Cowork — install succeeds
- Wait ~30 seconds for
RemotePluginManagersync to run - Plugin is removed (Cowork view shows "Install" button again instead of "Manage")
- Start a Cowork session — plugin skills and MCP tools are not available
Additional Context
Two separate plugin systems are involved:
LocalPluginsReader— reads from~/.claude/plugins/, respectsextraKnownMarketplaces. Works correctly.RemotePluginManager— syncs with remote API, does NOT respectextraKnownMarketplaces. Removes personal marketplace plugins.
cowork_settings.json at ~/Library/Application Support/Claude/local-agent-mode-sessions/{session}/ has enabledPlugins with the plugin listed, but no extraKnownMarketplaces, so the Cowork side can't resolve the marketplace.
This was working previously — the regression likely started when RemotePluginManager added the NOT_AVAILABLE cleanup logic for plugins not in the browsable list.
Claude Code Version
2.1.87
Platform
macOS
Operating System
macOS 15.3.2 (Darwin 25.3.0)
This issue has 7 comments on GitHub. Read the full discussion on GitHub ↗