[BUG] Commands are now apparently "skills" and are loaded into context without being invoked. This effectively removes command functionality from Claude Code
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_
22 Comments
---
Found 3 possible duplicate issues:
This issue will be automatically closed as a duplicate in 3 days.
🤖 Generated with Claude Code
---
Confirmed. This is also reported here and seems to be already tracked by Anthropic: https://x.com/trq212/status/2002665131264950489?s=20
The same issue :(
When prompt is:
Ok,
SlashCommandtool 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.
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
Impact
With 30+ skills/plugins configured:
Environment
Related
Can confirm this. I have the same issue
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?
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:
/command-name- NOT in contextAfter the regression:
/contextwith full token countsMy Setup (for reference):
Questions:
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
/contextnow 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:
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?
@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
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.
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:
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.
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
Workaround
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!
AI generated report with all the fun repetition and questionable claims. Why does this feel like karma?
@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.
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.
/contextwas 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:
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-invocationoption!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:
Where does disable-model-invocation go? Would this be considered valid frontmatter?
Edit: The above works.
Thank you!
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.