Skip to content

[BUG] LSP servers not loading due to race condition between LSP Manager initialization and plugin loading #13952

@MarjovanLier

Description

@MarjovanLier

Preflight Checklist

  • I have searched existing issues and this hasn't been reported yet
  • This is a single bug report (please file separate reports for different bugs)
  • I am using the latest version of Claude Code

What's Wrong?

LSP servers configured via plugins are not loaded because the LSP Manager initializes before plugin loading completes. Debug logs show the LSP Manager completing with 0 servers, then plugins loading 52ms later.

The LSP Manager finishes at 08:57:37.373Z with 0 servers.
Plugins start loading at 08:57:37.425Z — 52ms too late.

Affected versions: 2.0.69 (broken), 2.0.67 (works)

Related issue: This appears to be the same async race condition pattern described in #10997 (SessionStart hooks don't execute on first run).

Reference: LSP plugin support context from https://www.reddit.com/r/ClaudeAI/comments/1otdfo9/

What Should Happen?

LSP Manager should detect and load LSP servers from all enabled plugins.

Debug logs should show:

  • Plugins load first
  • LSP Manager initializes after plugins are ready
  • LSP servers from plugins are registered (e.g., "LSP notification handlers registered successfully for all 4 server(s)")

The LSP tool should then be available with the configured language servers.

Error Messages/Logs

08:57:37.371Z [DEBUG] [LSP MANAGER] initializeLspServerManager() called
08:57:37.373Z [DEBUG] LSP notification handlers registered successfully for all 0 server(s)
...
08:57:37.425Z [DEBUG] Loading plugin phpactor-lsp from source: "./phpactor-lsp"
08:57:37.425Z [DEBUG] Loading plugin intelephense-lsp from source: "./intelephense-lsp"
08:57:37.425Z [DEBUG] Loading plugin psalm-lsp from source: "./psalm-lsp"
08:57:37.425Z [DEBUG] Loading plugin phpstan-lsp from source: "./phpstan-lsp"

Steps to Reproduce

  1. Install LSP plugins (e.g., from marketplace or local plugins with .lsp.json configuration)
  2. Set ENABLE_LSP_TOOL=true in environment
  3. Run Claude Code 2.0.69
  4. Check debug logs at ~/.claude/debug/latest
  5. Observe LSP Manager initializes with 0 servers before plugins load

Workaround: Downgrade to version 2.0.67 with claude update --version 2.0.67

Claude Model

None

Is this a regression?

Yes, this worked in a previous version

Last Working Version

2.0.67

Claude Code Version

2.0.69

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions