claude-code - 💡(How to fix) Fix [FEATURE] Support per-project enabledPlugins in .claude/settings.json

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Fix Action

Fix / Workaround

The only current workaround is disabling the plugin globally in ~/.claude/settings.json, which affects all projects — including ones where the plugin is wanted.

Code Example

// .claude/settings.json (project-level)
{
  "enabledPlugins": {
    "anthropic-skills": false
  }
}
RAW_BUFFERClick to expand / collapse

Preflight Checklist

  • I have searched existing requests and this feature hasn't been requested yet
  • This is a single feature request (not multiple features)

Problem Statement

Problem

enabledPlugins only works in the global ~/.claude/settings.json. There's no way to enable or disable a plugin per project. This means a plugin that's useful in one project loads its full skill descriptions into every project's context — even projects that set all the plugin's skills to "off" via skillOverrides.

The gap

Per-project overrides exist for most settings: permissions, hooks, skillOverrides, env. But enabledPlugins is global-only. This creates an asymmetry:

SettingGlobalPer-project
permissions
hooks
skillOverrides
env
enabledPlugins

Why skillOverrides: "off" doesn't solve this

Setting a plugin's skills to "off" suppresses auto-triggering but does not prevent the skill descriptions from loading into the system prompt. A project that disables all 28 anthropic-skills via skillOverrides still pays ~4,800 tokens per turn for descriptions it never uses.

Measured impact

From a real project audit (Opus 4, 200k context window):

  • 28 plugin skills set to "off" in project settings.local.json
  • All 28 descriptions still appear in the system prompt every turn
  • Cost: ~4,800 tokens/turn (2.4% of context window)
  • 6 of those skills duplicate project-level skills, adding ~920 tokens of pure redundancy

On a 200k window this is tolerable. On smaller models or projects that push the context limit, it's a meaningful loss — and it's entirely uncontrollable.

Proposed solution

Allow enabledPlugins in project-level .claude/settings.json (or .claude/settings.local.json), with the same merge semantics as other per-project settings. A project that sets "anthropic-skills": false at the project level would not load that plugin's skill descriptions into context for sessions in that project.

// .claude/settings.json (project-level)
{
  "enabledPlugins": {
    "anthropic-skills": false
  }
}

Proposed Solution

  1. skillOverrides: "off" should mean off The simplest change and the one that fixes the most pain. If I set a skill to "off", its description should not load into context.
  2. Per-project enabledPlugins for bulk control Individual skillOverrides entries work for fine-grained control. But when I want to disable an entire plugin for a project, I shouldn't have to list all 28 skills one by one. A project-level enabledPlugins: { "anthropic-skills": false } should disable the whole plugin for that project — no descriptions loaded, no skills available.

Alternative Solutions

The only current workaround is disabling the plugin globally in ~/.claude/settings.json, which affects all projects — including ones where the plugin is wanted.

Priority

Critical - Blocking my work

Feature Category

CLI commands and flags

Use Case Example

I use the anthropic-skills plugin globally — it's useful for general-purpose work. But I have one project with its own custom skills that cover the same ground. I don't need the plugin there.

Today:

I set all 28 plugin skills to "off" in my project's settings.local.json. They still load into context every turn. ~4,800 tokens. Autocompact can't evict them — they're in the system prompt. My only option is disabling the plugin globally, which breaks my other projects. With per-project enabledPlugins:

I add "anthropic-skills": false to my project's .claude/settings.json. No descriptions load. 4,800 tokens freed. The plugin still works in every other project.

Additional Context

No response

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING