Repository navigation
API listener dies on a single transient accept error; CLI and live handoff unreachable while server and panes keep running #4601
Copy link
Copy link
Closed
Labels
apipublic JSON API, events, commands, or wire protocolpublic JSON API, events, commands, or wire protocolbugSomething isn't workingSomething isn't workingmacosaffects macOS-specific behavioraffects macOS-specific behaviormaintainer-neededrequires maintainer judgment or maintainer-only reproductionrequires maintainer judgment or maintainer-only reproductionp1serious defect affecting a common platform, core workflow, or broadly used integrationserious defect affecting a common platform, core workflow, or broadly used integrationtriagedScreened; left open for investigation or maintainer judgment. Not proof of a bug or reproduction.Screened; left open for investigation or maintainer judgment. Not proof of a bug or reproduction.
Description
Activity
- addedtriagedScreened; left open for investigation or maintainer judgment. Not proof of a bug or reproduction.Screened; left open for investigation or maintainer judgment. Not proof of a bug or reproduction.bugSomething isn't workingSomething isn't workingp1serious defect affecting a common platform, core workflow, or broadly used integrationserious defect affecting a common platform, core workflow, or broadly used integrationmacosaffects macOS-specific behavioraffects macOS-specific behaviorapipublic JSON API, events, commands, or wire protocolpublic JSON API, events, commands, or wire protocolmaintainer-neededrequires maintainer judgment or maintainer-only reproductionrequires maintainer judgment or maintainer-only reproduction
on Sep 25, 2026 Implemented on master and queued for the next release. This is not available in a published Herdr release yet.
- addedpreview-releasedAvailable on the preview channel, pending a stable release.Available on the preview channel, pending a stable release.
on Sep 28, 2026 Released on the preview channel in 2026-09-28-80c0c07250d2. This is available to preview users, but is not in a stable Herdr release yet.
- added a commit that references this issue
on Sep 29, 2026 Released in v0.9.2.
- removedpreview-releasedAvailable on the preview channel, pending a stable release.Available on the preview channel, pending a stable release.
on Sep 29, 2026 - added a commit that references this issue
on Sep 30, 2026
Metadata
Metadata
Assignees
Labels
apipublic JSON API, events, commands, or wire protocolpublic JSON API, events, commands, or wire protocolbugSomething isn't workingSomething isn't workingmacosaffects macOS-specific behavioraffects macOS-specific behaviormaintainer-neededrequires maintainer judgment or maintainer-only reproductionrequires maintainer judgment or maintainer-only reproductionp1serious defect affecting a common platform, core workflow, or broadly used integrationserious defect affecting a common platform, core workflow, or broadly used integrationtriagedScreened; left open for investigation or maintainer judgment. Not proof of a bug or reproduction.Screened; left open for investigation or maintainer judgment. Not proof of a bug or reproduction.
Is this a reproducible bug?
Current behavior
After the server had been running for ~8 hours, every CLI command started failing with
no herdr server is running at ~/.config/herdr/herdr.sock. The server process was still alive (16 panes with shells running), the TUI client socket still worked, and the socket fileherdr.sockstill existed — but nothing was accepting on it (connecting givesConnection refused).The server log shows the moment it broke (single line, then normal pane/focus/persist activity continues for hours afterwards):
I reproduced the dead-socket state by inspecting the running process:
lsofon the server PID showed no listener on herdr.sock, and a direct connect to the socket returned ECONNREFUSED, whileherdr status --jsonreportedserver not_running.Expected behavior
A single transient accept error should not permanently remove the API socket. The server should keep serving CLI commands and live handoff until it is intentionally stopped.
Reproduction
herdrwith several panes and let it run.herdr status --json→server_not_running;herdr server live-handoff ...→server_not_running, even though the process and panes are alive.Impact
The server becomes unreachable from the CLI while all panes keep running. Live handoff is impossible, so the only recovery is
kill <server-pid>, which terminates every running pane process. I lost 5 active Claude sessions this way.Environment