Plugin install TUI: Esc from post-install required-field config leaves plugin registered-but-unloaded with no feedback
Summary
In the /plugins Discover flow, installing a plugin whose manifest marks userConfig fields required: true chains straight into the configure form with no way to skip. A user who doesn't have the values at hand (e.g. API keys) can only press Esc — which exits with no statement of what state they're in. The install has actually persisted (the plugin is registered, unconfigured, and unloaded pending /reload-plugins), but nothing tells the user that; the visible outcome is indistinguishable from a failed install.
Reproduction
- Add a marketplace containing a plugin with
required: trueuserConfig fields (observed withlangfuse-observability, whose two API-key fields were marked required). /plugins→ Discover → select the plugin → choose an install scope.- A brief "Installed … Run /reload-plugins to apply." flashes, then the configure form opens with the required fields starred.
- Without values to enter, press Esc.
Observed: the UI exits silently. No message about install state, no pointer to /plugin configure for later. Checking installed_plugins.json shows the plugin registered at the chosen scope; the user-facing UI suggested nothing of the kind.
Expected: either a "skip configuration for now" affordance on the configure form (with a note that the plugin stays inactive until configured, and the /plugin configure <plugin> command to run later), or — if Esc is meant to abandon configuration — an explicit statement of the resulting state.
The non-interactive path already gets this right: claude plugin install prints N userConfig options not yet set (2 required) — run /plugin configure … or pass --config KEY=VALUE. The TUI flow gives none of that.
Impact
Any plugin author who marks a field required arms this trap for every menu-flow user. We've worked around it by removing required: true from our manifests entirely and enforcing at runtime instead, which suggests required is currently a net-negative manifest feature for interactively-installed plugins.
Minor related nit
The plugin details screen in the same flow shows Component summary not available for remote plugin for marketplace plugins — combined with the above, the Discover flow gives the user very little to go on before and after installing.
Claude Code 2.1.218 (Claude Code), macOS (darwin 24.6.0).