[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
- Enable plugins globally in
~/.claude/settings.json:
{
"enabledPlugins": {
"frontend-design@claude-plugins-official": true,
"code-review@claude-plugins-official": true
}
}
- Create a project with
.claude/settings.jsonthat enables a different plugin:
{
"enabledPlugins": {
"code-simplifier@claude-plugins-official": true
}
}
- Open Claude Code in that project
- Try to use the
frontend-designskill
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-simplifieris available frontend-designandcode-revieware 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
falseto disable a global plugin
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗