[Bug] Project-level enabledPlugins replaces global enabledPlugins instead of merging

Resolved 💬 2 comments Opened Jan 13, 2026 by inromualdo Closed Feb 27, 2026

Bug Description

When a project has .claude/settings.json with an enabledPlugins block, it completely replaces the global enabledPlugins from ~/.claude/settings.json instead of merging with them.

This causes globally enabled plugins/skills to be unavailable in projects that have any project-level plugin configuration.

Steps to Reproduce

  1. Enable plugins globally in ~/.claude/settings.json:
{
  "enabledPlugins": {
    "frontend-design@claude-plugins-official": true,
    "code-review@claude-plugins-official": true
  }
}
  1. Create a project with .claude/settings.json that enables a different plugin:
{
  "enabledPlugins": {
    "code-simplifier@claude-plugins-official": true
  }
}
  1. Open Claude Code in that project
  2. Try to use the frontend-design skill

Expected Behavior

Global and project enabledPlugins should merge (union):

  • All globally enabled plugins remain available
  • Project can add additional plugins
  • Project can optionally disable specific global plugins with false
// Effective merged result:
{
  "enabledPlugins": {
    "frontend-design@claude-plugins-official": true,  // from global
    "code-review@claude-plugins-official": true,      // from global
    "code-simplifier@claude-plugins-official": true   // from project
  }
}

Actual Behavior

Project enabledPlugins replaces global entirely:

  • Only code-simplifier is available
  • frontend-design and code-review are not found
  • Skills from globally enabled plugins fail to load

Impact

  • Users must duplicate all global plugins in every project's settings
  • Adding any project-level plugin breaks all global plugins
  • Inconsistent behavior - skills work in some projects but not others

Environment

  • claude-code version: 2.1.6
  • OS: macOS (darwin arm64)

Related Issues

  • #17017 - Same behavior for permissions (replace instead of merge)
  • #4442 - Hierarchical configuration system request
  • #11626 - Settings merging request (closed as dup of #4442)

Suggested Fix

Apply the same merge logic requested in #17017 to enabledPlugins:

  • Union of global and project enabled plugins
  • Project can override with explicit false to disable a global plugin

View original on GitHub ↗

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