summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAiden Cline <[email protected]>2026-01-06 17:05:09 -0600
committerAiden Cline <[email protected]>2026-01-06 17:05:20 -0600
commit625c9dae5c7c10d075a547cb5a8828b838b4db25 (patch)
treedce928024d343b84abd32bc7e533f154349332c8
parentb2341c2d9a4b34d96181003deedee3daafa16d94 (diff)
downloadopencode-625c9dae5c7c10d075a547cb5a8828b838b4db25.tar.gz
opencode-625c9dae5c7c10d075a547cb5a8828b838b4db25.zip
fix: ensure commands listing subagent work
-rw-r--r--packages/opencode/src/session/prompt.ts1
-rw-r--r--packages/opencode/src/tool/task.ts21
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`)