[FEATURE] Keep the LSP tool loaded when a code intelligence plugin is enabled

Status Open
Reported on v2.1.295
Maintainer reply None cached
Activity 0 comments · opened Oct 8, 2026

Preflight Checklist

  • [x] I have searched existing requests and this feature hasn't been requested yet
  • [x] This is a single feature request (not multiple features)

Problem Statement

The LSP tool is one of the built-in tools deferred behind ToolSearch (#31002): a session sees its name and has to load it before it can call it. With a code intelligence plugin enabled, Claude can go a whole session without loading it, navigating with Grep and Read instead, so the plugin delivers diagnostics after edits and no navigation.

Measured on Windows with typescript-language-server 6.0.1: in a 139-call session fixing lint and static-check findings in a TypeScript monorepo, with the prompt saying the session has the LSP tool and should use it for symbol work, Claude made 0 LSP calls. It searched with Grep or grep 27 times and made 32 Read calls; the only LSP output it saw was two automatic diagnostics notices. Once a line in my CLAUDE.md told it to load the tool with ToolSearch (select:LSP) for symbol questions, a plain "where is greet used?" loaded it and answered with findReferences, hover and incomingCalls.

Proposed Solution

When an enabled plugin declares lspServers, load the LSP tool's schema up front instead of deferring it: installing a code intelligence plugin is the signal that the tool is wanted. A per-tool opt-in for built-in tools, like alwaysLoad for MCP servers, would cover the same need.

Alternative Solutions

  • ENABLE_TOOL_SEARCH=false loads every deferred tool up front, MCP tools included, which costs far more context than the one schema.
  • A CLAUDE.md line telling Claude to load the tool with ToolSearch works (above), but every user of a code intelligence plugin has to find that out and write it.

Priority

Medium - Would be very helpful

Feature Category

Configuration and settings

Use Case Example

  1. Install typescript-lsp and its server.
  2. Ask Claude to find every caller of a function used across a package, or to rename it.
  3. Claude resolves the definition and references with LSP, following the re-exports and aliases a text search misreads, instead of grepping for the name.

Additional Context

Related: #90085 (deferred built-in tools are unreachable from subagents) and #84125 (LSP pruned from subagent tool sets). This one is about the main session, where ToolSearch is available but the deferred LSP tool goes unused. Claude Code 2.1.295, Windows 11.

View original on GitHub ↗