From 4f967d5bc05d545fde9deccdb632276ec642722e Mon Sep 17 00:00:00 2001 From: Kit Langton Date: Tue, 14 Apr 2026 12:55:03 -0400 Subject: [PATCH] improve bash timeout retry hint (#22390) --- packages/opencode/src/tool/bash.ts | 6 +++++- packages/opencode/test/tool/bash.test.ts | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/tool/bash.ts b/packages/opencode/src/tool/bash.ts index 150cafbd76..ad6739b9a9 100644 --- a/packages/opencode/src/tool/bash.ts +++ b/packages/opencode/src/tool/bash.ts @@ -437,7 +437,11 @@ export const BashTool = Tool.define( ).pipe(Effect.orDie) const meta: string[] = [] - if (expired) meta.push(`bash tool terminated command after exceeding timeout ${input.timeout} ms`) + if (expired) { + meta.push( + `bash tool terminated command after exceeding timeout ${input.timeout} ms. If this command is expected to take longer and is not waiting for interactive input, retry with a larger timeout value in milliseconds.`, + ) + } if (aborted) meta.push("User aborted the command") if (meta.length > 0) { output += "\n\n\n" + meta.join("\n") + "\n" diff --git a/packages/opencode/test/tool/bash.test.ts b/packages/opencode/test/tool/bash.test.ts index 839c066c6c..fc7a9e73e4 100644 --- a/packages/opencode/test/tool/bash.test.ts +++ b/packages/opencode/test/tool/bash.test.ts @@ -1024,6 +1024,7 @@ describe("tool.bash abort", () => { ) expect(result.output).toContain("started") expect(result.output).toContain("bash tool terminated command after exceeding timeout") + expect(result.output).toContain("retry with a larger timeout value in milliseconds") }, }) }, 15_000)