diff options
| author | Aiden Cline <[email protected]> | 2026-01-06 17:05:09 -0600 |
|---|---|---|
| committer | Aiden Cline <[email protected]> | 2026-01-06 17:05:20 -0600 |
| commit | 625c9dae5c7c10d075a547cb5a8828b838b4db25 (patch) | |
| tree | dce928024d343b84abd32bc7e533f154349332c8 | |
| parent | b2341c2d9a4b34d96181003deedee3daafa16d94 (diff) | |
| download | opencode-625c9dae5c7c10d075a547cb5a8828b838b4db25.tar.gz opencode-625c9dae5c7c10d075a547cb5a8828b838b4db25.zip | |
fix: ensure commands listing subagent work
| -rw-r--r-- | packages/opencode/src/session/prompt.ts | 1 | ||||
| -rw-r--r-- | packages/opencode/src/tool/task.ts | 21 |
2 files changed, 13 insertions, 9 deletions
diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index b669e9567..0306c59eb 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -382,6 +382,7 @@ export namespace SessionPrompt { messageID: assistantMessage.id, sessionID: sessionID, abort, + extra: { bypassAgentCheck: true }, async metadata(input) { await Session.updatePart({ ...part, diff --git a/packages/opencode/src/tool/task.ts b/packages/opencode/src/tool/task.ts index 112edc3dc..3489f3bf7 100644 --- a/packages/opencode/src/tool/task.ts +++ b/packages/opencode/src/tool/task.ts @@ -30,15 +30,18 @@ export const TaskTool = Tool.define("task", async () => { }), async execute(params, ctx) { const config = await Config.get() - await ctx.ask({ - permission: "task", - patterns: [params.subagent_type], - always: ["*"], - metadata: { - description: params.description, - subagent_type: params.subagent_type, - }, - }) + // Skip permission check when invoked from a command subtask (user already approved by invoking the command) + if (!ctx.extra?.bypassAgentCheck) { + await ctx.ask({ + permission: "task", + patterns: [params.subagent_type], + always: ["*"], + metadata: { + description: params.description, + subagent_type: params.subagent_type, + }, + }) + } const agent = await Agent.get(params.subagent_type) if (!agent) throw new Error(`Unknown agent type: ${params.subagent_type} is not a valid agent type`) |
