There’s a particular kind of bug that’s worse than a crash: a silent hang. Your coding agent is working, everything looks fine, and then it stops responding. No error message. No timeout. Just silence.
Gitlawb Zero just fixed one of these.
The Bug
Zero’s runner (the component that executes agent actions) uses askUser callbacks to prompt you for input — “which file should I edit?” “should I run this command?” If a callback was pending when the runner tried to move to the next action, the entire runner would hang.
The callbacks weren’t being resolved when the session context changed. A callback that was valid during one phase of the conversation became a dangling reference in the next phase.
The Fix
fix(tui): resolve pending askUser callbacks to prevent runner hangs (#620)
The fix ensures that all pending askUser callbacks are resolved (either fulfilled or rejected) before the runner transitions between phases. If a callback is no longer valid, it’s cleaned up instead of left hanging.
Why This Matters
Runner hangs are the worst kind of bug because:
- They’re hard to reproduce (you need the exact conversation state)
- They’re hard to debug (no error message, no stack trace)
- They’re hard to detect (the session appears active, just unresponsive)
Zero’s fix addresses the root cause — stale callbacks — rather than adding timeouts or workarounds. This is the right approach because timeouts just delay the hang; cleanup prevents it.
What This Means
Zero’s sessions are now more reliable. The runner completes actions without waiting for callbacks that will never arrive. For power users running long sessions with multiple tool calls, this is a significant quality-of-life improvement. The durable session model behind this is explained in the deep-dive on the gitlawb-zero agent, and the companion reliability work lives in the auto-commit messages feature, where the same TUI integration philosophy — stay responsive, never leave the user guessing — shows up again. If you run Zero on Android between desk sessions, the Termux support writeup is the bridge that keeps these long-lived sessions portable.