From c12d3f071381b79e88ce05778732f2d90f59a7f8 Mon Sep 17 00:00:00 2001 From: Burak Yigit Kaya Date: Sat, 16 May 2026 14:42:59 +0000 Subject: [PATCH] fix(plan): deny plan_exit tool in subagent sessions Subagents spawned via the task tool could call plan_exit because the tools map passed to SessionPrompt.prompt() did not include plan_exit: false. Since SessionPrompt.prompt() overwrites session permissions with the tools map, the deny rules set via deriveSubagentSessionPermission were silently overridden. Add plan_exit: false to the tools map so the deny persists through the prompt permission rewrite. --- packages/opencode/src/tool/task.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/opencode/src/tool/task.ts b/packages/opencode/src/tool/task.ts index fece68800b06..d3f5c70cd7e1 100644 --- a/packages/opencode/src/tool/task.ts +++ b/packages/opencode/src/tool/task.ts @@ -205,6 +205,7 @@ export const TaskTool = Tool.define( ...(next.permission.some((rule) => rule.permission === "todowrite") ? {} : { todowrite: false }), ...(next.permission.some((rule) => rule.permission === id) ? {} : { task: false }), ...Object.fromEntries((cfg.experimental?.primary_tools ?? []).map((item) => [item, false])), + plan_exit: false, }, parts, })