[BUG] Disabled plugin state in ~/.claude/settings.json survives uninstall + reinstall
Summary
When a plugin is Disabled via /plugin → Disable, the false value persists
in ~/.claude/settings.json under enabledPlugins. Subsequent claude plugin +
uninstallclaude plugin install cycles do NOT touch this key — so the
freshly reinstalled plugin loads in a Disabled state without any user signal
explaining why slash commands aren't working.
Repro
- Install any marketplace plugin (using
sig@signalas example):
claude plugin install sig@signal
- Verify slash commands work (e.g.,
/sig:status). - Disable via
/plugin → Disable→ settings.json now hasenabledPlugins["sig@signal"]: false. - Uninstall:
claude plugin uninstall sig --scope user -y.
→ manifest entry removed, cache directory removed.
→ enabledPlugins["sig@signal"]: false STILL present in settings.json.
- Reinstall:
claude plugin install sig@signal.
→ /reload-plugins reports success, but /plugin shows the plugin as Disabled.
→ /sig:* commands don't autocomplete.
Expected
Uninstall should remove the corresponding enabledPlugins entry, OR reinstall
should reset it to true, OR an explicit user prompt during reinstall should
surface "We detected a prior Disabled state; reset to Enabled?"
Workaround
Edit ~/.claude/settings.json and flip the entry to true (or delete it),
then /reload-plugins.
Environment
- Claude Code: 2.1.121+ (the version that introduced
claude pluginCLI subcommands;
the bug existed pre-2.1.121 as well via the /plugin slash-command path)
- macOS — but the underlying settings.json mechanism is platform-independent
Adjacent issues
This sits in the same install-state cluster as:
- #56740 —
/plugin installshort-circuits on stalegitCommitSha - #62497 —
/plugininteractive menu has no Uninstall verb
Origin
Surfaced while building /sig:doctor,
an install-state diagnostician for the Signal plugin. Full troubleshooting
write-up with detection logic + remediation steps:
https://github.com/InsightRiot/signal/blob/main/docs/install-troubleshooting.md#symptom-3
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗