[BUG] Custom slash commands from `.claude/commands/` no longer appear in autocomplete

Resolved 💬 2 comments Opened Mar 7, 2026 by VEEHMO Closed Mar 7, 2026

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 .md files 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:

  1. Autocomplete: Only built-in commands appear when typing /. Custom commands are completely invisible in the dropdown.
  1. 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

  1. Create a .claude/commands/ directory in any project
  2. Add a markdown file, e.g., .claude/commands/my-command.md with any content
  3. Also test with subdirectories: .claude/commands/prime/frontend.md (should appear as /prime:frontend)
  4. Launch Claude Code v2.1.71
  5. Type / in the input
  6. 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:

  1. Announce it in release notes with a deprecation timeline
  2. Provide a migration guide to the replacement system
  3. 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/.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗