[BUG] Desktop "Add marketplace" GUI fails with generic "Failed to add marketplace" (MARKETPLACE_ERROR:UNKNOWN) — git clone stalls in non-interactive SSH, killed at ~60s timeout

Open 💬 0 comments Opened Jul 15, 2026 by ITSalt

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?

Adding a plugin marketplace from a PUBLIC GitHub repo via the Desktop settings GUI (Settings → Plugins → Add ▾ → Add marketplace → Add from a repository → Sync) fails with a bare "Failed to add marketplace" and no reason shown. The identical operation from a terminal (claude plugin marketplace add <owner/repo>) succeeds in seconds.

Timing is the key clue: two attempts each failed EXACTLY ~60.0s after the "Adding marketplace" log line — a hard timeout, not a variable network failure.

Root cause: the GUI shells out to the bundled claude CLI to git clone the marketplace repo and kills it after ~60s. Run manually, the same CLI logs Cloning via SSH: git@github.com:<owner>/<repo>.git — it prefers SSH for the owner/repo form (even though the GUI logs an https:// URL, and no url.*.insteadOf git rewrite is configured). In the Desktop's non-interactive spawned process there is no usable ssh-agent / known_hosts entry, so the SSH clone stalls on a host-key/credential prompt until the 60s kill. The client then parses only the CLI's spinner line ("Adding marketplace…"), fails to recognize it, and collapses everything to MARKETPLACE_ERROR:UNKNOWN → the generic UI error.

This is NOT a size/bandwidth issue: the example repo's packed .git is ~22 MB and a full HTTPS clone finishes in ~4s. The terminal CLI succeeds because SSH is fully set up there AND its clone timeout is 120s (the CLI logs timeout: 120s), vs the GUI's ~60s.

Two distinct defects:

  1. Error surfacing — a clone timeout/failure is shown as an unactionable "Failed to add marketplace" (MARKETPLACE_ERROR:UNKNOWN). The real cause never reaches the UI, and the parser mislabels the CLI progress line as "git clone error output".
  2. Clone strategy + timeout in the GUI path — the clone resolves to SSH for owner/repo and hangs non-interactively, and uses a shorter (~60s) timeout than the CLI (120s).

Suggested fixes:

  • Prefer HTTPS for public marketplace clones from the GUI (or pass the full https URL straight to git without SSH resolution), and/or run the clone with -o BatchMode=yes so a missing SSH setup fails fast instead of hanging.
  • Surface the underlying git error / timeout instead of MARKETPLACE_ERROR:UNKNOWN.
  • Align the GUI clone timeout with the CLI (120s).

What Should Happen?

The marketplace is added and its plugins become browsable — same result as running claude plugin marketplace add <owner/repo> from a terminal. If the clone genuinely fails, the UI should show the underlying git error (e.g. an SSH/host-key failure or a timeout) instead of a generic "Failed to add marketplace".

Error Messages/Logs

[info]  [CCDMarketplacePluginManagerCLI] Adding marketplace: https://github.com/ITSalt/NaCl
        value: 'MARKETPLACE_ERROR:UNKNOWN',
        stack: 'Error: MARKETPLACE_ERROR:UNKNOWN
            at async Object.addMarketplace (app://.../index.chunk-*.js)'
[warn]  [CCDMarketplacePluginManagerCLI] Unrecognized git clone error output: Adding marketplace…

# Each attempt: "Adding marketplace" and the failure are exactly ~60.0s apart.
# For comparison, the same op via terminal CLI succeeds:
#   Cloning via SSH: git@github.com:ITSalt/NaCl.git
#   Cloning repository (timeout: 120s): git@github.com:ITSalt/NaCl.git
#   Successfully added marketplace: nacl

Steps to Reproduce

  1. Open Claude Code Desktop → Settings → Plugins.
  2. Click Add ▾ → Add marketplace → Add from a repository.
  3. In the URL field enter a public repo that hosts a plugin marketplace, e.g. ITSalt/NaCl (it has a valid .claude-plugin/marketplace.json on the default branch; the repo is public).
  4. Click Sync.
  5. Observe: after ~60s the dialog shows "Failed to add marketplace" with no reason.

Contrast (works): in a terminal, run claude plugin marketplace add ITSalt/NaCl — it clones via SSH and succeeds within seconds.

Claude Model

None

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

2.1.210 (Claude Code)

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

PowerShell

Additional Information

The failure is in the Desktop GUI marketplace-add flow, not the CLI — the bundled CLI (2.1.210) performs the same operation successfully from PowerShell.

Desktop app version: Claude 1.21459.0 (f7518f) 2026-07-14T05:32:17.000Z

The 2.1.210 above is the bundled Claude Code CLI version (claude --version); the Desktop app has its own version, added above.

Example marketplace repo (public, reproduces the issue): https://github.com/ITSalt/NaCl
Screenshots of the GUI flow and the failing "Failed to add marketplace" dialog are available on request.

View original on GitHub ↗