From 5826a605506f0c7c6e2089ffcc79b71e08e943c8 Mon Sep 17 00:00:00 2001 From: Ariane Emory Date: Sat, 14 Feb 2026 03:02:26 -0500 Subject: [PATCH 1/5] feat(cli): add session delete command Add `opencode session delete ` command to allow deleting sessions from the CLI. The command uses the existing Session.remove() function which handles recursive deletion of child sessions, messages, parts, and share links. --- packages/opencode/src/cli/cmd/session.ts | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/cli/cmd/session.ts b/packages/opencode/src/cli/cmd/session.ts index c6a1fd4138f2..3f6c6438e1bd 100644 --- a/packages/opencode/src/cli/cmd/session.ts +++ b/packages/opencode/src/cli/cmd/session.ts @@ -38,10 +38,28 @@ function pagerCmd(): string[] { export const SessionCommand = cmd({ command: "session", describe: "manage sessions", - builder: (yargs: Argv) => yargs.command(SessionListCommand).demandCommand(), + builder: (yargs: Argv) => yargs.command(SessionListCommand).command(SessionDeleteCommand).demandCommand(), async handler() {}, }) +export const SessionDeleteCommand = cmd({ + command: "delete ", + describe: "delete a session", + builder: (yargs: Argv) => { + return yargs.positional("sessionID", { + describe: "session ID to delete", + type: "string", + demandOption: true, + }) + }, + handler: async (args) => { + await bootstrap(process.cwd(), async () => { + await Session.remove(args.sessionID) + console.log(`Session ${args.sessionID} deleted`) + }) + }, +}) + export const SessionListCommand = cmd({ command: "list", describe: "list sessions", From d7e0c4f42d4d268b56184c14ad7fb7e37a2379b9 Mon Sep 17 00:00:00 2001 From: Ariane Emory Date: Sat, 14 Feb 2026 03:21:35 -0500 Subject: [PATCH 2/5] docs: add session delete to CLI documentation --- .opencode/agent/translator.md | 1 + 1 file changed, 1 insertion(+) diff --git a/.opencode/agent/translator.md b/.opencode/agent/translator.md index dec6fa6c4fc3..ad209a90c2c2 100644 --- a/.opencode/agent/translator.md +++ b/.opencode/agent/translator.md @@ -359,6 +359,7 @@ opencode serve --hostname 0.0.0.0 --port 4096 opencode serve [--port ] [--hostname ] [--cors ] opencode session [command] opencode session list +opencode session delete opencode stats opencode uninstall opencode upgrade From 96eecf19b22a750536914c7dc8a9a4d67080c224 Mon Sep 17 00:00:00 2001 From: Ariane Emory Date: Sat, 14 Feb 2026 03:45:23 -0500 Subject: [PATCH 3/5] fix(cli): handle non-existent session in delete command Print error message and exit with code 1 when session not found --- packages/opencode/src/cli/cmd/session.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/opencode/src/cli/cmd/session.ts b/packages/opencode/src/cli/cmd/session.ts index 3f6c6438e1bd..eab0449f0fc2 100644 --- a/packages/opencode/src/cli/cmd/session.ts +++ b/packages/opencode/src/cli/cmd/session.ts @@ -54,6 +54,12 @@ export const SessionDeleteCommand = cmd({ }, handler: async (args) => { await bootstrap(process.cwd(), async () => { + try { + await Session.get(args.sessionID) + } catch { + console.error(`Session not found: ${args.sessionID}`) + process.exit(1) + } await Session.remove(args.sessionID) console.log(`Session ${args.sessionID} deleted`) }) From 30d042a4de81fde35eff508de5d19c9fe9ad7863 Mon Sep 17 00:00:00 2001 From: Ariane Emory Date: Mon, 16 Feb 2026 15:00:05 -0500 Subject: [PATCH 4/5] fix(cli): use UI.error() instead of console.error() for consistency --- packages/opencode/src/cli/cmd/session.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/opencode/src/cli/cmd/session.ts b/packages/opencode/src/cli/cmd/session.ts index eab0449f0fc2..2cf5e7801c12 100644 --- a/packages/opencode/src/cli/cmd/session.ts +++ b/packages/opencode/src/cli/cmd/session.ts @@ -57,7 +57,7 @@ export const SessionDeleteCommand = cmd({ try { await Session.get(args.sessionID) } catch { - console.error(`Session not found: ${args.sessionID}`) + UI.error(`Session not found: ${args.sessionID}`) process.exit(1) } await Session.remove(args.sessionID) From 1cc0e46825d4e92f0ce8d210d2ac4f6b12734aed Mon Sep 17 00:00:00 2001 From: Ariane Emory Date: Mon, 16 Feb 2026 15:05:49 -0500 Subject: [PATCH 5/5] fix(cli): use UI.println() with success style for delete confirmation --- packages/opencode/src/cli/cmd/session.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/opencode/src/cli/cmd/session.ts b/packages/opencode/src/cli/cmd/session.ts index 2cf5e7801c12..1803f849522c 100644 --- a/packages/opencode/src/cli/cmd/session.ts +++ b/packages/opencode/src/cli/cmd/session.ts @@ -61,7 +61,7 @@ export const SessionDeleteCommand = cmd({ process.exit(1) } await Session.remove(args.sessionID) - console.log(`Session ${args.sessionID} deleted`) + UI.println(UI.Style.TEXT_SUCCESS_BOLD + `Session ${args.sessionID} deleted` + UI.Style.TEXT_NORMAL) }) }, })