[Bug] Built-in Herdr reporter never connects on Windows, leaving panes stuck on Unknown #1399
vinchey
started this conversation in
Bug reports
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Affected area
Coding agent and CLI
What happened?
Herdr listens on a named pipe on Windows, and the pipe name embeds the socket path. The built-in reporter in
packages/coding-agent/src/core/extensions/builtin/herdr-agent-state.tsdials the bareHERDR_SOCKET_PATH:On Windows that fails with
ENOTSOCK.sendRequesttreats every socket error as a completed send:so the failure is silent. A pane running Prime Agent inside Herdr stays
Unknownforever with nothing logged, and Herdr's working/blocked/idle labelling never works on Windows.Measured from inside a real Herdr pane:
Herdr's own file-based integration (
herdr integration install pi) already applies the named-pipe transform, so the two disagree.Steps to reproduce
herdr pane get <pane-id>"agent_status": "unknown"and noagentfield, before and after sending a prompt.Expected behavior
The pane reports
idle, and transitions toworkingand back while a turn runs, the same way it does on macOS and Linux.Prime Agent version
0.7.2 (source checkout, 9f95011)
Environment
Windows 11, Herdr 0.8.0-preview.2026-08-04, Windows Terminal / ConPTY
Additional context
packages/coding-agent/test/herdr-agent-state.test.tscannot catch this, because it cannot run on Windows at all. Its fake server also listens on the bare path, soserver.listen()throwsEACCESbefore any assertion runs:Applying the same transform in the test helper brings it to 12 passed, and reverting only the source change then gives 8 failed / 4 passed, so it becomes a real regression test rather than one that passes either way.
I have a working patch (6 lines of source, 11 of test) and verified it end to end in a Herdr pane:
npm run checkpasses. No protocol, command, or event shape changes. Happy to open a PR if a maintainer wants it; per CONTRIBUTING.md I am starting here instead.All reactions