diff --git a/dist/acp-agent.js b/dist/acp-agent.js
index e1d9aa9f0815f57ea2fd299a7f2b8ef0917ca191..875fdfb25fbfa905ca80728355d25a17e6d89148 100644
--- a/dist/acp-agent.js
+++ b/dist/acp-agent.js
@@ -436,6 +436,7 @@ export class ClaudeAcpAgent {
         session.promptRunning = true;
         let handedOff = false;
         let stopReason = "end_turn";
+        let sawResult = false;
         try {
             while (true) {
                 const { value: message, done } = await session.query.next();
@@ -443,6 +444,9 @@ export class ClaudeAcpAgent {
                     if (session.cancelled) {
                         return { stopReason: "cancelled" };
                     }
+                    if (sawResult) {
+                        return { stopReason, usage: sessionUsage(session) };
+                    }
                     break;
                 }
                 if (session.emitRawSDKMessages &&
@@ -499,7 +503,7 @@ export class ClaudeAcpAgent {
                                 break;
                             }
                             case "session_state_changed": {
-                                if (message.state === "idle") {
+                                if (message.state === "idle" && sawResult) {
                                     return { stopReason, usage: sessionUsage(session) };
                                 }
                                 break;
@@ -621,6 +625,7 @@ export class ClaudeAcpAgent {
                                 unreachable(message, this.logger);
                                 break;
                         }
+                        sawResult = true;
                         break;
                     }
                     case "stream_event": {
