[BUG] Custom slash commands from `.claude/commands/` no longer appear in autocomplete
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?
Custom slash commands stored in .claude/commands/ (both top-level and in subdirectories like prime/, dev/) no longer appear in the autocomplete dropdown when typing / in the CLI input. This regression appears to have started around version 2.1.69.
Previously, typing / would display all custom commands (e.g., /prime:frontend, /dev:backend-api, /deploy, etc.) alongside built-in commands. Now, only built-in commands appear in the autocomplete list.
What I Tried
- Adding YAML frontmatter with
description:field to command files - does NOT fix the issue - Verified files exist and are properly formatted
.mdfiles in the correct location - Tested across multiple projects - same behavior everywhere, confirming it's not project-specific
What Should Happen?
Expected Behavior
All custom commands from .claude/commands/ should appear in the autocomplete dropdown when typing /, as they did in earlier versions (pre-2.1.69).
Actual Behavior
Two distinct failures:
- Autocomplete: Only built-in commands appear when typing
/. Custom commands are completely invisible in the dropdown.
- Manual execution: Typing a custom command manually (e.g.,
/prime:architecture) returns "skill unknown" instead of loading the command content. The commands are not just hidden from autocomplete - they are entirely non-functional.
The source code internally references these files with a loadedFrom === "commands_DEPRECATED" label, suggesting the feature may have been silently disabled.
Impact
This is a high-impact regression for power users who rely on custom commands as a core part of their workflow. Custom commands serve a fundamentally different purpose than skills:
- Commands inject context directly into the conversation prompt (e.g., loading project architecture, tech stack details, domain-specific knowledge before a task)
- Skills are tools the model can invoke on its own, with different triggering behavior
For complex projects with many context-loading commands (e.g., 40+ prime commands for different subsystems), this regression makes the workflow significantly harder since users must remember and type exact command names manually.
Error Messages/Logs
Steps to Reproduce
Steps to Reproduce
- Create a
.claude/commands/directory in any project - Add a markdown file, e.g.,
.claude/commands/my-command.mdwith any content - Also test with subdirectories:
.claude/commands/prime/frontend.md(should appear as/prime:frontend) - Launch Claude Code v2.1.71
- Type
/in the input - Observe that custom commands are missing from the autocomplete dropdown
Claude Model
Opus
Is this a regression?
Yes, this worked in a previous version
Last Working Version
Version 2.1.70
Claude Code Version
Version 2.1.71
Platform
Other
Operating System
Windows
Terminal/Shell
Cursor
Additional Information
Additional Context
Internal code evidence
Reverse-engineering the minified cli.js (v2.1.71) reveals the string commands_DEPRECATED is used as the loadedFrom value for files loaded from .claude/commands/. This label was never announced in any release notes (checked v2.1.51 through v2.1.71).
The relevant filter function for slash commands:
// Minified, reconstructed
filter((K) =>
K.type === "prompt" &&
!K.disableModelInvocation &&
K.source !== "builtin" &&
(K.loadedFrom === "bundled" ||
K.loadedFrom === "skills" ||
K.loadedFrom === "commands_DEPRECATED" ||
K.hasUserSpecifiedDescription ||
K.whenToUse)
)
While this filter should theoretically still include commands_DEPRECATED items, the autocomplete UI appears to use a different code path that excludes them.
No deprecation notice
- No release note between v2.1.51 and v2.1.71 mentions deprecating
.claude/commands/ - No migration guide or alternative was provided
- The official documentation still references
.claude/commands/as the way to create custom commands
Possibly related release note entries
- v2.1.69: "Fixed project skills without a description: frontmatter field not appearing in Claude's available skills list" - this fix may have inadvertently affected the command discovery pipeline
- v2.1.69: "Fixed slow startup when many skills/plugins are installed" - optimization that may have changed discovery behavior
Suggested Fix
If .claude/commands/ is being intentionally deprecated, please:
- Announce it in release notes with a deprecation timeline
- Provide a migration guide to the replacement system
- Ensure functional parity (commands inject context into the prompt; skills do not behave the same way)
If it's unintentional, please restore the autocomplete discovery for files in .claude/commands/.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗