[BUG] Two built-in commands share the name /design: canvas skill vs Claude Design consent command
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report
- [x] I am using the latest version of Claude Code
What's Wrong?
Two built-in commands are registered under the same slash name, /design:
- The design canvas skill (research preview shipped in v2.1.234, "Draft a design canvas" in the artifacts docs). It drafts
.dc.htmlartboards and publishes them as an Artifact. - The Claude Design consent command ("Grant or revoke Claude agent access to your Design projects",
argumentHint: "consent | revoke"), which pairs with/design-syncand/design-login.
In the interactive CLI the autocomplete menu lists /design twice with different descriptions (screenshot attached below as text). Which one runs depends on which entry the user picks, and the name alone does not disambiguate.
In a context where artifacts are unavailable (for example a session launched through the Agent SDK, CLAUDE_CODE_ENTRYPOINT=sdk-ts), the canvas skill never registers, so /design <brief> silently resolves to the consent command and prints Usage: /design consent | /design revoke. A user following the Week 34 digest gets no hint that the canvas skill exists or why it did not run.
The consent command is also redundant: hidden built-ins /design-consent and /design-revoke already exist and do the same thing.
The binary also contains a third, feature-flagged /design "hub" command (routes sync | login | consent | revoke | import | export | status | <prompt> as subcommands). It is off by default, so today the two visible registrations collide.
What Should Happen?
One command per name. Suggested resolution, any of:
- Drop the visible
/design consent | revokecommand in favour of the existing hidden/design-consent//design-revokealiases, or rename it (for example/design-access). - Or enable the hub so
/designowns the subcommands and the canvas brief is the free-form fallthrough. - When the canvas skill is unavailable (artifacts off),
/design <brief>should say why (artifacts required) rather than falling through to the consent usage line.
Error Messages/Logs
$ claude --version
2.1.260 (Claude Code)
# Session through Agent SDK (CLAUDE_CODE_ENTRYPOINT=sdk-ts, artifacts unavailable):
> /design issue 37 from gh
Usage: /design consent | /design revoke
# Interactive CLI autocomplete after typing "/design" (two entries with the same name):
/design Create a design canvas - a multi-artboard visual design published as an Artifact that runs Claude Design's canvas editor ...
/design Grant or revoke Claude agent access to your Design projects
/design-sync Push a React design system to claude.ai/design ...
Registrations as seen in the v2.1.260 binary (from strings):
{type:"local",name:"design",description:"Grant or revoke Claude agent access to your Design projects",argumentHint:"consent | revoke",isEnabled:()=>b5(),policyGate:_5,...}
{type:"local",name:"design-consent",description:"Grant Claude agent access to your Design projects",...,isHidden:!0,...}
{type:"local",name:"design-revoke",description:"Revoke Claude agent access to your Design projects",...,isHidden:!0,...}
registerDesignCanvasSkill // bundled skill, also named "design"
Jr({name:"design",menuDescription:"Work with Claude Design (claude.ai/design) — create, import, export, sync, login",subcommands:{sync,login,consent,revoke},...isEnabled:()=>ebe() /* feature-flagged, off */})
Steps to Reproduce
- Run Claude Code 2.1.260 in an interactive terminal, signed in with
/loginon a Pro/Max/Team plan (artifacts available). - Type
/designand pause on the autocomplete menu. - Observe two
/designrows with different descriptions (canvas skill and consent command). - Start a session where artifacts are unavailable (for example via the Agent SDK / a third-party harness).
- Run
/design a settings screen for a mobile banking app. - Observe output
Usage: /design consent | /design revokeinstead of a canvas or an explanation that artifacts are required.
Claude Model
Other (Fable 5.1)
Is this a regression?
No, this never worked
Claude Code Version
2.1.260 (Claude Code)
Platform
Anthropic API
Operating System
Other Linux (Arch Linux, kernel 7.1.9)
Terminal/Shell
Other
Additional Information
- Docs for the canvas skill: https://code.claude.com/docs/en/whats-new/2026-w34 and https://code.claude.com/docs/en/artifacts#draft-a-design-canvas
- No user-facing setting targets the consent command alone: its only gate is the org policy
allow_design_sync, which also disables/design-syncand/design-login.skillOverrides: { design: "off" }hides the canvas skill instead, the one users want to keep. - Related but different issues (auth flow, not the name collision): #90686, #90783, #75024, #91063.