Source Intelligence

DisclaimerUnofficial, and not affiliated with Anthropic. Nearly all of this is read straight out of what ships: npm bundles, captured prompts, published docs. Anthropic's own notes go in verbatim, marked as theirs. The rest is my reading, and every entry carries the strings behind it. If one looks wrong, vote it down and say why.

All of v2.1.248 Home All releases olderv2.1.247 v2.1.250newer
Claude Code v2.1.248

Command and skill names are escaped everywhere they are echoed back

You'll notice
Useful4 Signal3
Slash Commands

Command and skill names from plugins or MCP servers are escaped everywhere, always on.

What

Slash command and skill names now go through a single escaping helper wherever they appear in text that reaches the model or your terminal, so a name supplied by a plugin or MCP server cannot inject markup, control characters or instructions. This is always on, with no flag or setting to disable it.

Details
  • Applies to unknown-command errors, the refusal "This skill can only be invoked by Claude, not directly by users.", and the coordinator-mode skill refusal along with the subcommand and allowed-tools lists it prints.
  • Warnings for a stacked slash command that is blocked or fails to load are escaped too, including the message "Stacked skill /${St(k.name)} blocked by UserPromptExpansion hook".
  • Failures in JSX-based local commands render their stderr through a formatter given the command name and session, instead of dumping the raw thrown value.
Evidence

Stacked skill /${St(k.name)} blocked by UserPromptExpansion hook, This skill can only be invoked by Claude, not directly by users. Ask Claude to use the "

Strings lifted out of the shipped bundle, so the claim above can be checked against them.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

See this entry in the whole of v2.1.248 →