Skip to content

Windows: project identity for pipes / registry is still case-sensitive (follow-up to #1082) #2278

Description

@ijbranch

What happened. #1082 de-duplicated two spellings of one repo onto one DB connection, but the daemon
pipe name and registry key are still derived from path.resolve(root) (src/mcp/daemon-paths.ts
~41-43; also acquireProject, src/mcp/project-lifecycle.ts ~37). fs.realpathSync keeps the
caller's casing (realpathSync.native does not), so D:\gllSpell and D:\GllSpell get two daemons
and two watchers, and a session started with the "other" casing polls a pipe nobody listens on for 6 s
and then runs read-only. Our ~/.codegraph/daemons registry held both spellings of one repo.

Suggested fix (what we did): an identity key of realpathSync.native(root) lower-cased on win32,
used for the pipe hash, the registry record and the project-lifecycle map; display paths unchanged.


All found on Windows 11, Node 24, main at f416357 (2026-10-02), running as Claude Code's MCP server.
Each has a fix with a regression test in our fork (ijbranch/gllCodeGraph, private); the test and the
patch can be offered as a PR if wanted.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions