[BUG] `claude plugin update <name>` fails for installed plugins unless fully qualified; error is identical to "plugin does not exist" (2.1.221)

Status Open
Reported on v2.1.221
Maintainer reply None cached
Activity 1 comment · opened Aug 4, 2026

Summary

claude plugin update <name> fails for every installed plugin unless the name is fully qualified as <name>@<marketplace>. The failure message is identical to the one for a plugin that isn't installed at all, so it reads as a broken installation rather than a usage error.

install and uninstall both accept bare names, and --help documents the argument only as <plugin>, so there is nothing to suggest update is different.

Reproduce

Using only plugins from the official marketplace:

$ claude plugin update superpowers
Checking for updates for plugin "superpowers" at user scope…
✘ Failed to update plugin "superpowers": Plugin "superpowers" not found

$ claude plugin update superpowers@claude-plugins-official
Checking for updates for plugin "superpowers@claude-plugins-official" at user scope…
✔ superpowers is already at the latest version (6.2.0).

superpowers is installed and enabled throughout; claude plugin list shows it.

The message is the problem

A plugin that genuinely does not exist produces the same string:

$ claude plugin update nosuchplugin
✘ Failed to update plugin "nosuchplugin": Plugin "nosuchplugin" not found

$ claude plugin update superpowers
✘ Failed to update plugin "superpowers": Plugin "superpowers" not found

Byte-identical. There is no signal that the argument form is what's wrong.

By contrast uninstall resolves bare names and returns a distinct message when one is genuinely absent — Plugin "nosuchplugin" not found in installed plugins — which shows the bare-name lookup exists elsewhere in the CLI.

Scope of the bug

Reproduced on five plugins across two marketplaces and both source types (a directory-sourced marketplace and the official GitHub one). Bare fails and qualified succeeds in every case, including superpowers and aws-core from claude-plugins-official.

Impact

This silently defeats the obvious upgrade path. In our case a plugin sat several minor versions behind for weeks: claude plugin update <name> reported "not found", which we read as a broken install, while the plugin remained installed and enabled the whole time. Skills that had moved between plugins had stopped being available with no error anywhere.

Expected

Either:

  1. update resolves bare names the way install and uninstall do — disambiguating or erroring only when a name is ambiguous across marketplaces; or
  2. the error distinguishes the two cases, e.g. Plugin "superpowers" is installed as "superpowers@claude-plugins-official" — specify the marketplace.

Option 1 matches the other subcommands. Option 2 alone would still have saved the debugging time.

Environment

  • Claude Code 2.1.221
  • macOS (darwin 25.5.0)

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗