diff --git a/packages/core/src/core/client.ts b/packages/core/src/core/client.ts index d95efc844..dfbcc38ea 100644 --- a/packages/core/src/core/client.ts +++ b/packages/core/src/core/client.ts @@ -722,6 +722,14 @@ export class GeminiClient { const stopOutput = hookOutput as StopHookOutput | undefined; + // This should happen regardless of the hook's decision + if (stopOutput?.systemMessage) { + yield { + type: GeminiEventType.HookSystemMessage, + value: stopOutput.systemMessage, + }; + } + // For Stop hooks, blocking/stop execution should force continuation if ( stopOutput?.isBlockingDecision() || @@ -732,14 +740,6 @@ export class GeminiClient { return turn; } - // Emit system message if provided (e.g., "🔄 Ralph iteration 5") - if (stopOutput.systemMessage) { - yield { - type: GeminiEventType.HookSystemMessage, - value: stopOutput.systemMessage, - }; - } - const continueReason = stopOutput.getEffectiveReason(); const continueRequest = [{ text: continueReason }]; return yield* this.sendMessageStream(