diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index 9270d5b5..c8eeb577 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -1445,7 +1445,7 @@ export namespace SessionPrompt { })() const agent = await Agent.get(agentName) - if (agent.mode === "subagent" || command.subtask) { + if ((agent.mode === "subagent" && command.subtask !== false) || command.subtask === true) { using abort = lock(input.sessionID) const userMsg: MessageV2.User = { diff --git a/packages/web/src/content/docs/commands.mdx b/packages/web/src/content/docs/commands.mdx index 8653e26c..1e6aa951 100644 --- a/packages/web/src/content/docs/commands.mdx +++ b/packages/web/src/content/docs/commands.mdx @@ -227,6 +227,8 @@ This is shown as the description in the TUI when you type in the command. ### Agent Use the `agent` config to optionally specify which [agent](/docs/agents) should execute this command. +If this is a [subagent](/docs/agents/#subagents) the command will trigger a subagent invocation by default. +To disable this behavior, set `subtask` to `false`. ```json title="opencode.json" { @@ -238,7 +240,26 @@ Use the `agent` config to optionally specify which [agent](/docs/agents) should } ``` -This is an **optional** config option. If not specified, defaults to "build". +This is an **optional** config option. If not specified, defaults to your current agent. + +--- + +### Subtask + +Use the `subtask` boolean to force the command to trigger a [subagent](/docs/agents/#subagents) invocation. +This useful if you want the command to not pollute your primary context. + +```json title="opencode.json" +{ + "command": { + "analyze": { + "subtask": true + } + } +} +``` + +This is an **optional** config option. ---