From fcf71593f5575aba733c9ca64805ec3bc87bb369 Mon Sep 17 00:00:00 2001 From: Ryan Vogel Date: Mon, 16 Feb 2026 13:35:12 -0500 Subject: [PATCH] feat(cli): add --continue and --fork flags to attach command --- packages/opencode/src/cli/cmd/tui/attach.ts | 22 ++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/cli/cmd/tui/attach.ts b/packages/opencode/src/cli/cmd/tui/attach.ts index 8b8979c831c7..a2559cfce679 100644 --- a/packages/opencode/src/cli/cmd/tui/attach.ts +++ b/packages/opencode/src/cli/cmd/tui/attach.ts @@ -1,4 +1,5 @@ import { cmd } from "../cmd" +import { UI } from "@/cli/ui" import { tui } from "./app" import { win32DisableProcessedInput, win32InstallCtrlCGuard } from "./win32" @@ -16,11 +17,20 @@ export const AttachCommand = cmd({ type: "string", description: "directory to run in", }) + .option("continue", { + alias: ["c"], + describe: "continue the last session", + type: "boolean", + }) .option("session", { alias: ["s"], type: "string", describe: "session id to continue", }) + .option("fork", { + type: "boolean", + describe: "fork the session when continuing (use with --continue or --session)", + }) .option("password", { alias: ["p"], type: "string", @@ -31,6 +41,12 @@ export const AttachCommand = cmd({ try { win32DisableProcessedInput() + if (args.fork && !args.continue && !args.session) { + UI.error("--fork requires --continue or --session") + process.exitCode = 1 + return + } + const directory = (() => { if (!args.dir) return undefined try { @@ -49,7 +65,11 @@ export const AttachCommand = cmd({ })() await tui({ url: args.url, - args: { sessionID: args.session }, + args: { + continue: args.continue, + sessionID: args.session, + fork: args.fork, + }, directory, headers, })