Feature: per-project plugin enable/disable override
Problem
enabledPlugins in ~/.claude/settings.json is global — it applies to every project on the machine. There's no way to enable a plugin for one project but disable it for another.
This causes issues when:
- A developer maintains a toolkit via git clone (symlinked hooks/agents/skills) AND has the same toolkit published as a marketplace plugin
- The plugin is enabled globally for demo/distribution purposes
- Both the clone hooks and plugin hooks fire in every session, causing duplicate behavior (duplicate triage routers, duplicate session bootstrap, etc.)
Current behavior
// ~/.claude/settings.json (user-level, global)
{
"enabledPlugins": {
"my-toolkit@marketplace": true // applies to ALL projects
}
}
No project-level override exists. enabledPlugins is not recognized in .claude/settings.json (project-level).
Proposed solution
Allow project-level .claude/settings.json to override global plugin enablement:
// .claude/settings.json (project-level)
{
"enabledPlugins": {
"my-toolkit@marketplace": false // override: disable for THIS project only
}
}
Merge semantics: Project-level settings override user-level per plugin key. A plugin enabled globally but set to false at project level is disabled for that project. A plugin not mentioned at project level inherits the global setting.
Use case
Toolkit developers who:
- Develop via git clone (
~/.my-toolkit/→ symlinks into.claude/) - Distribute the same toolkit as a marketplace plugin
- Need the plugin enabled globally (for other projects / demo) but disabled in their dev project (where the clone is the source of truth)
Workaround
Currently the only workaround is to disable the plugin globally or remove the clone install — neither is ideal for developers who need both.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗