[BUG] Plugin loader silently fails to load registered plugins after Windows reboot

Resolved 💬 2 comments Opened Mar 20, 2026 by hoklims Closed Apr 18, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

After a Windows reboot, Claude Code's plugin loader silently fails to load plugins that are correctly registered in ~/.claude/plugins/installed_plugins.json. This affects all marketplace plugins, not just a specific one.

Symptoms:

  1. The /plugin UI shows an empty "Installed" section despite valid entries in installed_plugins.json
  2. All plugin-contributed commands (e.g., /claude-hud:setup) disappear
  3. Plugin-contributed MCP servers stop loading
  4. The statusLine (which is a separate shell command in settings.json) continues to work — confirming the issue is specifically in the plugin loader, not in file corruption or path resolution
  5. Plugin skills symlinked into ~/.claude/skills/ continue to work (loaded independently)

Key observation: installed_plugins.json has valid data with correct installPath, version, and gitCommitSha — the registration is intact. The plugin loader simply doesn't activate them.

What Should Happen?

Plugins registered in installed_plugins.json with valid installPath pointing to existing directories should be loaded on every Claude Code launch, regardless of whether the system was rebooted.

Steps to Reproduce

  1. Install Claude Code on Windows 11
  2. Install marketplace plugins (e.g., claude-hud, context7, github)
  3. Verify plugins work: /plugin shows them in "Installed", commands are available
  4. Reboot Windows
  5. Launch Claude Code
  6. Run /plugin → "Installed" section is empty
  7. Plugin commands are gone
  8. installed_plugins.json still has all correct entries

Investigation Details

Environment:

  • OS: Windows 11 Pro 10.0.26200
  • Claude Code: 2.1.80
  • Shell: Git Bash (bash)
  • Runtime: Bun 1.3.7 (in persistent User PATH)
  • Node.js: v22.21.1

Files verified post-reboot:

  • ~/.claude/plugins/installed_plugins.json — intact, 16 plugins registered with valid Windows paths
  • ~/.claude/settings.json — intact, enabledPlugins has all entries set to true
  • Plugin cache directories — all exist with complete contents (.claude-plugin/plugin.json, commands/, skills/)
  • Bun binary at hardcoded path — exists and executable
  • statusLine.command — works correctly when tested manually from a fresh PowerShell process

What does NOT fix it:

  • Restarting Claude Code (without reboot) — works fine
  • Verifying file permissions — all files readable
  • Checking PATH — Bun is in persistent User-level PATH

What DOES fix it:

  • Running /plugin install <plugin-name> after each reboot (re-registers the same plugin)
  • On v2.1.76+, this works without manual cleanup of the cache directory first

Stale IDE lock files survive reboot:

~/.claude/ide/33311.lock  → {"pid":7544,"runningInWindows":true,...}
~/.claude/ide/39724.lock  → {"pid":7544,"runningInWindows":true,...}

These reference PIDs that no longer exist after reboot. Could stale lock files interfere with plugin loading?

Related Issues

  • #29132 — MCP/plugins/credentials not persisting on Windows (labeled stale, broader scope)
  • #31838 — Plugins invisible after alternating CLI/VSCode (same plugin loader failure)
  • jarrodwatts/claude-hud#196 — Downstream report with 4 user confirmations

Suggested Investigation Areas

  1. Stale lock file cleanup: Does the plugin loader check ~/.claude/ide/*.lock files and skip loading if it detects "active" sessions from before reboot?
  2. Windows path normalization: installed_plugins.json uses C:\\ paths — does the loader compare these correctly against runtime-resolved paths?
  3. Race condition on startup: Is there a timing issue where the plugin loader runs before the filesystem fully resolves all paths after boot?
  4. enabledPlugins vs installed_plugins.json sync: Does the loader require both files to agree, and could a write ordering issue cause a mismatch?

Claude Model

Opus 4.6

Is this a regression?

Yes, this worked in a previous version

Last Working Version

Approximately v2.1.53 (based on reports from multiple users)

Claude Code Version

2.1.80 (Claude Code)

Platform

Anthropic API

Operating System

Windows 11 Pro

Terminal/Shell

Git Bash

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗