Marketplace plugin ${user_config.x} substitution fails via CCD --plugin-dir invocation

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

Bug: Marketplace plugin ${user_config.x} substitution fails via CCD --plugin-dir invocation

1. ${user_config.x} env placeholders not resolved when Claude Desktop launches plugin MCP servers

  • [ ] Component: Claude Desktop (CCD / embedded Claude Code sessions), macOS, app version bundles Claude Code CLI 2.1.237
  • Problem: Marketplace plugins whose .mcp.json uses ${user_config.<field>} placeholders in env do not register any MCP tools when loaded through Claude Desktop chat/CCD sessions.
  • Repro:
  1. Install a marketplace plugin whose .mcp.json env block references ${user_config.<field>} (e.g. mcp-atlassian 1.0.2, mcp-gitlab 1.0.1 from a custom marketplace), entering the required token(s) during install.
  2. Enable the plugin in Settings → Plugins in Claude Desktop.
  3. Start a new chat/session in Claude Desktop and ask it to use a tool from that plugin.
  • Actual: ToolSearch finds no tool from the plugin; total_deferred_tools does not include it. Confirmed via direct reproduction: invoking the same bundled CLI binary manually with --plugin-dir <plugin path> (the invocation style Claude Desktop uses for CCD sessions, visible via ps) also fails to register any tool from the plugin — reproduced on both CLI 2.1.237 (bundled with Desktop) and 2.1.238 (standalone).
  • Expected: Plugin tools register and work the same as when the plugin is enabled via ~/.claude/settings.json enabledPlugins and the CLI is run normally (no --plugin-dir) — confirmed working in that mode with the same plugin/version.
  • Workaround: Replace the marketplace plugin with a classic mcpServers entry (literal env values, no ${user_config.x}) in claude_desktop_config.json.

View original on GitHub ↗