Plugin marketplaces can now be hosted on claude.ai itself, with full catalog fetching, caching and install support.
Plugin marketplaces can now be hosted directly on claude.ai instead of backed by a git repo or local marketplace.json, sourced from an organization library, personal uploads, or a claude.ai account. This adds a full pipeline: fetching a paginated plugin catalog from claude.ai's API, caching it to disk (known_marketplaces_claudeai.json plus a per-marketplace catalog cache with etag/If-None-Match support), handling gone/denied/policy-blocked/offline states, collision-safe slugging of claude.ai display names into CLI marketplace names, and downloading and installing plugin archives with sha256 verification and zip-safety checks. Errors surface through new ClaudeAiMarketplaceError/ClaudeAiPluginInstallError types with specific codes such as not_installable, no_identity, policy_blocked, and extract_refused.
Marketplaces backed by a claude.ai source must be added with claude plugin marketplace add --claudeai <name>; names starting with the reserved prefix can no longer be added manually. claude marketplace remove now rejects --scope for these marketplaces, since they aren't declared in any settings scope, and instead removes them through a dedicated hosted-marketplace removal path. New plugin/marketplace fields (claudeaiPluginId, archiveSha256, attributedMarketplaceName) support installs sourced this way.
List and JSON output now include claude.ai-hosted marketplaces for the account alongside local ones, with status/scope info and an Add: claude plugin marketplace add --claudeai <name> hint. The /plugin marketplace UI gains a third "hosted" category distinct from the existing browse-only claude.ai listings, with its own confirmation screen before adding and update-availability notes per plugin; when an installed plugin's version doesn't match the marketplace's published version, the marketplace details view shows a note like "N plugin updates available · update the marketplace to apply."