From 5420fa2ee81ac2b2e58d33e13479ffc77d1151d2 Mon Sep 17 00:00:00 2001 From: Eyejoker Date: Wed, 1 Apr 2026 05:15:24 +0900 Subject: [PATCH] fix: handoff to codex on persistent session failure When Claude reviewer hits retryable session failure twice, hand off to codex instead of silently failing. Adds 'session-failure' to AgentTriggerReason and shouldHandoffToCodex check. --- src/agent-error-detection.ts | 3 ++- src/message-agent-executor.ts | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/agent-error-detection.ts b/src/agent-error-detection.ts index bbfdbb7..47e13c7 100644 --- a/src/agent-error-detection.ts +++ b/src/agent-error-detection.ts @@ -101,7 +101,8 @@ export type AgentTriggerReason = | 'org-access-denied' | 'overloaded' | 'network-error' - | 'success-null-result'; + | 'success-null-result' + | 'session-failure'; export type ClaudeRotationReason = Extract< AgentTriggerReason, diff --git a/src/message-agent-executor.ts b/src/message-agent-executor.ts index 4c66fce..515076b 100644 --- a/src/message-agent-executor.ts +++ b/src/message-agent-executor.ts @@ -295,7 +295,8 @@ export async function runAgentForGroup( reason === '429' || reason === 'usage-exhausted' || reason === 'auth-expired' || - reason === 'org-access-denied' + reason === 'org-access-denied' || + reason === 'session-failure' ); }; @@ -781,7 +782,7 @@ export async function runAgentForGroup( log.error( 'Retryable Claude session failure persisted after fresh retry', ); - return 'error'; + return maybeHandoffAfterError('session-failure', primaryAttempt); } }