From d7701dbfb6c80fa82948cae2ddaf4df3963b668e Mon Sep 17 00:00:00 2001 From: "Tommy D. Rossi" Date: Thu, 30 Apr 2026 05:06:29 +0200 Subject: [PATCH] fix(opencode): preserve `external_dir` and `deny` parent permissions in task child sessions (#23290) --- packages/opencode/src/tool/task.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/opencode/src/tool/task.ts b/packages/opencode/src/tool/task.ts index bd8645d3c1..e58ea9b122 100644 --- a/packages/opencode/src/tool/task.ts +++ b/packages/opencode/src/tool/task.ts @@ -64,12 +64,16 @@ export const TaskTool = Tool.define( const session = taskID ? yield* sessions.get(SessionID.make(taskID)).pipe(Effect.catchCause(() => Effect.succeed(undefined))) : undefined + const parent = yield* sessions.get(ctx.sessionID) const nextSession = session ?? (yield* sessions.create({ parentID: ctx.sessionID, title: params.description + ` (@${next.name} subagent)`, permission: [ + ...(parent.permission ?? []).filter( + (rule) => rule.permission === "external_directory" || rule.action === "deny", + ), ...(canTodo ? [] : [