[BUG] Plugin userConfig values not prompted on enable
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 a plugin defines userConfig in plugin.json, Claude Code does not prompt the user for those values when the plugin is enabled. The plugin installs and shows as "Enabled" but immediately errors.
The only way to set the value is to manually select "Configure options" from the plugin menu afterward.
What Should Happen?
The user should be prompted for userConfig values when the plugin is enabled, as described in the documentation.
Error Messages/Logs
Missing required user configuration value: <key>. This should have been validated before variable substitution.
Steps to Reproduce
- Create a plugin with a
userConfigentry inplugin.json:
"userConfig": {
"api_token": {
"title": "API Token",
"description": "Authentication token",
"sensitive": true,
"type": "string"
}
}
- Add a marketplace via
/plugin marketplace add <url> - Install the plugin via
/plugin install <name>@<marketplace> - Plugin enables — no prompt appears for
api_token
Claude Model
Sonnet (default)
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.84
Platform
AWS Bedrock
Operating System
macOS
Terminal/Shell
IntelliJ IDEA terminal
Additional Information
Side note, may be related: the userConfig schema in the documentation appears incomplete. The docs only list description and sensitive as valid fields, but removing title or type from a userConfig entry causes a schema validation error on install. This suggests the actual required schema differs from what is documented.
24 Comments
Second this! It would be nice to have the checks in place so that skill use works as intended!
Ran into same issue today and wasted lots of time to debug what goes wrong. Seems it is just a bug in Claude. As stated above, the user docu https://code.claude.com/docs/en/plugins-reference#user-configuration is wrong and misses some fields from the example. A plugin.json will not validate if having those examples pasted in.
Using Claude Code v2.1.81
I have a similar problem on Windows. Moreover, it is not possible to set these properties on Claude code desktop UI, and some missing information on the online documentation as mention user above.
#39827
According to the changelog and news this feature should has been added "externally" - whatever that means:
I liked what Claude itself had to say when debugging the issue last week :D :
"aspirational" feature indeed, haha.
+1
@florislw i tried to set the value manually after i installed the plugin but the customize button is still greyed out inside the claude desktop mac app.
you wrote:
can you maybe explain how you did it?
also not working for linux, vanilla claude code.
@AlexanderThiele my bug report is for Claude Code, not the desktop app, so I'm not sure why it is different for you.
+1 Claude Cowork desktop does not prompt the user as specified for the userconfig values needed for a plugin.
Ah yes sorry, we want to distribute plugins in our org and we want to mainly use the Claude Desktop app with cowork. Also all non tech-focused people should also work with that.
Claude sent me this link and i did not check the repo of this issue. Let me check if i can find a claude desktop issue board.
+1 on this, doesn't work in Claude Desktop. It's stops us from adopting plugins. Any update on this?
+1 on claude code cli, in my case using:
"sensitive": true,does it mean that with
"sensitive": false,it works and you actually get asked to enter values?+1 for Claude Code CLI, desktop app and Claude Cowork not prompting to fill in fields defined in userConfig
+1, very annoying as its blocking us in further adoption.
Adding a downstream symptom here for search discoverability: when a plugin declares a \
mcpServers.*.url\using \\${user_config.<key>}\interpolation, the MCP server fails to load on fresh install with:\
\\\Plugin MCP server error - generic-error: Plugin option \"<key>\" isn't set.
\
\The prompt never fires even without a \
default\declared in the manifest, so the interpolation resolves against an empty value. Manifest-declared \default\is also not used as a fallback (tracked separately in #46477).Cross-ref: distillery PR norrietaylor/distillery#331 (workaround: hardcode URL + document user-scope override via \
claude mcp add\).One hint here is that if you want the config UI to show up, you need to have
"required": truefor a userConfig option - if options aren't required, then a blank value is considered fine.Even knowing that there are still some issues:
/plugin install ...within Claude Code and not when runningclaude plugin installfrom the CLI.claude plugin installwhen required parameters are missing isn't great - in my observation an MCP server that uses${user_config.OPTION}for an envvar will silently not load.I tested @owtaylor remark. seems it works, but only for secrets, not for normal variables. But the value seems not to be stored, i can still see the values i set earlier. (Another issue: config in user seems to overwrite config in project - unconfirmed, would need to test more... (I don't even know what i would like to expect - user installation, user config or project config?))
The issue is still: the variable itself is not visible in any tool/mcp service:
It worked for me for me for normal variables. I haven't experimented
"sensitive": true.One thing that was causing problems for me earlier is that my plugin had a different name in the manifest then it had in my (local) marketplace. And then Claude Code would sometimes write settings to the manifest name and then read from the marketplace name. Make sure these match.
I think plugin user config is always written to and read from user settings. Which is a bit odd since plugins can be installed with a project or local scope.
+1, not working for me in Claude Code Desktop, Claude Cowork, nor Claude Code CLI.
Marking as required solved this for me! I guess it makes sense that it will not prompt if the option is not required...
I'm on version 1.7196.0 (2dbd78) of Clause Desktop for Mac and setting
requiredtotruedid not fix this for me :/Seems to be working smoothly in the CLI now for new plugin installs (2.1.143). Not working on Claude for Mac desktop app (Claude 1.7196.3 (ca0c62))
crazy that after 2 month this bug is still not fixed. @bcherny can you help here? this is really blocking to use plugins that require user configuration