Support version pinning in plugin install command
Summary
Recently, Claude Code has a way to [tag versions of plugins]( https://code.claude.com/docs/en/plugin-dependencies#tag-plugin-releases-for-version-resolution).
However, this feature only seems to be half implemented. It is only used for dependency resolution. It is neither supported by the plugin install command, or in settings.json. Users should be able to opt in to specific versions of a plugin, not just through dependency management.
claude plugin install <plugin>@<marketplace> has no way to specify a version. The version resolution engine (semver ranges, git tag enumeration via {name}--v{version}, maxSatisfying) exists and works, but is only reachable through the inter-plugin dependency resolution path.
Current behavior
install <plugin>
-s, --scope <scope> # user, project, or local
--config <key=value> # plugin manifest config
Always installs whatever the marketplace catalog currently points to. No --version flag.
Requested behavior
claude plugin install secrets-vault@acme-tools --version "~2.1.0"
or inline syntax like:
claude plugin install secrets-vault@acme-tools@2.1.0
This would let users pin a plugin to a specific version or semver range, using the same tag resolution logic that already exists for dependency constraints.
It should also be accessible in settings.json.
Workarounds
- Pin the entire marketplace to a git ref (
/plugin marketplace add repo.git#v1.0.0) — freezes all plugins, not just one - Disable auto-update after install — prevents upgrades but doesn't control which version you initially get
Context
The plugin dependency versioning docs describe a full version resolution system: {name}--v{version} git tags, semver range constraints (~2.1.0, ^2.0, >=1.4, =2.1.0), and intersection of multiple constraints. All of this machinery exists in the codebase but is not exposed to end users via the install command.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗