diff --git a/src/bin/poc-agent.rs b/src/bin/poc-agent.rs index 2767d5f..df43697 100644 --- a/src/bin/poc-agent.rs +++ b/src/bin/poc-agent.rs @@ -547,14 +547,18 @@ impl Session { for p in &procs { self.process_tracker.kill(p.pid).await; } - if let Some(handle) = self.turn_handle.take() { - handle.abort(); - self.turn_in_progress = false; - self.dmn = dmn::State::Resting { - since: Instant::now(), - }; - self.update_status(); - let _ = self.ui_tx.send(UiMessage::Activity(String::new())); + // Only abort the turn if no processes are running — let SIGTERM'd + // processes exit normally so run_bash can unregister them. + if procs.is_empty() { + if let Some(handle) = self.turn_handle.take() { + handle.abort(); + self.turn_in_progress = false; + self.dmn = dmn::State::Resting { + since: Instant::now(), + }; + self.update_status(); + let _ = self.ui_tx.send(UiMessage::Activity(String::new())); + } } self.pending_input = None; let killed = procs.len();