[BUG] userConfig prompt not shown during plugin install — substitution fails with "Missing required user configuration value

Resolved 💬 8 comments Opened Mar 27, 2026 by tommy-gun Closed May 25, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

When installing a plugin that uses userConfig in plugin.json, the user is never prompted to enter the configured values. Instead, Claude Code attempts variable substitution before collecting the values, resulting in an error.

What Should Happen?

During claude plugin install, user should be prompted to enter the port value before any substitution occurs. Same behavior should be available in the desktop app UI.

Additional Context

  • Desktop app UI has no way to configure userConfig values at all
  • Setting the value manually in settings.json under pluginConfigs works as a workaround
  • The error message itself says "This should have been validated before variable substitution" — suggesting this is a known code path that was intended to be guarded

Error Messages/Logs

Missing required user configuration value: port. This should have been validated before variable substitution.

Steps to Reproduce

  1. Create a plugin with userConfig and an MCP server that uses ${user_config.port} in its args
  2. Install via claude plugin install <marketplace-url>
  3. Observe: no prompt appears for the port value
  4. Result: installation fails or MCP server fails to start with the error below

Claude Model

None

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

2.1.85

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

Windows Terminal

Additional Information

plugin.json

{
  "name": "test-plugin",
  "version": "0.0.3",
  "userConfig": {
    "port": {
      "title": "MCP Server Port",
      "description": "Port of the local MCP server",
      "type": "number",
      "sensitive": false
    }
  },
  "mcpServers": {
    "test-mcp": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "http://localhost:${user_config.port}/test/"]
    }
  }
}

View original on GitHub ↗

This issue has 8 comments on GitHub. Read the full discussion on GitHub ↗