enabledPlugins in managed settings does not auto-install plugins

Resolved 💬 4 comments Opened Apr 20, 2026 by Lehyu Closed Jun 5, 2026

Summary

When a plugin is specified in enabledPlugins via managed settings,
Claude Code downloads the plugin files to the local cache but does NOT register the plugin
in installed_plugins.json. As a result, the plugin's hooks are never executed.

Expected Behavior

If a plugin is listed in enabledPlugins in managed settings, Claude Code should
automatically install it (i.e., add the entry to installed_plugins.json) so that
hooks and other plugin functionality work without any manual steps from the user.

Actual Behavior

The plugin files are downloaded to the cache directory:
~/.claude/plugins/cache/<marketplace>/<plugin>/<version>/

But ~/.claude/plugins/installed_plugins.json is NOT updated, so the harness
does not load the plugin's hooks.

Steps to Reproduce

  1. Configure remote-settings.json (managed settings) with:

``json
{
"extraKnownMarketplaces": { "<marketplace>": { ... } },
"enabledPlugins": { "<plugin>@<marketplace>": true }
}
``

  1. Start a new Claude Code session
  2. Observe that plugin cache files are present but hooks do not fire
  3. Check ~/.claude/plugins/installed_plugins.json — no entry for the plugin exists

Workaround

Manually adding the plugin entry to installed_plugins.json resolves the issue:

{
  "<plugin>@<marketplace>": [{
    "scope": "user",
    "installPath": "~/.claude/plugins/cache/<marketplace>/<plugin>/<version>",
    "version": "<version>",
    "installedAt": "...",
    "lastUpdated": "..."
  }]
}

Impact

This makes managed/MDM-style plugin deployment non-functional. Teams cannot silently
deploy plugins to members via managed settings — every user must manually register
the plugin, defeating the purpose of managed settings.

Environment

  • OS: macOS

View original on GitHub ↗

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