[BUG] Desktop sessions load the install-time cache copy of local-directory marketplace plugins instead of loading in place

Status Open
Reported on v2.1.280
Maintainer reply None cached
Activity 1 comment · opened Sep 23, 2026

Summary

For a plugin whose marketplace entry is a relative path source in a marketplace added from a local directory,
the docs say it "loads in place from the marketplace folder" and that edits "take effect at the next session start or /reload-plugins"
(Plugins reference).
The CLI does this. Claude Desktop Code-tab sessions instead load the copy written to
~/.claude/plugins/cache/<marketplace>/<plugin>/<sha>/ at install time,
so source changes never reach Desktop sessions, including after /reload-plugins.

Environment

  • macOS (Darwin 25.6.0)
  • Claude Desktop with bundled Claude Code 2.1.280; standalone CLI 2.1.278
  • Marketplace registered with claude plugin marketplace add <repo-dir> --scope user (source type directory);

.claude-plugin/marketplace.json entries use "source": "./share/agents/plugins/<name>"; plugin.json has no version.

  • Plugins installed with claude plugin install <name>@<marketplace> --scope user.

Steps to reproduce

  1. Create a git repo with a local-directory marketplace as above and one plugin containing a skill.
  2. Register the marketplace and install the plugin at user scope.
  3. After installing, add a new skill directory to the plugin in the source repo, commit or not.
  4. Start a new CLI session (claude -p "..." --output-format stream-json --verbose) and a new Desktop Code-tab session.

Expected

Both sessions load the plugin from the source directory and list the new skill.

Actual

  • CLI (2.1.278, and the Desktop-bundled 2.1.280 binary run headless with an isolated CLAUDE_CONFIG_DIR):

the init event reports the plugin path as the source directory; a skill present only in source is loaded,
a skill present only in the cache copy is not.

  • Desktop Code-tab session (bundled 2.1.280): the new skill does not appear in / autocomplete, before or after /reload-plugins.

Skill invocations report a base directory under ~/.claude/plugins/cache/<marketplace>/<plugin>/<sha>/,
and that directory holds .in_use/<pid of the Desktop session process>.
In our case the cache copy was taken at a commit that is no longer an ancestor of HEAD (after a history rewrite),
so Desktop sessions ran plugin content that no longer exists in the repository.

  • claude plugin list --json shows installPath pointing at the cache copy for these plugins in both configurations.
  • claude plugin update only re-records when the repo HEAD commit changes; uncommitted source edits report "already at the latest version".

Related

  • #83704 (Desktop sessions load a different plugin store than the CLI)
  • #86154 (Desktop sessions and --plugin-dir)
  • #73673 (Desktop git-marketplace plugins never update)

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗