diff options
| author | Andrea Alberti <[email protected]> | 2026-03-03 23:30:16 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-03-03 22:30:16 +0000 |
| commit | 109ea1709bf5036fb2bc6edc847758bede5467a1 (patch) | |
| tree | 4d57a58014395cbe65c910f21adcdf52010bbe85 | |
| parent | 9a4292726875e89f3614ba70f27d4cac1c153eed (diff) | |
| download | opencode-109ea1709bf5036fb2bc6edc847758bede5467a1.tar.gz opencode-109ea1709bf5036fb2bc6edc847758bede5467a1.zip | |
fix: `run --attach` agent validation (#11812)
Co-authored-by: LukeParkerDev <[email protected]>
| -rw-r--r-- | packages/opencode/src/cli/cmd/run.ts | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/packages/opencode/src/cli/cmd/run.ts b/packages/opencode/src/cli/cmd/run.ts index f3781f1ab..61bc609bb 100644 --- a/packages/opencode/src/cli/cmd/run.ts +++ b/packages/opencode/src/cli/cmd/run.ts @@ -555,6 +555,45 @@ export const RunCommand = cmd({ // Validate agent if specified const agent = await (async () => { if (!args.agent) return undefined + + // When attaching, validate against the running server instead of local Instance state. + if (args.attach) { + const modes = await sdk.app + .agents(undefined, { throwOnError: true }) + .then((x) => x.data ?? []) + .catch(() => undefined) + + if (!modes) { + UI.println( + UI.Style.TEXT_WARNING_BOLD + "!", + UI.Style.TEXT_NORMAL, + `failed to list agents from ${args.attach}. Falling back to default agent`, + ) + return undefined + } + + const agent = modes.find((a) => a.name === args.agent) + if (!agent) { + UI.println( + UI.Style.TEXT_WARNING_BOLD + "!", + UI.Style.TEXT_NORMAL, + `agent "${args.agent}" not found. Falling back to default agent`, + ) + return undefined + } + + if (agent.mode === "subagent") { + UI.println( + UI.Style.TEXT_WARNING_BOLD + "!", + UI.Style.TEXT_NORMAL, + `agent "${args.agent}" is a subagent, not a primary agent. Falling back to default agent`, + ) + return undefined + } + + return args.agent + } + const entry = await Agent.get(args.agent) if (!entry) { UI.println( |
