VSCode extension v2.1.139: enabledPlugins:false ignored at hook-load time — disabled plugins still register hooks

Resolved 💬 1 comment Opened May 12, 2026 by cloudingenium-automation[bot] Closed Jun 11, 2026

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:

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

  1. Reload the VSCode window.
  2. 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.

View original on GitHub ↗

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