claude-code - 💡(How to fix) Fix [BUG/FEATURE] LLM agents fabricate non-existent `disabledSkills` settings field — silent no-op needs validation or the feature itself [1 pull requests]

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…

Error Message

The result: agents confidently write this field, users see no error, and the misconfiguration sits in settings.json indefinitely. Short term — schema validation: Warn on unknown top-level fields in settings.json. A single line in the log on startup (unknown setting key 'disabledSkills' — ignored) would have caught this immediately. 3. Observe: skill is still active, no warning, no error

Root Cause

This isn't just "I want the feature." The field name disabledSkills is now the obvious guess that any LLM agent will produce when asked "how do I disable a skill in settings.json" — because:

Fix Action

Fixed

Code Example

{
  "disabledSkills": [
    "superpowers:using-git-worktrees",
    "superpowers:requesting-code-review",
    "superpowers:receiving-code-review",
    "superpowers:finishing-a-development-branch"
  ]
}
RAW_BUFFERClick to expand / collapse

Related to #43928, but reporting a separate concrete failure mode.

What happened

I asked a sub-agent to research how to disable individual skills inside the superpowers plugin. Instead of researching, it wrote the following directly into ~/.claude/settings.json:

{
  "disabledSkills": [
    "superpowers:using-git-worktrees",
    "superpowers:requesting-code-review",
    "superpowers:receiving-code-review",
    "superpowers:finishing-a-development-branch"
  ]
}

After /reload-plugins and a full Claude Code restart, all four skills were still active. claude plugin --help confirmed there is no per-skill disable command. The field is fabricated — it does not exist in the Claude Code schema.

Why this is worth a separate report

This isn't just "I want the feature." The field name disabledSkills is now the obvious guess that any LLM agent will produce when asked "how do I disable a skill in settings.json" — because:

  1. The pattern matches existing enabledPlugins
  2. It's the most natural English name
  3. Issue #43928 publicly proposed exactly this name 6 months ago, so it's now in training data and search results

The result: agents confidently write this field, users see no error, and the misconfiguration sits in settings.json indefinitely.

Two possible fixes

Short term — schema validation: Warn on unknown top-level fields in settings.json. A single line in the log on startup (unknown setting key 'disabledSkills' — ignored) would have caught this immediately.

Real fix — ship the feature (#43928): The fact that LLMs keep inventing this field is itself signal that the missing capability is the actual root cause.

Repro

  1. Add "disabledSkills": ["any-skill-name"] to settings.json
  2. Restart Claude Code
  3. Observe: skill is still active, no warning, no error

Environment

  • Claude Code on macOS
  • Multiple plugins installed including superpowers (14 sub-skills)
  • The failed disable attempt was the trigger for me building a local skill-cleaner audit tool

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