Repository navigation
endpoint_busy locks the whole client after a slow "Delete worktree checkout" times out (0.9.1, macOS) #4578
Copy link
Copy link
Open
Labels
macosaffects macOS-specific behavioraffects macOS-specific behaviormaintainer-neededrequires maintainer judgment or maintainer-only reproductionrequires maintainer judgment or maintainer-only reproductionp2valid narrow or ordinary defect with limited impact or a practical workaroundvalid narrow or ordinary defect with limited impact or a practical workaroundsessionsworkspace, tab, or pane lifecycle, restore, and persistenceworkspace, tab, or pane lifecycle, restore, and persistencetriagedScreened; 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
- addedmaintainer-neededrequires maintainer judgment or maintainer-only reproductionrequires maintainer judgment or maintainer-only reproductionp2valid narrow or ordinary defect with limited impact or a practical workaroundvalid narrow or ordinary defect with limited impact or a practical workaroundmacosaffects macOS-specific behavioraffects macOS-specific behaviorsessionsworkspace, tab, or pane lifecycle, restore, and persistenceworkspace, tab, or pane lifecycle, restore, and persistence
on Sep 24, 2026 - 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.
on Sep 24, 2026 Same here on 0.9.3, macOS. The worktrees are normal dev checkouts: a Rust worktree with a 7 GB
target/(92k files) and a JS worktree with an 830 MBnode_modules(43–77k files). Deleting either one freezes the client for the whole delete.From reading master (
b977116), here's why:git worktree removeruns on a server thread, but the client keeps the request open until it finishes.shell_endpoint_command_in_flightmakes every other action returnendpoint_busy(src/server/headless/endpoint_requests.rs:58).- The client gives up after
ENDPOINT_COMMAND_TIMEOUT(60s,src/client/endpoint_commands.rs:12), but the endpoint stays locked until git exits.
#2334 fixed this: it dismissed the dialog, showed a spinner on the row, and reopened the dialog on failure. Would you reconsider it, or something like it? Right now every cleanup of a full-size checkout locks every agent pane for a minute or more.
Workaround for anyone hitting this: in the worktree, run
mv target /tmp/t.$$ && rm -rf /tmp/t.$$ &(or the same fornode_modules) before deleting. The rename is instant, and the delete then takes about a second.
Metadata
Metadata
Assignees
Labels
macosaffects macOS-specific behavioraffects macOS-specific behaviormaintainer-neededrequires maintainer judgment or maintainer-only reproductionrequires maintainer judgment or maintainer-only reproductionp2valid narrow or ordinary defect with limited impact or a practical workaroundvalid narrow or ordinary defect with limited impact or a practical workaroundsessionsworkspace, tab, or pane lifecycle, restore, and persistenceworkspace, tab, or pane lifecycle, restore, and persistencetriagedScreened; 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
Deleting a worktree workspace (sidebar right-click → Delete worktree checkout...) on a large checkout takes long enough that the client-side request times out.
The delete worktree checkout dialog shows the error:
this server did not respond to the actionAfter the timeout, the client is unusable. Every subsequent action, whether from the UI or the CLI, fails with:
endpoint_busy: this endpoint is still processing another command
There is no way to cancel, retry, or see progress. The only option is to wait until the original delete finishes on the server, at which point the workspace disappears and the client starts responding again.
Expected behavior
If the workspace deletion takes time I expect the dialog to close and let me use herdr as normal - switch to other workspaces, create new, etc
Reproduction
Impact
Every time I clean up a finished worktree workspace, Herdr is frozen for the whole client until the delete finishes. During that time I cannot switch to any other workspace or talk to any running agent. It happens on every delete of a full-size checkout, not intermittently.
Environment