Plugin install TUI: Esc from post-install required-field config leaves plugin registered-but-unloaded with no feedback

Status Open
Reported on v2.1.218
Maintainer reply None cached
Activity 0 comments · opened Jul 24, 2026

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

  1. Add a marketplace containing a plugin with required: true userConfig fields (observed with langfuse-observability, whose two API-key fields were marked required).
  2. /plugins → Discover → select the plugin → choose an install scope.
  3. A brief "Installed … Run /reload-plugins to apply." flashes, then the configure form opens with the required fields starred.
  4. 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).

View original on GitHub ↗