From a9c810cbbc8b3f27b37f9bf0b8963d29edd976e3 Mon Sep 17 00:00:00 2001 From: Tony Worm <1390600+verdverm@users.noreply.github.com> Date: Thu, 11 Jun 2026 21:19:15 -0700 Subject: [PATCH] fix(tui): double file content injection in commands using $ARGUMENTS (#31245) Co-authored-by: Aiden Cline --- packages/opencode/src/session/prompt.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index c5047a605..631b881ee 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -1491,6 +1491,12 @@ export const layer = Layer.effect( } const templateParts = yield* resolvePromptParts(template) + const inputFiles = new Set( + input.parts?.filter((part) => new URL(part.url).protocol === "file:").map((part) => fileURLToPath(part.url)), + ) + const uniqueTemplateParts = templateParts.filter( + (part) => part.type !== "file" || !inputFiles.has(fileURLToPath(part.url)), + ) const isSubtask = (agent.mode === "subagent" && cmd.subtask !== false) || cmd.subtask === true const parts = isSubtask ? [ @@ -1503,7 +1509,7 @@ export const layer = Layer.effect( prompt: templateParts.find((y) => y.type === "text")?.text ?? "", }, ] - : [...templateParts, ...(input.parts ?? [])] + : [...uniqueTemplateParts, ...(input.parts ?? [])] const userAgent = isSubtask ? (input.agent ?? (yield* agents.defaultInfo()).name) : agent.name const userModel = isSubtask