Skip to content

Feature: per-project plugin enable/disable override #40826

Description

@pganapathy80

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions