[BUG] Desktop app namespaces plugin skills by install hash, breaking /plugin-name:skill-name (and the hash changes on update)

Status Open
Reported on v2.1.228
Maintainer reply None cached
Activity 0 comments · opened Aug 14, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet (closest is #78523, which covers a different facet — see below)
  • [x] This is a single bug report
  • [x] I am using the latest version of Claude Code

What's Wrong?

In Claude Code desktop app sessions, skills that come from installed plugins are registered under a namespace that is the plugin's install/version hash, not the plugin name. E.g. a skill from the plugin dx-angular-upgrade (installed from a private git marketplace) is surfaced to the model and the slash-command layer as:

785bb3bbebfb:dx-angular-upgrade

instead of the documented dx-angular-upgrade:dx-angular-upgrade. The hash matches the plugin's install directory (~/.claude/plugins/cache/<marketplace>/<plugin>/785bb3bbebfb/) and also appears in plugin MCP tool names (mcp__plugin_785bb3bbebfb_figma-desktop__*).

Consequences:

  1. Typing the documented form /plugin-name:skill-name returns "Unknown command".
  2. The only working invocation is /<hash>:skill-name, which is undiscoverable — nothing tells the user the hash.
  3. The hash is not stable: when the plugin updates, the namespace changes. We observed this live — between two messages in the same conversation the namespace flipped from 785bb3bbebfb: to b4a60ab53566:, so even a memorized/hard-coded command (or a CLAUDE.md reference to it) breaks on every plugin update.
  4. Combined with disable-model-invocation: true (#78523), the skill becomes effectively uninvocable in the desktop app: it's stripped from the skill listing (so no discovery) and unknown under its friendly name (so the explicit slash form the user learned from the CLI fails too).

Verified from inside a session via the Skill tool:

  • Skill(skill: "dx-pr-review-frontend:dx-pr-review-frontend")Unknown skill
  • Skill(skill: "785bb3bbebfb:dx-pr-review-frontend") → resolves (returns the expected disable-model-invocation refusal, telling the user to run /785bb3bbebfb:dx-pr-review-frontend themselves)

The same plugins invoked from the terminal CLI work fine under /plugin-name:skill-name, so this is specific to the desktop app surface.

What Should Happen?

Plugin skills should be namespaced by plugin name (/plugin-name:skill-name), consistent with the CLI and the plugin docs. The install hash is an implementation detail and should never be user-facing — and certainly not part of a command name that users are told to run, since it changes on every plugin update.

Error Messages/Logs

> /dx-pr-review-frontend:dx-pr-review-frontend
Unknown command

Skill tool, friendly name:
  Unknown skill: dx-pr-review-frontend:dx-pr-review-frontend

Skill tool, hash-prefixed name:
  Skill 785bb3bbebfb:dx-pr-review-frontend cannot be used with Skill tool due to
  disable-model-invocation. Ask the user to run /785bb3bbebfb:dx-pr-review-frontend
  themselves — it cannot be invoked via the Skill tool.

Steps to Reproduce

  1. Add a git-based plugin marketplace and install a plugin containing a skill (user scope), e.g. plugin my-plugin with skills/my-skill/SKILL.md.
  2. Open a session in the Claude Code desktop app (macOS).
  3. Type /my-plugin:my-skill → "Unknown command".
  4. Ask Claude to list available skills → the skill appears as <install-hash>:my-skill (hash = the versioned directory under ~/.claude/plugins/cache/<marketplace>/my-plugin/<hash>/, also recorded as version in ~/.claude/plugins/installed_plugins.json).
  5. /<hash>:my-skill works.
  6. Update the plugin/marketplace → the hash (and therefore the working command) changes.

Bonus repro for the compounding issue: give the skill disable-model-invocation: true — now it's absent from the skill listing and unreachable under its friendly name, so the desktop app has no working discovery path for it at all.

Claude Model

Other (Fable 5)

Is this a regression?

I don't know

Claude Code Version

2.1.228 (Claude Code)

Platform

Anthropic API

Operating System

macOS (Darwin 25.6.0)

Terminal/Shell

Other (Claude Code desktop app session)

Additional Information

Related but distinct: #78523 (disable-model-invocation: true breaks explicit /skill-name invocation). This report is about the namespace itself being the install hash; the two together make explicit-only plugin skills completely uninvocable in the desktop app.

View original on GitHub ↗