[BUG] Cowork: Custom marketplace plugins removed by RemotePluginManager sync — marked NOT_AVAILABLE on every session start

Status Fixed / completed
Reported on v2.1.87
Maintainer reply None cached
Activity 2 comments · opened Apr 1, 2026 · closed Apr 1, 2026

Description

Custom marketplace plugins installed in Cowork are immediately removed by RemotePluginManager sync on every session start. The plugins install successfully, but when a new session begins, the sync marks them as NOT_AVAILABLE and removes them from the active session. Only first-party plugins (e.g., cowork-plugin-management from knowledge-work-plugins) survive the sync.

The user sees "authenticating → working on it" and then nothing happens — the session completes silently with no output.

Steps to Reproduce

  1. In Cowork, add a custom GitHub marketplace (e.g., https://github.com/<user>/cowork-plugins)
  2. Wait for marketplace sync to complete (pollSyncUntilDone...settled with status=success)
  3. Install a plugin from the custom marketplace (e.g., hello-world@cowork-plugins)
  4. Installation succeeds: installPlugin: remote API install succeeded
  5. Start a new Cowork session and invoke a skill from the plugin (e.g., /hello-world:hello-echo)
  6. Nothing happens — the skill is silently not recognized

Root Cause (from logs)

The RemotePluginManager sync cycle runs on every session start:

  1. fetchAutoInstalledPlugins: 0 plugins
  2. fetchBrowsableRemotePlugins: 18 plugins (offset=0, hasMore=false)always exactly 18, regardless of custom marketplaces
  3. Removed 1 user-installed plugins set to NOT_AVAILABLE
  4. Using 1 remote plugins — only cowork-plugin-management remains

The browsable plugins catalog never includes custom marketplace plugins. The install API registers the plugin, but fetchBrowsableRemotePlugins returns only curated/official plugins. The sync logic then removes any installed plugin not in the catalog.

Audit log confirmation

The VM process returns immediately with zero API usage:

"result": "Unknown skill: hello-world:hello-echo"
"duration_ms": 8
"duration_api_ms": 0
"had_first_response": false

RPM manifest after sync

Only the first-party plugin survives:

{
  "plugins": [
    {
      "id": "plugin_016jbzs7aGBZSgBfSWhp4ToX",
      "name": "cowork-plugin-management",
      "marketplaceName": "knowledge-work-plugins",
      "installedBy": "user",
      "installationPreference": "available"
    }
  ]
}

Custom marketplace plugins never appear in this manifest after sync.

Log Evidence

# Install succeeds
[CustomPlugins] installPlugin: remote API install succeeded for plugin hello-world@cowork-plugins

# Marketplace sync succeeds
[remoteMarketplaceClient] pollSyncUntilDone id=marketplace_01KEiP7xZbHaYQ8LQjjJEhVn settled with status=success after 19865ms

# But on session start, plugin is removed
[RemotePluginManager] Starting remote plugins sync
[PluginsFetcher] fetchBrowsableRemotePlugins: 18 plugins (offset=0, hasMore=false)
[RemotePluginManager] Removed 1 user-installed plugins set to NOT_AVAILABLE
[RemotePluginManager] Sync complete: 0 downloaded, 0 removed, 0 orphans cleaned
[LocalAgentModeSessionManager] Using 1 remote plugins

This pattern repeats on every session start, dating back to at least 2026-03-30.

Attempted Fixes

  • Removed and re-added the custom marketplace — same result
  • Removed both custom marketplaces (cowork-plugins and resume-agent) and re-added — same result
  • Reinstalled the plugin after marketplace re-sync — same result
  • Verified plugin structure matches working cowork-plugin-management plugin.json format exactly

Expected Behavior

Custom marketplace plugins that install successfully via the remote API should:

  1. Appear in the fetchBrowsableRemotePlugins catalog after marketplace sync
  2. Persist in the RPM manifest across session starts
  3. Be mounted into the VM and available as skills

Environment

  • App version: Claude Desktop (Cowork)
  • Claude Code SDK: 2.1.87
  • OS: macOS (Darwin 25.4.0, arm64)
  • VM: 4 CPUs, 4GB RAM, gvisor networking
  • Plugin structure: Standard .claude-plugin/plugin.json + skills/*/SKILL.md

Related Issues

  • #33718 — Plugin from custom marketplace not appearing (CLI, different mechanism)
  • #25278 — Claude Code plugins should be available in Cowork sessions

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗