skillOverrides (name-only/user-invocable-only) silently no-ops for plugin-namespaced skill keys

Status Open
Maintainer reply None cached
Activity 0 comments · opened Aug 26, 2026

Description

settings.json's skillOverrides map is documented/expected to control a skill's ambient-context footprint (on = full description, name-only = name only, user-invocable-only/off = hidden from ambient listing but still invocable/fully hidden). This works correctly for bare (non-namespaced) skill names, but silently does nothing for plugin-namespaced keys in the plugin:skill format.

Reproduction

  1. In ~/.claude/settings.json, set several plugin-namespaced skills to name-only, e.g.:

``json
{
"skillOverrides": {
"context-mode:context-mode": "name-only",
"firecrawl:firecrawl-monitor": "name-only",
"exa:search": "name-only",
"skill-creator:skill-creator": "name-only",
"claude-md-management:claude-md-improver": "name-only"
}
}
``

  1. Start a session and run /context.
  2. Compare the Skills table's per-skill token cost against a bare-name skill also set to name-only in the same file.

Expected

All name-only entries should show "< 20 tokens" in /context's Skills breakdown, same as bare-name skills configured the same way (e.g. "loop": "name-only", "context-budget": "name-only" both correctly show "< 20 tokens").

Actual

Bare-name skills correctly drop to "< 20 tokens". Plugin-namespaced skills (plugin:skill format) stay at their full, undiminished token cost despite the name-only override, e.g. (observed in one session):

| Skill | Override | Actual /context cost |
|---|---|---|
| context-mode:context-mode | name-only | ~330 tokens (full) |
| firecrawl:firecrawl-monitor | name-only | ~370 tokens (full) |
| claude-md-management:claude-md-improver | name-only | ~130 tokens (full) |
| skill-creator:skill-creator | name-only | ~120 tokens (full) |
| exa:search | name-only | ~90 tokens (full) |

This appears related to #50631 (user/project-scope skillOverrides reportedly inert on some versions), but is narrower and more specific: the override mechanism works for bare skill names and fails specifically for the plugin:skill-namespaced key format, suggesting the override lookup isn't matching on the namespaced identifier correctly.

Impact

For users with many plugins installed, this silently defeats a meaningful chunk of configured context savings — in the session where this was found, roughly half of the total "Skills" context budget was accounted for by plugin-namespaced skills whose name-only overrides were not taking effect.

Environment

  • Claude Code CLI (exact version not captured at time of report; observed in a session using Sonnet 5)
  • OS: Linux

View original on GitHub ↗