[BUG] Two built-in commands share the name /design: canvas skill vs Claude Design consent command

Status Open
Reported on v2.1.260
Maintainer reply None cached
Activity 0 comments · opened Sep 4, 2026

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:

  1. The design canvas skill (research preview shipped in v2.1.234, "Draft a design canvas" in the artifacts docs). It drafts .dc.html artboards and publishes them as an Artifact.
  2. The Claude Design consent command ("Grant or revoke Claude agent access to your Design projects", argumentHint: "consent | revoke"), which pairs with /design-sync and /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 | revoke command in favour of the existing hidden /design-consent / /design-revoke aliases, or rename it (for example /design-access).
  • Or enable the hub so /design owns 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

  1. Run Claude Code 2.1.260 in an interactive terminal, signed in with /login on a Pro/Max/Team plan (artifacts available).
  2. Type /design and pause on the autocomplete menu.
  3. Observe two /design rows with different descriptions (canvas skill and consent command).
  4. Start a session where artifacts are unavailable (for example via the Agent SDK / a third-party harness).
  5. Run /design a settings screen for a mobile banking app.
  6. Observe output Usage: /design consent | /design revoke instead 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

View original on GitHub ↗