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); } }