diff --git a/internal/daemon/daemon.go b/internal/daemon/daemon.go index 24cb021e..c8d4d74c 100755 --- a/internal/daemon/daemon.go +++ b/internal/daemon/daemon.go @@ -436,7 +436,9 @@ func (d *Daemon) checkDeaconHeartbeat() { if err := d.tmux.KillSessionWithProcesses(sessionName); err != nil { d.logger.Printf("Error killing stuck Deacon: %v", err) } - // ensureDeaconRunning will restart on next heartbeat + // Spawn new Deacon immediately instead of waiting for next heartbeat + // (kill may fail if session disappeared between check and kill) + d.ensureDeaconRunning() } else { // Stuck but not critically - nudge to wake up d.logger.Printf("Deacon stuck for %s - nudging session", age.Round(time.Minute))