diff --git a/src/agents/failover-error.test.ts b/src/agents/failover-error.test.ts index a43ae289f..d81781a90 100644 --- a/src/agents/failover-error.test.ts +++ b/src/agents/failover-error.test.ts @@ -11,6 +11,7 @@ describe("failover-error", () => { expect(resolveFailoverReasonFromError({ statusCode: "429" })).toBe("rate_limit"); expect(resolveFailoverReasonFromError({ status: 403 })).toBe("auth"); expect(resolveFailoverReasonFromError({ status: 408 })).toBe("timeout"); + expect(resolveFailoverReasonFromError({ status: 400 })).toBe("format"); }); it("infers format errors from error messages", () => { diff --git a/src/agents/failover-error.ts b/src/agents/failover-error.ts index 5026394f3..6f6e33948 100644 --- a/src/agents/failover-error.ts +++ b/src/agents/failover-error.ts @@ -120,6 +120,7 @@ export function resolveFailoverReasonFromError(err: unknown): FailoverReason | n if (status === 429) return "rate_limit"; if (status === 401 || status === 403) return "auth"; if (status === 408) return "timeout"; + if (status === 400) return "format"; const code = (getErrorCode(err) ?? "").toUpperCase(); if (["ETIMEDOUT", "ESOCKETTIMEDOUT", "ECONNRESET", "ECONNABORTED"].includes(code)) {