claude-code - 💡(How to fix) Fix VSCode extension v2.1.139: enabledPlugins:false ignored at hook-load time — disabled plugins still register hooks

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…

In Claude Code VSCode extension v2.1.139, plugins marked as enabledPlugins: { "<name>@<marketplace>": false } in ~/.claude/settings.json are correctly listed as "disabled" in the plugin count, but their hooks are still loaded and registered at session start.

Root Cause

In Claude Code VSCode extension v2.1.139, plugins marked as enabledPlugins: { "<name>@<marketplace>": false } in ~/.claude/settings.json are correctly listed as "disabled" in the plugin count, but their hooks are still loaded and registered at session start.

Fix Action

Workaround

Physically rename the plugin's cache directory so the loader can't find it:

cd ~/.claude/plugins/cache/claude-plugins-official
mv hookify hookify.disabled
mv ralph-loop ralph-loop.disabled
mv security-guidance security-guidance.disabled
# reload window

After this, the Loaded hooks from standard location for plugin … lines for those plugins disappear from the log.

Code Example

"enabledPlugins": {
     "hookify@claude-plugins-official": false,
     "ralph-loop@claude-plugins-official": false,
     "security-guidance@claude-plugins-official": false
   }

---

[DEBUG] Loaded hooks from standard location for plugin jc-cloud-ingenium:[DEBUG] Loaded hooks from standard location for plugin hookify: …               ← disabled
[DEBUG] Loaded hooks from standard location for plugin ralph-loop: …            ← disabled
[DEBUG] Loaded hooks from standard location for plugin security-guidance: …    ← disabled
[DEBUG] Found 28 plugins (11 enabled, 17 disabled)
[DEBUG] Registered 53 hooks from 11 plugins

---

cd ~/.claude/plugins/cache/claude-plugins-official
mv hookify hookify.disabled
mv ralph-loop ralph-loop.disabled
mv security-guidance security-guidance.disabled
# reload window
RAW_BUFFERClick to expand / collapse

Summary

In Claude Code VSCode extension v2.1.139, plugins marked as enabledPlugins: { "<name>@<marketplace>": false } in ~/.claude/settings.json are correctly listed as "disabled" in the plugin count, but their hooks are still loaded and registered at session start.

Repro

  1. Install multiple plugins via the marketplace (e.g. hookify@claude-plugins-official, ralph-loop@claude-plugins-official, security-guidance@claude-plugins-official).
  2. Set them all to false in ~/.claude/settings.json:
    "enabledPlugins": {
      "hookify@claude-plugins-official": false,
      "ralph-loop@claude-plugins-official": false,
      "security-guidance@claude-plugins-official": false
    }
  3. Reload the VSCode window.
  4. Tail the Claude VSCode extension log (~/.vscode-server-insiders/data/logs/<TIMESTAMP>/exthost*/Anthropic.claude-code/Claude VSCode.log).

Expected

Only enabled plugins should have their hooks/hooks.json loaded. Disabled plugins should be a no-op.

Actual

Log shows hooks from all installed plugins being loaded regardless of the enabledPlugins: false setting:

[DEBUG] Loaded hooks from standard location for plugin jc-cloud-ingenium: …
[DEBUG] Loaded hooks from standard location for plugin hookify: …               ← disabled
[DEBUG] Loaded hooks from standard location for plugin ralph-loop: …            ← disabled
[DEBUG] Loaded hooks from standard location for plugin security-guidance: …    ← disabled
[DEBUG] Found 28 plugins (11 enabled, 17 disabled)
[DEBUG] Registered 53 hooks from 11 plugins

The plugin count line correctly says 11 enabled / 17 disabled, but the loader still walks every plugin's hooks/hooks.json. The disabled plugins' PreToolUse / PostToolUse / Stop / UserPromptSubmit hooks are then registered and fire on every relevant event.

Impact

For plugins like hookify (which spawns 4 python3 subprocesses on each of UserPromptSubmit / PreToolUse / PostToolUse / Stop), this adds ~100ms latency to every tool call and event for users who deliberately disabled it. Multiplied across the typical session, this is a meaningful slowdown plus log noise.

Workaround

Physically rename the plugin's cache directory so the loader can't find it:

cd ~/.claude/plugins/cache/claude-plugins-official
mv hookify hookify.disabled
mv ralph-loop ralph-loop.disabled
mv security-guidance security-guidance.disabled
# reload window

After this, the Loaded hooks from standard location for plugin … lines for those plugins disappear from the log.

Suggested fix

Gate the loadHooksFromStandardLocation() call on enabledPlugins[<name>@<marketplace>] !== false before walking the plugin's directory tree.

Environment

  • Claude Code VSCode extension: v2.1.139
  • VSCode Insiders, devcontainer on ARM64/LinuxKit
  • Plugins installed: 28 (11 enabled, 17 disabled per settings)

Related issues

  • #46936 (Feature: version constraints for enabledPlugins) — different feature ask
  • #51118 (enabledPlugins in managed settings does not auto-install) — different bug
  • #45323 (CLI: auto-install plugins from managed settings) — different feature

None of these cover the runtime "disabled plugins still load hooks" behavior.

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…

Still need to ship something?

×6

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

Back to top recommendations

TRENDING