diff options
| author | Tommy D. Rossi <[email protected]> | 2026-04-30 05:06:29 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-04-29 22:06:29 -0500 |
| commit | d7701dbfb6c80fa82948cae2ddaf4df3963b668e (patch) | |
| tree | f61e0976521ce08e8c2817cff7a43c806b9e6fb5 | |
| parent | c49bf0b402d54c453e8bfd39cce465bee9281a43 (diff) | |
| download | opencode-d7701dbfb6c80fa82948cae2ddaf4df3963b668e.tar.gz opencode-d7701dbfb6c80fa82948cae2ddaf4df3963b668e.zip | |
fix(opencode): preserve `external_dir` and `deny` parent permissions in task child sessions (#23290)
| -rw-r--r-- | packages/opencode/src/tool/task.ts | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/packages/opencode/src/tool/task.ts b/packages/opencode/src/tool/task.ts index bd8645d3c..e58ea9b12 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 ? [] : [ |
