Feature: per-project plugin enable/disable override

Resolved 💬 3 comments Opened Mar 30, 2026 by pganapathy80 Closed May 3, 2026

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:

  1. Develop via git clone (~/.my-toolkit/ → symlinks into .claude/)
  2. Distribute the same toolkit as a marketplace plugin
  3. 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.

View original on GitHub ↗

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