claude-code - 💡(How to fix) Fix enabledPlugins in managed settings does not auto-install plugins

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…

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.

Root Cause

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.

Fix Action

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": "..."
  }]
}

Code Example

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

---

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

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:
    {
      "extraKnownMarketplaces": { "<marketplace>": { ... } },
      "enabledPlugins": { "<plugin>@<marketplace>": true }
    }
  2. Start a new Claude Code session
  3. Observe that plugin cache files are present but hooks do not fire
  4. 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

extent analysis

TL;DR

The issue can be resolved by ensuring that the plugin is properly registered in installed_plugins.json after being downloaded to the local cache.

Guidance

  • Verify that the enabledPlugins setting in remote-settings.json is correctly formatted and points to the correct marketplace and plugin.
  • Check the cache directory ~/.claude/plugins/cache/<marketplace>/<plugin>/<version>/ to confirm that the plugin files are being downloaded correctly.
  • Manually adding the plugin entry to installed_plugins.json can serve as a temporary workaround, but a permanent fix would involve modifying the code to automatically register the plugin after download.
  • Investigate the code responsible for updating installed_plugins.json to determine why the plugin is not being registered automatically.

Example

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

This example shows the format of the plugin entry that should be added to installed_plugins.json.

Notes

The issue seems to be specific to the macOS environment, but it's unclear if this is a platform-specific bug or a general issue with the plugin registration process.

Recommendation

Apply workaround: Manually add the plugin entry to installed_plugins.json until a permanent fix can be implemented, as this allows teams to deploy plugins via managed settings while the issue is being addressed.

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

claude-code - 💡(How to fix) Fix enabledPlugins in managed settings does not auto-install plugins