From fa90a0f9a798b5c69b0173712f5082933df6fe18 Mon Sep 17 00:00:00 2001 From: niStee <52573120+niStee@users.noreply.github.com> Date: Sun, 24 May 2026 01:56:31 +0200 Subject: [PATCH] fix(opencode): cap retry attempts at 5 to prevent infinite loops --- packages/opencode/src/session/retry.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/session/retry.ts b/packages/opencode/src/session/retry.ts index 463bc27a95db..f34f2578fa84 100644 --- a/packages/opencode/src/session/retry.ts +++ b/packages/opencode/src/session/retry.ts @@ -172,6 +172,8 @@ function parseJSON(value: unknown) { }) } +const MAX_RETRY_ATTEMPTS = 5 + export function policy(opts: { provider: string parse: (error: unknown) => Err @@ -181,7 +183,7 @@ export function policy(opts: { Effect.succeed((meta: Schedule.InputMetadata) => { const error = opts.parse(meta.input) const retry = retryable(error, opts.provider) - if (!retry) return Cause.done(meta.attempt) + if (!retry || meta.attempt > MAX_RETRY_ATTEMPTS) return Cause.done(meta.attempt) return Effect.gen(function* () { const wait = delay(meta.attempt, MessageV2.APIError.isInstance(error) ? error : undefined) const now = yield* Clock.currentTimeMillis