claude-code - 💡(How to fix) Fix claude plugin install <name>@<local-marketplace> hangs indefinitely on CLI 2.1.112 [1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
anthropics/claude-code#49627Fetched 2026-04-17 08:35:49
View on GitHub
Comments
0
Participants
1
Timeline
4
Reactions
0
Participants
Timeline (top)
labeled ×4

claude plugin install <plugin>@<marketplace-name> --scope user blocks indefinitely with no progress output when <marketplace-name> is a local-path marketplace registered via claude plugin marketplace add <local-repo-path>. No error, no progress indicator, no timeout signal — the command hangs until killed. subprocess.TimeoutExpired fires at 60 seconds.

Error Message

Silent hang. No stdout, no stderr, no progress indication. Forcing SIGTERM leaves the marketplace registered (claude plugin marketplace remove <name> restores clean state).

Root Cause

Blocks populated-project rollback testing for plugins-in-development. The conventional "verify plugin disable is a clean one-command revert" workflow (marketplace add → install → enable → disable → uninstall → marketplace remove) is not exercisable from CI or pytest fixtures, because step 2 (install) hangs. Downstream: CI jobs that attempt this flow consume runner time until timeout or killed; developers fall back to validate-only coverage, which is strictly weaker than enable/disable invariant verification.

Fix Action

Workaround

Fall back to claude plugin validate <path> as the sole invariant check; skip the enable/disable cycle with a per-session note in test output documenting the CLI blocker. See tests/plugin/test_rollback_canonical_sessions.py in this repo for the measured-caveat pattern.

Code Example

{
     "name": "vernant-local",
     "owner": { "name": "Test Owner", "email": "[email protected]" },
     "plugins": [
       { "name": "<plugin-name>", "source": "./", "description": "local dev test", "version": "1.0.0" }
     ]
   }
RAW_BUFFERClick to expand / collapse

Draft GitHub issue — Anthropic Claude Code

Status: draft; user must file on anthropics/claude-code manually (I cannot open GitHub issues on the user's behalf).

Suggested title: claude plugin install <name>@<local-marketplace> hangs indefinitely on local-path marketplace

Suggested labels: bug, plugins, cli


Environment

  • CLI version: claude --version2.1.112 (Claude Code)
  • Platform: macOS (Darwin 25.4.0, Apple Silicon)
  • Shell: zsh

Summary

claude plugin install <plugin>@<marketplace-name> --scope user blocks indefinitely with no progress output when <marketplace-name> is a local-path marketplace registered via claude plugin marketplace add <local-repo-path>. No error, no progress indicator, no timeout signal — the command hangs until killed. subprocess.TimeoutExpired fires at 60 seconds.

Reproduction steps

  1. In any repo root, create a minimal .claude-plugin/plugin.json (valid per claude plugin validate).
  2. Create .claude-plugin/marketplace.json:
    {
      "name": "vernant-local",
      "owner": { "name": "Test Owner", "email": "[email protected]" },
      "plugins": [
        { "name": "<plugin-name>", "source": "./", "description": "local dev test", "version": "1.0.0" }
      ]
    }
  3. claude plugin validate <repo-root>PASS (confirms manifests are well-formed; marketplace validates with a benign "no description" warning).
  4. claude plugin marketplace add <repo-root> --scope userPASS (returncode 0; visible in claude plugin marketplace list).
  5. claude plugin install <plugin-name>@vernant-local --scope userHANGS (no output, no progress, no exit). Timeout-killed at 60s.

Expected behavior

Either:

  • Install succeeds with progress output and returncode 0, or
  • Install fails with a descriptive error and non-zero returncode (e.g., "local-path marketplace install not supported; use --plugin-dir on enable instead").

Observed behavior

Silent hang. No stdout, no stderr, no progress indication. Forcing SIGTERM leaves the marketplace registered (claude plugin marketplace remove <name> restores clean state).

Impact

Blocks populated-project rollback testing for plugins-in-development. The conventional "verify plugin disable is a clean one-command revert" workflow (marketplace add → install → enable → disable → uninstall → marketplace remove) is not exercisable from CI or pytest fixtures, because step 2 (install) hangs. Downstream: CI jobs that attempt this flow consume runner time until timeout or killed; developers fall back to validate-only coverage, which is strictly weaker than enable/disable invariant verification.

Suggested fix directions

  1. Add a non-blocking timeout + clear error path to plugin install when the marketplace source is a local path that doesn't support the expected remote protocol.
  2. Or: add a claude plugin enable --plugin-dir <path> local-enable flag that bypasses the marketplace install step entirely (the install step's job is to cache the plugin; for a local path there is nothing to cache).
  3. Or: document in plugins-reference that local-path marketplaces are for listing/discovery only and not for install — and have plugin install fail fast with that message when the source resolves to a local directory.

Workaround

Fall back to claude plugin validate <path> as the sole invariant check; skip the enable/disable cycle with a per-session note in test output documenting the CLI blocker. See tests/plugin/test_rollback_canonical_sessions.py in this repo for the measured-caveat pattern.

extent analysis

TL;DR

The claude plugin install command hangs indefinitely when installing a plugin from a local-path marketplace, and a potential fix is to add a non-blocking timeout and clear error path or introduce a local-enable flag that bypasses the marketplace install step.

Guidance

  • Verify that the local-path marketplace is correctly registered and visible in claude plugin marketplace list to ensure the issue is not with marketplace registration.
  • Consider implementing a timeout mechanism in the plugin install command to prevent indefinite hangs and provide a clear error message when the marketplace source is a local path.
  • Explore adding a --plugin-dir flag to claude plugin enable to allow local plugins to be enabled without going through the marketplace install step.
  • Review the plugins-reference documentation to ensure it accurately reflects the capabilities and limitations of local-path marketplaces.

Example

No code snippet is provided as the issue does not contain sufficient information to create a specific example.

Notes

The suggested fix directions provided in the issue are a good starting point, but further investigation may be needed to determine the root cause of the hang and to identify the most effective solution.

Recommendation

Apply a workaround by falling back to claude plugin validate <path> as the sole invariant check and skipping the enable/disable cycle, as described in the issue, until a more permanent fix can be implemented. This will allow developers to continue testing and verifying plugins while a more comprehensive solution is developed.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

Either:

  • Install succeeds with progress output and returncode 0, or
  • Install fails with a descriptive error and non-zero returncode (e.g., "local-path marketplace install not supported; use --plugin-dir on enable instead").

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

claude-code - 💡(How to fix) Fix claude plugin install <name>@<local-marketplace> hangs indefinitely on CLI 2.1.112 [1 participants]