[BUG] /reload-plugins cannot hot-reload LSP servers and /plugin shows false 'not found in marketplace' errors (2.1.69)
Bug Description
Two related issues with the plugin system in v2.1.69:
1. /reload-plugins cannot hot-reload LSP servers
After running /reload-plugins, LSP servers always show:
4 LSP server(s) provided by plugins require restart to activate.
Even after a full restart and re-running /reload-plugins, the same message persists. MCP servers have a hot-reload mechanism via pluginReconnectKey increment, but LSP servers lack an equivalent — they are loaded at startup and never reconnected.
Expected: /reload-plugins should restart LSP server processes (kill old, spawn new) similar to how MCP servers are reconnected via pluginReconnectKey.
2. /plugin Errors tab shows false-positive "not found in marketplace" for all plugins
The /plugin UI Errors tab shows 29 errors like:
✘ typescript-lsp @ claude-plugins-official (user)
Plugin 'typescript-lsp' not found in marketplace 'claude-plugins-official'
Plugin may not exist in marketplace 'claude-plugins-official'
This affects every single installed plugin — including official ones like superpowers, commit-commands, code-simplifier, etc. The plugins are functionally loaded (26 plugins, 48 commands, 54 agents, 24 hooks all work), but the marketplace lookup fails for all of them.
The official marketplace at anthropics/claude-code/.claude-plugin/marketplace.json defines marketplace name claude-code-plugins with 13 plugins, but the installed plugins reference marketplace claude-plugins-official — suggesting a marketplace name mismatch or a regression in how installed plugins resolve their marketplace source.
Steps to Reproduce
- Install Claude Code v2.1.69
- Have any LSP plugins enabled (typescript-lsp, csharp-lsp, pyright-lsp, jdtls-lsp)
- Start a new session
- Run
/reload-plugins→ observe "LSP server(s) require restart" - Run
/plugin→ navigate to Errors tab → observe all plugins show "not found in marketplace"
Environment
- Claude Code v2.1.69 (native binary, macOS arm64)
- macOS Darwin 25.3.0
- 4 LSP plugins enabled (typescript-lsp, csharp-lsp, pyright-lsp, jdtls-lsp)
- 26 total plugins across 3 marketplaces (claude-plugins-official, claude-code-workflows, custom)
Additional Context
LSP .lsp.json schema
The v2.1.69 schema for .lsp.json requires (extracted from binary via S.strictObject):
{
command: string, // no spaces allowed (use args for arguments)
args?: string[], // CLI arguments like ["--stdio"]
extensionToLanguage: Record<string, string> // e.g. { ".cs": "csharp" }
}
The old format used language: string[], filePatterns: string[], and command: string[] (array). This schema change is undocumented and breaks any existing .lsp.json configs.
Working config example (new schema)
{
"csharp": {
"command": "csharp-language-server",
"extensionToLanguage": {
".cs": "csharp"
}
}
}
{
"typescript": {
"command": "typescript-language-server",
"args": ["--stdio"],
"extensionToLanguage": {
".ts": "typescript",
".tsx": "typescriptreact",
".js": "javascript",
".jsx": "javascriptreact"
}
}
}This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗