[BUG] claude.ai "Add marketplace" hides marketplace_name_taken behind a generic "failed to add" error

Status Open
Reported on v2.1.296
Maintainer reply None cached
Activity 0 comments · opened Oct 13, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report
  • [x] I am using the latest version of Claude Code

What's Wrong?

Adding a GitHub marketplace on claude.ai (Customize → Plugins → Add marketplace → Add from a repository) fails with only a generic "failed to add" message. The API returns a specific, actionable error, marketplace_name_taken, but the UI does not show it.

In my case the cause was the repo-name collision described in #95100 (similar, related issue): org-a/skills-private was already added and stored as skills-private, so adding user-b/skills-private was rejected. Nothing in the UI hinted at that. The repo's .claude-plugin/marketplace.json declares a different, unique name, and claude plugin validate . passes, so everything pointed at a manifest or GitHub-access problem.

I spent a long time on the wrong fixes: changing the manifest name (no effect, because the name comes from the repo), moving other manifest files out of the repo root, and checking GitHub App access. The real error only showed up in the browser's DevTools network response. Renaming the repo on GitHub fixed it immediately.

What Should Happen?

  1. The UI should show the API's error message and say which name is taken and by which existing marketplace, e.g. "A marketplace named skills-private already exists (from org-a/skills-private). Marketplace names are derived from the repository name."
  2. More generally, show the specific error_code / message for every add or sync failure instead of a generic one (see also #91933 and #101807, where the UI also hides the real validation error).

Error Messages/Logs

# UI
Failed to add marketplace.

# Network response (DevTools)
{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "A marketplace with this name already exists.",
    "details": {
      "error_visibility": "user_facing",
      "error_code": "marketplace_name_taken"
    }
  }
}

# request_id: req_011CfzuEdnabJGWjgRTU9npR

Steps to Reproduce

  1. On claude.ai, add marketplace org-a/skills-private. Succeeds, stored as skills-private.
  2. Add a different repo with the same repo name, user-b/skills-private, whose marketplace.json declares a unique name.
  3. The UI shows a generic failure. The network response shows marketplace_name_taken.

Note that the error is already marked "error_visibility": "user_facing" in the response, yet it is not shown to the user.

Is this a regression?

I don't know

Claude Code Version

2.1.296 (Claude Code)

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Other

Additional Information

Related: #95100 (root cause: marketplace name derived from bare repo name), #91933 and #101807 (UI hides real sync/validation errors).

View original on GitHub ↗