diff --git a/packages/cli/src/nonInteractiveCli.ts b/packages/cli/src/nonInteractiveCli.ts index 57362ff126..5bdf03d4b3 100644 --- a/packages/cli/src/nonInteractiveCli.ts +++ b/packages/cli/src/nonInteractiveCli.ts @@ -445,18 +445,6 @@ export async function runNonInteractive({ const errorCode = event._meta?.['code']; - if (errorCode === 'MAX_TURNS_EXCEEDED') { - if (streamFormatter) { - streamFormatter.emitEvent({ - type: JsonStreamEventType.ERROR, - timestamp: new Date().toISOString(), - severity: 'error', - message: event.message, - }); - } - break; - } - if (errorCode === 'AGENT_EXECUTION_BLOCKED') { if (config.getOutputFormat() === OutputFormat.TEXT) { process.stderr.write(`[WARNING] ${event.message}\n`); @@ -483,7 +471,20 @@ export async function runNonInteractive({ if (event.reason === 'aborted') { handleCancellationError(config); } else if (event.reason === 'max_turns') { - handleMaxTurnsExceededError(config); + const isSessionLimit = + typeof event.data?.['maxTurns'] === 'number' && + typeof event.data?.['turnCount'] === 'number'; + if (isSessionLimit) { + handleMaxTurnsExceededError(config); + } + if (streamFormatter) { + streamFormatter.emitEvent({ + type: JsonStreamEventType.ERROR, + timestamp: new Date().toISOString(), + severity: 'error', + message: 'Maximum session turns exceeded', + }); + } } const stopMessage =