# Reported issues for agent-lsp

Pod holds 9 of 9 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to [agent-lsp](/mcp/agent-lsp).

## Most discussed

### feat: Luau language support via custom extension routing

## Problem

agent-lsp does not recognize `.luau` files. When opening a `.luau` file, all tool handlers default to `languageID = "plaintext"`, which routes requests to the wrong language server (e.g. clangd for .c files). This means:

- No diagnostics for Luau code
- No go-to-definition or find-references across Luau files

## Solution

### 1. `LanguageIDForFile()` on `ServerManager` and `LSPClient`

New method that checks the server config's extensions field first, then falls back to the built-i

[Read the thread](https://github.com/blackwell-systems/agent-lsp/issues/20) · 2026-08-27 · closed · outside contributor · 2 comments

### macOS auto-watcher leaks one O_EVTONLY fd per workspace file (fsnotify kqueue): broker pegs kern.maxfilesperproc and causes machine-wide ENFILE

## Summary

On macOS, `agent-lsp`'s always-on auto-watcher (`startWatcher` in `internal/lsp/client.go`) consumes **one file descriptor per file in the workspace** — and keeps growing by one fd per file *created* in a watched directory, forever. On a workspace whose tree contains large non-code data directories (browser profiles, caches), the daemon-broker pegs `kern.maxfilesperproc` (245,760) and, together with any other process, exhausts the system-wide file table (`kern.maxfiles`), causing **m

[Read the thread](https://github.com/blackwell-systems/agent-lsp/issues/18) · 2026-08-25 · closed · external user · 2 comments

### Server exits on a malformed JSON-RPC frame (denial-of-service)

Hello, and apologies for the unsolicited report.

Your MCP server **`io.github.blackwell-systems/agent-lsp`** (`@blackwell-systems/agent-lsp`) was included in an automated
conformance study of publicly registered Model Context Protocol servers. The study
installed and executed every eligible server in the official registry and drove it
through a set of protocol checks. One result looked worth reporting to you directly.

## What we observed

**Server crashes or stops responding after a m

[Read the thread](https://github.com/blackwell-systems/agent-lsp/issues/14) · 2026-07-31 · open · external user · 3 comments

### [feature request] Allow combining config with auto-detected servers

Hi, and thank you for sharing this useful tool.

As I understand it, in `agent-lsp` v0.16.0, using the `--config` command-line option disables auto-detection, so all servers must be listed explicitly in the provided JSON.

Could the JSON optionally be merged with the auto-detected servers instead? For example:

```bash
agent-lsp --merge-config /path/to/agent-lsp.json
```

This would preserve auto-detection while allowing custom servers to be added and, when needed, auto-detected servers to be ov

[Read the thread](https://github.com/blackwell-systems/agent-lsp/issues/13) · 2026-07-29 · closed · external user · 2 comments

### agent-lsp 的 GCF 编码层会合并多个 TextEdit 导致文件损坏。

现在我理解了完整链路。关键问题在 GCF 编码。让我确认一下——rename_symbol 返回的 GCF 输出中 [1] 表示只有 1 条记录。但 ApplyWorkspaceEdit 在解析时用的是 json.Unmarshal 到 map[string][]textEdit，如果 GCF 输出只有
   1 条记录，那 LLM 回传的 workspace_edit JSON 也只有 1 条。

  让我验证——看看我之前传给 apply_edit 的 workspace_edit JSON：

  回顾我之前的调用，我手动构造了：
  {"changes": {"file:///...": [{"newText": "...", "range": {"end": {"character": 32, "line": 337}, "start": {"character": 14, "line": 99}}}]}}

  只有 1 个 TextEdit，range 是 99:14 → 337:32。这就是问题所在！

  根因确认：gcf-go 的 EncodeGeneric 把 j

[Read the thread](https://github.com/blackwell-systems/agent-lsp/issues/12) · 2026-07-14 · closed · external user · 3 comments

### `start_lsp(scope=[...])` writes a malformed `pyrightconfig.json` `include`

# `start_lsp(scope=[...])` writes a malformed `pyrightconfig.json` `include` — double-encodes the list into a single string element, silently breaking all workspace queries (pyright/basedpyright)

## Summary

Calling `start_lsp` with a `scope` array makes agent-lsp generate a `pyrightconfig.json` whose `include` is **one element containing the JSON-stringified scope list**, rather than the list's entries. pyright/basedpyright then matches **zero files**, so `find_symbol`, `find_references`, and 

[Read the thread](https://github.com/blackwell-systems/agent-lsp/issues/10) · 2026-06-20 · closed · external user · 1 comment

### Windows: C# diagnostics & code actions silently empty due to drive-letter casing mismatch

# Windows: C# diagnostics & code actions silently empty due to drive-letter casing mismatch

## Summary
On Windows with `csharp-ls`, all semantic tools return false-empty results because the tool layer and the language server normalize the file URI to different drive-letter casing.

- `csharp-ls` keys documents/diagnostics under a **lowercase** drive letter: `file:///c:/...`
- agent-lsp queries/opens under an **uppercase** drive letter: `file:///C:/...`

The two are treated as different document

[Read the thread](https://github.com/blackwell-systems/agent-lsp/issues/9) · 2026-06-19 · closed · external user · 1 comment

### inputSchema emits `"type": ["null","array"]` for 6 tools, breaking Gemini 2.5 Flash

## Symptom

Gemini 2.5 Flash (Google `generativelanguage` API) rejects `tools/list` from agent-lsp because 6 tool inputSchemas contain `"type": ["null","array"]` for slice properties. Gemini's strict OpenAPI 3.0 subset only accepts `"type": "array"` (string scalar) with `items` at the same level.

Concrete error sample:
```
GenerateContentRequest.tools[0].function_declarations[X].parameters.properties[changed_files].items: field predicate failed: $type == Type.ARRAY
GenerateContentRequest.tools[

[Read the thread](https://github.com/blackwell-systems/agent-lsp/issues/2) · 2026-05-01 · closed · external user · 2 comments

## Most recent

### Support Luau language (luau-lsp)

Luau is a typed Lua dialect with its own language server ([luau-lsp](https://github.com/JohnnyMorganz/luau-lsp)), distinct from Lua's `lua-language-server`. agent-lsp doesn't recognize `luau` as a language ID, so `.luau` files get no LSP support.

**What I tried:**
- CLI arg `luau:luau-lsp,lsp` — silently ignored (unrecognized language ID)
- `--merge-config` with `{"servers": [{"language_id": "lua", "extensions": [".luau"], "command": ["luau-lsp", "lsp"]}]}` — lua override works but doesn't rout

[Read the thread](https://github.com/blackwell-systems/agent-lsp/issues/19) · 2026-08-26 · closed · outside contributor · 0 comments

The remaining reports are on [the project's issue tracker](https://github.com/blackwell-systems/agent-lsp/issues).
