claude plugin update does not resolve newly-declared plugin dependencies (install does)

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

What happens

When a plugin's manifest gains a dependencies entry in a newer version, claude plugin update upgrades the plugin but does not resolve the newly-declared dependency. The plugin then fails to load.

claude plugin install re-run over the same broken install does resolve it, so the capability exists — it just isn't reached from the update path.

Reproduction

  1. Publish a marketplace where plugin A v1 declares no dependencies, and plugin B also exists in the catalog.
  2. claude plugin install A@my-marketplace — installs cleanly.
  3. Publish v2 of A whose manifest declares dependencies: ["B"].
  4. claude plugin marketplace update my-marketplace
  5. claude plugin update A@my-marketplace -y

Result:

✔ Plugin "A" updated from 1.0.0 to 2.0.0 for scope user.

then:

❯ A@my-marketplace
  Status: ✘ failed to load
  Error: Dependency "B@my-marketplace" is not installed — run
  `claude plugin install B@my-marketplace`, or check that its marketplace is added

The asymmetry

claude plugin install A@my-marketplace over the already-broken install resolves it:

✔ Plugin "A@my-marketplace" is already installed (scope: user) (+ 1 dependency: B)

A fresh install of v2 also resolves correctly (+ 1 dependency: B). Only the update path misses it.

Expected

claude plugin update resolves dependencies the same way install does — or, failing that, the docs state that adding a dependency requires users to re-run install.

claude plugin update --help exposes only --scope and --yes; there's no repair/resolve subcommand under claude plugin --help. The plugin-dependencies documentation describes install-time resolution and doesn't mention the update path.

Environment

Claude Code CLI 2.1.231, macOS. Measured on two marketplace source types — a local directory source and a git source served over smart HTTP — with identical behaviour on both.

View original on GitHub ↗

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