[BUG] Desktop app namespaces plugin skills by install hash, breaking /plugin-name:skill-name (and the hash changes on update)
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:
- Typing the documented form
/plugin-name:skill-namereturns "Unknown command". - The only working invocation is
/<hash>:skill-name, which is undiscoverable — nothing tells the user the hash. - 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:tob4a60ab53566:, so even a memorized/hard-coded command (or a CLAUDE.md reference to it) breaks on every plugin update. - 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 skillSkill(skill: "785bb3bbebfb:dx-pr-review-frontend")→ resolves (returns the expected disable-model-invocation refusal, telling the user to run/785bb3bbebfb:dx-pr-review-frontendthemselves)
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
- Add a git-based plugin marketplace and install a plugin containing a skill (user scope), e.g. plugin
my-pluginwithskills/my-skill/SKILL.md. - Open a session in the Claude Code desktop app (macOS).
- Type
/my-plugin:my-skill→ "Unknown command". - 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 asversionin~/.claude/plugins/installed_plugins.json). /<hash>:my-skillworks.- 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.