[BUG] Commands are now apparently "skills" and are loaded into context without being invoked. This effectively removes command functionality from Claude Code

Resolved 💬 21 comments Opened Dec 20, 2025 by designbyian Closed Jan 17, 2026
💡 Likely answer: A maintainer (sarahdeaton, collaborator) responded on this thread — see the highlighted reply below.

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

Previously when creating .md files in directory .claude/commands, these were interpreted at slash commands that could be invoked by the user to inject them into chat. This was useful.

In the latest version these are now loaded into context as skills. I don't understand this as skills have their own implementation and directory structure.

Because one of the useful features of commands is that they were not loaded into context, this change effectively removes the commands functionality. Using the /context command it now reports token use for "skills" in a separate section that shows the token equivalent of the full contents of all commands files, with the resulting widely varying token use based on file size. Interestingly the agent does not appear to be aware of the contents of the commands files, so perhaps the token use listed is itself a bug.

The initial prompt, however, also includes metadata for the commands as skills, example below, which increases token use even more and is not useful for commands which are invoked on demand rather than at the agent's discretion:
<skill>
<name>commandName</name>
<description>commandName (project)</description>
<location>managed</location>
</skill>

Note that I am encountering this in the VS Code extension, I have not test in the CLI as presumably the behavior is the same given that it's related to config/directories.

What Should Happen?

Commands should work as described in the docs and as they have up until recently.

Error Messages/Logs

Steps to Reproduce

Have a commands directory under .claude/ populated with files

Claude Model

Opus

Is this a regression?

Yes, this worked in a previous version

Last Working Version

_No response_

Claude Code Version

2.0.75

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

PowerShell

Additional Information

_No response_

View original on GitHub ↗

22 Comments

github-actions[bot] · 6 months ago

---

Found 3 possible duplicate issues:

  1. https://github.com/anthropics/claude-code/issues/14611
  2. https://github.com/anthropics/claude-code/issues/11459
  3. https://github.com/anthropics/claude-code/issues/14834

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

---

alberduris · 6 months ago

Confirmed. This is also reported here and seems to be already tracked by Anthropic: https://x.com/trq212/status/2002665131264950489?s=20

AmirL · 6 months ago

The same issue :(

When prompt is:

Use SlashCommand tool to run /review-pr-prompt with argument *****
⏺ /review-pr-prompt
  ⎿  Error: Execute skill: review-pr-prompt

....

> What went wrong, did you have instructions about yaml file? 

⏺ You're right to question this - I tried to use the /review-pr-prompt skill but it failed with just "Execute skill: review-pr-prompt" error, so I fell back to manually reviewing the PR.
AmirL · 6 months ago

Ok,

  • there is no such tool as SlashCommand tool anymore.

EDITED:

I couldn't find a way to run a custom command from the CLI. It works, though, when running Claude in interactive mode.

RiaanDeWinnaar · 6 months ago

Additional Report - Skills Preloading Full Content

Confirming this issue in VS Code extension with Claude Opus 4.5.

My Context Usage Before Any Conversation

| Category | Tokens | Percentage |
|----------|--------|------------|
| System prompt | 7.7k | 3.8% |
| System tools | 17.7k | 8.8% |
| Skills | 26k+ | 13%+ |
| Free space | 123.7k | 61.9% |

Expected vs Actual

  • Expected: Skills load only name/description at startup (~30-50 tokens each)
  • - Actual: Full SKILL.md content loaded for ALL skills immediately

Impact

With 30+ skills/plugins configured:

  • ~26k+ tokens consumed before conversation starts
  • - Complex tasks hit context limits prematurely
  • - - Progressive disclosure pattern completely bypassed

Environment

  • Claude Code: VS Code Extension (latest)
  • - Model: claude-opus-4-5-20251101
  • - - OS: Windows 11
  • - - - Skills: Mix of project skills (.claude/skills/) and plugins

Related

  • #14834 - /context shows full skill tokens
  • - #14882 - Skills consume full count at startup
  • - - #7336 - Feature request for lazy loading
turbo-soft · 6 months ago

Can confirm this. I have the same issue

surajmandalcell · 6 months ago

Any temporary workaround to this?

turbo-soft · 6 months ago
Any temporary workaround to this?

I have created simple bash script to move skills and commands I don't plan to use to other location, and then restart the claude.

AmirL · 6 months ago
> Any temporary workaround to this? I have created simple bash script to move skills and commands I don't plan to use to other location, and then restart the claude.

Do you mean you moved commands into skill dir, right?

RiaanDeWinnaar · 6 months ago

Basically like running MCP and enabling them when needed. Just create a discabled_skills folder, copy skills not being used there, restart CC. But then still loads all tools from any skill you have active in the skills folder, exactly like MCP

turbo-soft · 6 months ago
Basically like running MCP and enabling them when needed. Just create a discabled_skills folder, copy skills not being used there, restart CC. But then still loads all tools from any skill you have active in the skills folder, exactly like MCP

yeah exactly. That is the best we can do right now.

I have also realized drop in performance due to this bug. All unrelated commands are loaded and making it behave strange.

gofullthrottle · 6 months ago
> Basically like running MCP and enabling them when needed. Just create a discabled_skills folder, copy skills not being used there, restart CC. But then still loads all tools from any skill you have active in the skills folder, exactly like MCP yeah exactly. That is the best we can do right now. I have also realized drop in performance due to this bug. All unrelated commands are loaded and making it behave strange.

Depending on what sort of performance you're talking about, it could very well just be the fact that the context window bloat -> not much working context space -> lots of things suffer (loops, going off track, not having the right content loaded into context, etc etc).

###########

Impact Report: Power User Setup Completely Broken

I have 116 custom commands and 56 skills built up over months. This regression has made my entire setup unusable:

Before the regression:

  • Commands were invoked explicitly via /command-name - NOT in context
  • Skills used progressive disclosure - only frontmatter (~30-50 tokens) loaded at startup
  • Full skill content loaded on-demand when triggered
  • MCP server tool descriptions were the main context consideration

After the regression:

  • ALL 116 commands now appear in /context with full token counts
  • ALL 56 skills load full content at startup instead of frontmatter
  • My carefully optimized context budget is completely blown
  • The entire progressive disclosure system appears broken

My Setup (for reference):

~/.claude/commands/  - 116 command files
~/.claude/skills/    - 56 skill files (including MCP gating skills)

Questions:

  1. Is this an intentional change or a regression? (answered above)
  2. When will progressive disclosure be restored for skills?
  3. Will commands be removed from context loading?

This has made Claude Code significantly worse for power users who invested time building sophisticated setups. The whole promise of skills was progressive disclosure and reduced context bloat.

Dangerous Side Effect:

Because /context now shows all commands/skills with massive token counts, Claude itself suggests "cleaning up" or deleting these files to reduce bloat. This is terrible UX - users will delete their carefully built configurations thinking THEY did something wrong, when it's actually a Claude Code regression. A strong heads up or changelog entry for breaking changes this impactful would be appreciated. It's been prohibitively complex trying to maintain an understanding of how to optimally configure Claude Code, because just a bit ago, there was the ripgrep issue causing MCP server recognition to go haywire, then there were Skills (awesome) and Plugins and I was just getting re-situated and comfortable with things, only to find this chaos.

I feel like I need to add telemetry just to keep my finger on the day to day pulse of what's going on with the context window. Less vibe coding.. it's not like Codex is right on Claude Code's tail..

Environment:

  • Claude Code version: latest
  • macOS
  • 116 commands, 56 skills, 11 MCP servers
agentic-ai-forge · 6 months ago

https://github.com/anthropics/claude-code/issues/14834

I am still not clear after reading these two issues, whether it is just a visual / representation bug of the /comtext or if the tokens for skills are actually consumed?

alberduris · 6 months ago

@agentic-ai-forge it's not just a visual representation; all commands now are injected into context (the LLM sees their names and truncated descriptions). As @gofullthrottle states, this is a huge problem/regression if you have many commands (which is a typical setup for power users).

The only workaround for now is adding disable-model-invocation: true to hide a slash command from the model. See: https://code.claude.com/docs/en/slash-commands

mattiasw2 · 6 months ago

I really struggle with my context, and suddenly my commands (now called skiulls by claude), takes much more context space. Many of them I use sparsely, and I do not want to waste context for them.

I assume a workaround is to move the contents to a separate file, and just refer to it from the command.

designbyian · 6 months ago

An update on this issue... The full contents of commands no longer appear to be loaded into context. However they are still considered "skills" which causes the following issues:

  • Commands are injected into initial context as skills, using tokens for no reason
  • Commands require a confirmation "Do you want to proceed with Skill"? Which results in this flow:
  • Enter /command
  • Wait for agent to think
  • Confirmation prompt, click to confirm
  • Agent finally follows the command instructions

If you're running a command, for example, at the start of many sessions, this adds extra friction to each of them. This is especially frustrating given that this bug currently requires much more frequent use of fresh sessions.

If it isn't obvious, commands should not, in any way, be treated as skills. Different flow, different purpose.

Kari-Basavaraj · 6 months ago

Skills Progressive Disclosure Bug - Confirmed

EDIT (2026-01-04): Shortened based on @designbyian's feedback. Full technical analysis available here.

---

Quick Summary

Skills/commands are loading full SKILL.md content instead of metadata only, violating progressive disclosure design.

My Data (Verifiable)

Token Usage Comparison

| Component | Files | Expected (Metadata) | Actual (Full Content) | Overhead |
|-----------|-------|---------------------|----------------------|----------|
| Commands | 44 | 2.2k tokens | 31k tokens | 14x |
| Skills | 19 active | 950 tokens | 48k tokens | 50x |
| Agents | 16 | ~5.4k tokens | 465 tokens | 0.09x ✅ |

Context Window Impact

| Metric | Before Workaround | After Workaround | Recovery |
|--------|-------------------|------------------|----------|
| Baseline | 98k tokens (49%) | 19.3k tokens (9.6%) | -78.7k |
| Skills Section | 79k tokens | 0k tokens | -79k |
| Free Context | 102k (51%) | 180.7k (90.3%) | +78.7k |

Evidence: File line counts directly match token usage (e.g., 427 lines → 4.4k tokens)

Proof agents work: 16 agents using only 465 tokens proves progressive disclosure CAN work

Reproduction

# Count your lines
find ~/.claude/commands -name "*.md" -exec cat {} \; | wc -l

# Run /context - compare line count to token usage
# If they match: loading full content (BUG)
# If ~50 tokens per skill: loading metadata only (CORRECT)

Workaround

mv ~/.claude/commands ~/.claude/commands.disabled
# Restart Claude Code
# Recovery: 79k tokens in my setup (39.5% of context window)

Impact

In my setup: 79k tokens wasted (should be 3k)
After workaround: Baseline dropped from 98k → 19.3k tokens

Related Issues: #14882, #14834, #13536, #16160, #15964 (+ 7 more)

---

📊 Full Technical Analysis: https://gist.github.com/Kari-Basavaraj/f72d4f5e75e1a06d2b7cdf38884c9980

(Includes: root cause analysis, ecosystem impact, fix proposal, testing suggestions)
Thanks!

designbyian · 6 months ago

AI generated report with all the fun repetition and questionable claims. Why does this feel like karma?

Kari-Basavaraj · 6 months ago

@designbyian Fair callout. You're right, I used Claude to organize my findings and definitely over explained. Let me stick to what I can prove:

My setup (verifiable):
44 commands → 31k tokens (should be ~2.2k)
19 skills → 48k tokens (should be ~950)
16 agents → 465 tokens (metadata only, working correctly)

Your original issue nailed it. I just wanted to add reproduction steps and evidence that agents prove it's fixable. Not trying to take over, happy to simplify or remove if preferred.

The core issue stands: skills/commands load full content when docs say they should load metadata only.

sarahdeaton collaborator · 6 months ago

Thank you for reporting this! Here's some information about the two points you raised: (1) about it looking like the full skill and not just metadata was loaded and (2) about commands showing in context when you only intend for them to be user-invoked.

(1) There was a bug in token estimation that was fixed in v2.1. /context was showing estimates based on full content length rather than just the frontmatter that's actually loaded. If you're on v2.0.75, updating to the latest version should show more accurate token estimates.

(2) If you have commands that should only be user-invoked and you don't want their metadata in the system prompt at all, add this to your command's frontmatter:

disable-model-invocation: true

This removes the command from the Skill tool entirely. Claude won't see it or be able to invoke it, but you can still use it manually with /command-name.

Background:
The Skill tool now handles both Agent Skills (.claude/skills/) and custom slash commands (.claude/commands/). Commands with a description field are made available to the tool so Claude can use them contextually. This is documented at https://code.claude.com/docs/en/slash-commands#skill-tool

Let us know if you're still seeing unexpected behavior after updating, or if you have questions about the disable-model-invocation option!

designbyian · 6 months ago

Thanks for the information, looks like the bug(s) are fixed! Using 2.1.3 this bug which makes the extension unusable for tasks/sessions that involve file edits and don't immediately end after the edits.

Regarding disable-model-invocation: true, if frontmatter looks like this:

---
name: name
description: description
---

Where does disable-model-invocation go? Would this be considered valid frontmatter?

---
disable-model-invocation: true
---

Edit: The above works.

Thank you!

github-actions[bot] · 5 months ago

This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.