[BUG] Plugin enable/disable ignored - all skills loaded regardless of settings

Status Fixed / completed
Maintainer reply None cached
Activity 10 comments · opened Dec 8, 2025 · closed Aug 19, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] I can reproduce this bug with the latest version of Claude Code

Bug Description

tl;dr - plugins need individual folders and individual .claude-plugin/plugin.json to be respected.

When a marketplace defines multiple plugins from the same source directory, disabling one plugin has no effect - all skills from the entire directory are loaded regardless of enable/disable settings.

Reproduction

marketplace.json (from anthropic-agent-skills):

{
  "plugins": [
    {
      "name": "document-skills",
      "source": "./",
      "skills": ["./skills/xlsx", "./skills/docx", "./skills/pptx", "./skills/pdf"]
    },
    {
      "name": "example-skills", 
      "source": "./",
      "skills": [
        "./skills/algorithmic-art",
        "./skills/brand-guidelines",
        "./skills/canvas-design",
        ... (12 skills total)
      ]
    }
  ]
}

settings.json:

{
  "enabledPlugins": {
    "example-skills@anthropic-agent-skills": false,  // DISABLED
    "document-skills@anthropic-agent-skills": true
  }
}

Expected: Only xlsx, docx, pptx, pdf skills loaded (the 4 from document-skills)

Actual: ALL 16 skills loaded, including document-skills:algorithmic-art, document-skills:canvas-design, etc. from the disabled example-skills plugin

Root Cause Analysis

The skills array in marketplace.json appears to be completely ignored. Claude Code seems to:

  1. See that document-skills is enabled with source: "./"
  2. Recursively scan the entire ./ directory for any SKILL.md files
  3. Load everything it finds, ignoring the explicit skills array whitelist

Impact

  1. Plugin settings are meaningless - Users can't control which skills are loaded
  2. Contributes to skill truncation - Extra unwanted skills push useful skills past the 30-skill limit (see #13343)
  3. Confusing UI - Plugins appear as separate items in the UI but toggling them does nothing
  4. Broken architecture - The marketplace.json schema implies fine-grained control that doesn't exist

Environment

  • Claude Code version: 2.0.60 (Homebrew)
  • OS: macOS
  • Affected marketplace: anthropic-agent-skills (but likely affects any marketplace with multiple plugins sharing a source directory)

Expected Behavior

Either:

  1. Respect the skills array - Only load skills explicitly listed for enabled plugins
  2. Or require separate source directories - If sharing source directories isn't supported, enforce separate directories per plugin

Workaround

None currently. Disabling plugins in settings.json has no effect.

View original on GitHub ↗

9 Comments

github-actions[bot] · 8 months ago

Found 2 possible duplicate issues:

  1. https://github.com/anthropics/claude-code/issues/9996
  2. https://github.com/anthropics/claude-code/issues/13311

This issue will be automatically closed as a duplicate in 3 days.

  • If your issue is a duplicate, please close it and 👍 the existing issue instead
  • To prevent auto-closure, add a comment or 👎 this comment

🤖 Generated with Claude Code

kylesnowschwartz · 8 months ago

cc @ant-andi @klazuka

merlinrabens · 8 months ago

Confirming this issue

I'm experiencing the exact same problem with document-skills and example-skills from anthropic-agent-skills. Here's my /context output showing the duplicates:

Skills and slash commands · /skills

Plugin
└ pptx: 6.3k tokens
└ pptx: 6.3k tokens
└ algorithmic-art: 4.8k tokens
└ algorithmic-art: 4.8k tokens
└ skill-creator: 4.3k tokens
└ skill-creator: 4.3k tokens
└ doc-coauthoring: 3.8k tokens
└ doc-coauthoring: 3.8k tokens
└ canvas-design: 2.9k tokens
└ canvas-design: 2.9k tokens
└ xlsx: 2.5k tokens
└ xlsx: 2.5k tokens
└ docx: 2.4k tokens
└ docx: 2.4k tokens
└ mcp-builder: 2.2k tokens
└ mcp-builder: 2.2k tokens
└ slack-gif-creator: 1.9k tokens
└ slack-gif-creator: 1.9k tokens
└ pdf: 1.7k tokens
└ pdf: 1.7k tokens
└ frontend-design: 990 tokens
└ frontend-design: 990 tokens
└ frontend-design: 989 tokens  ← appears 3x (also in claude-plugins-official)
└ webapp-testing: 894 tokens
└ webapp-testing: 894 tokens
└ theme-factory: 695 tokens
└ theme-factory: 695 tokens
└ web-artifacts-builder: 674 tokens
└ web-artifacts-builder: 674 tokens
└ brand-guidelines: 479 tokens
└ brand-guidelines: 479 tokens
└ internal-comms: 275 tokens
└ internal-comms: 275 tokens

Impact

~35-40k tokens wasted on duplicate skills, consuming roughly 17-20% of the context window unnecessarily.

Additional findings

  1. Both plugins share source: "./" pointing to the same repo root
  2. The skills array filter in marketplace.json is completely ignored
  3. Manually removing example-skills from installed_plugins.json doesn't persist - Claude Code automatically reinstalls it on restart because both plugins are defined in the same marketplace
  4. The only current workaround would be unsubscribing from the entire anthropic-agent-skills marketplace, which loses all skills

Environment

  • Claude Code version: Latest (Dec 2025)
  • OS: macOS Darwin 25.1.0
  • Affected marketplace: anthropic-agent-skills
dpwaltz · 7 months ago

Confirming this bug still exists. I noticed duplicate skills showing up in my available skills list and traced it back to the same root cause.

Both document-skills and example-skills from anthropic-agent-skills contain all 16 skills in their cache directories, despite marketplace.json clearly specifying different skill subsets for each:

$ ls ~/.claude/plugins/cache/anthropic-agent-skills/document-skills//skills
$ ls ~/.claude/plugins/cache/anthropic-agent-skills/example-skills//skills

Both show identical contents: all 16 skills

The skills array filter is completely ignored during installation. Would love to see this fixed - it makes the marketplace plugin separation feature unusable.

Environment

  • Claude Code version: 2.1.9
  • OS: macOS Darwin 25.1.0
  • Affected marketplace: anthropic-agent-skills
JadenGeller · 7 months ago

I think I ran into a similar issue: with 5 plugins sharing source: "./", every skill appears under every plugin prefix (35
entries for 7 skills).

simfor99 · 7 months ago

Confirmed: Enable/Disable has no effect on token consumption

I just spent a session optimizing my Claude Code setup and can independently confirm this bug.

Test performed:

  1. Disabled plugins via settings.json:

``json
{
"enabledPlugins": {
"ralph-wiggum@claude-plugins-official": false,
"ralph-wiggum-enhanced@local-plugins": false
}
}
``

  1. Restarted Claude Code
  2. Checked context usage via /context

Result: Token consumption remained unchanged. Disabled plugins still contributed to context overhead.

Workaround we had to implement:

Since disabling doesn't work, we converted 26 agents to skills with disable-model-invocation: true in the frontmatter. This was the only way to reduce context usage (saved ~9k tokens).

This confirms the root cause analysis in this issue: Claude Code appears to scan directories and load everything it finds, completely ignoring the enabledPlugins settings.

Impact on our setup:

  • Custom agents before: 13.2k tokens
  • After manual conversion to on-demand skills: 4.1k tokens
  • Time spent on workaround: ~2 hours

A fix for this bug would make the existing plugin management UI actually functional.

shinpr · 4 months ago

Confirming this is still reproducible on Claude Code v2.1.123 on macOS 26.3.1 with document-skills@anthropic-agent-skills.

A clean install of only document-skills registers all 17 skills currently in the source tree under the document-skills: namespace, even though the marketplace entry lists only xlsx, docx, pptx, pdf.

Two details seem important here:

  1. The marketplace docs describe strict: false as: "the marketplace operator wants full control. The plugin repo provides raw files, and the marketplace entry defines which of those files are exposed as skills, agents, hooks, etc." ([plugin-marketplaces, Strict mode][1]). That matches the allow-list behavior this issue expects, but the implementation does not appear to honor it.
  1. The symlink workaround now appears to be broken too. #53948 bisects a regression in v2.1.117 where symlinked skills are no longer copied into the plugin cache, and that report describes symlinking as the workaround for #13344.

With #13344 still present and #53948 introduced, marketplaces that share a top-level skills/ directory no longer seem to have a reliable way to expose only a selected subset. Either the skills filter needs to be honored, or the symlink behavior needs to be restored.

Happy to share the full repro trace if helpful.

[1]: https://code.claude.com/docs/en/plugin-marketplaces#strict-mode

jordanpadams · 2 months ago

We hit this same issue with the pds-agent-skills marketplace (NASA-PDS/pds-agent-skills), which defines 8 separate single-skill plugins all pointing at the same "source": "./static/marketplace" root. Installing any one plugin (e.g. /plugin install generating-release-notes@pds-agent-skills) results in all 8 skills being registered under that plugin's namespace.

We attempted a workaround by giving each plugin a unique subdirectory source path (e.g. "source": "./static/marketplace/skills/generating-release-notes" with "skills": ["."]), but this hits a second limitation:

This plugin uses a source type your Claude Code version does not support. Update Claude Code and try again.

So the skills filter array is ignored during install, and subdirectory source paths are rejected as unsupported. We had to revert both attempts (see NASA-PDS/pds-agent-skills#18).

The net effect is that marketplace authors currently have no way to distribute multiple independent skills from a single repo without all of them bundling together on every install. The only workaround would be splitting each skill into its own repo, which is impractical at scale.

Would love to see either:

  1. The skills filter array respected during install (so only the declared skill paths are loaded), or
  2. Subdirectory source paths supported

Related: #15439 tracks the subdirectory source limitation.

🤖 Generated with Claude Code

ruslan-taghiyev · 1 month ago

For anyone tracking this: per #76448 the terminal CLI honors the skills array as of ~2.1.206. Desktop/Web still doesn't:

Showing cached comments. Read the full discussion on GitHub ↗