Claude Desktop: Plugin browser shows 0 plugins due to truncated JSON from VM-internal CLI v2.1.51

Resolved 💬 2 comments Opened Mar 6, 2026 by aymoon1982 Closed Mar 9, 2026

Summary

The plugin marketplace browser in Claude Desktop always shows 0 available plugins. The root cause is a truncated JSON output bug in Claude Code CLI v2.1.51, which is the version the desktop app hardcodes inside its Linux VM.

Environment

  • Claude Desktop: v1.1.4498 (Windows 11 Pro)
  • Claude Code CLI (local): v2.1.69
  • VM-internal SDK version: v2.1.51 (hardcoded — written by [CCD] Wrote SDK version file: 2.1.51 every startup)

What happens

When opening the plugin browser, the desktop app runs inside the VM:

claude plugin list --json --available --cowork

CLI v2.1.51 returns truncated, invalid JSON — the output cuts off mid-string inside the installPath field:

{
  "installed": [
    {
      "id": "cowork-plugin-management@knowledge-work-plugins",
      "version": "0.2.2",
      "scope": "user",
      "enabled": true,
      "installPath": "mnt/.claude/cowork

The JSON is never closed. The desktop app's MarketplacePluginManagerCLI parser throws:

Error: CLI output does not contain valid JSON. Output: {
  "installed": [
    {
      "id": "cowork-plugin-management@knowledge-work-plugins",
      ...
      "installPath": "mnt/.claude/cowork

Result chain:

listAvailablePlugins() fails
  → fetchBrowsableRemotePlugins: 0 plugins
  → CustomPlugins: Merged 0 local + 0 remote = 0 total plugins
  → Plugin browser shows nothing

Relevant log entries (main.log)

[VMCLIRunner] Running: claude plugin list --json --available --cowork
[MarketplacePluginManagerCLI] Failed to parse plugin list: CLI output does not contain valid JSON.
[PluginsFetcher] fetchBrowsableRemotePlugins: 0 plugins (offset=0, hasMore=false)
[CustomPlugins] Fetched 0 remote plugins
[CustomPlugins] Merged 0 local + 0 remote = 0 total plugins

This error repeats on every attempt (including retries).

Root cause

The VM always installs Claude Code SDK v2.1.51 regardless of what version is installed locally. In v2.1.51, plugin list --json truncates output when installPath contains VM-prefixed paths (starting with mnt/). The desktop app was updated to call --available and parse the newer JSON format, but the VM SDK was not updated alongside it.

Impact

The plugin marketplace browser is completely non-functional. No plugins from Anthropic or third parties are visible or installable through the desktop app UI.

Workaround

Use the local CLI directly:

claude
/plugin

This uses the local v2.1.69 CLI (outside the VM) and works correctly.

Expected behavior

The VM-internal SDK should be updated to a version that does not truncate plugin list --json output, so listAvailablePlugins() can parse it and display the marketplace.

View original on GitHub ↗

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