From e1f06de263603be327a1bee1137c017387f304d5 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sat, 21 Mar 2026 09:54:29 -0400 Subject: [PATCH 1/2] fix(core): restore SIGHUP exit handler (#16057) This restores the SIGHUP handler that was previously reverted. The handler ensures the process exits on terminal hangup (eg. closing the terminal tab), preventing long-running commands like `serve` from becoming orphaned processes. --- packages/opencode/src/index.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/opencode/src/index.ts b/packages/opencode/src/index.ts index b3d1db7eb0cb..fe7fd63ef12a 100644 --- a/packages/opencode/src/index.ts +++ b/packages/opencode/src/index.ts @@ -47,6 +47,11 @@ process.on("uncaughtException", (e) => { }) }) +// Ensure the process exits on terminal hangup (eg. closing the terminal tab). +// Without this, long-running commands like `serve` block on a never-resolving +// promise and survive as orphaned processes. +process.on("SIGHUP", () => process.exit()) + let cli = yargs(hideBin(process.argv)) .parserConfiguration({ "populate--": true }) .scriptName("opencode") From 9f1f62594d8fab105ff5c3287d36da76c152e109 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sat, 21 Mar 2026 12:17:22 -0400 Subject: [PATCH 2/2] fix(core): move SIGHUP handler into exit context for proper cleanup --- packages/opencode/src/cli/cmd/tui/context/exit.tsx | 1 + packages/opencode/src/index.ts | 5 ----- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/opencode/src/cli/cmd/tui/context/exit.tsx b/packages/opencode/src/cli/cmd/tui/context/exit.tsx index 3ed4ae3d2cd0..236320cf06d3 100644 --- a/packages/opencode/src/cli/cmd/tui/context/exit.tsx +++ b/packages/opencode/src/cli/cmd/tui/context/exit.tsx @@ -53,6 +53,7 @@ export const { use: useExit, provider: ExitProvider } = createSimpleContext({ message: store, }, ) + process.on("SIGHUP", () => exit()) return exit }, }) diff --git a/packages/opencode/src/index.ts b/packages/opencode/src/index.ts index fe7fd63ef12a..b3d1db7eb0cb 100644 --- a/packages/opencode/src/index.ts +++ b/packages/opencode/src/index.ts @@ -47,11 +47,6 @@ process.on("uncaughtException", (e) => { }) }) -// Ensure the process exits on terminal hangup (eg. closing the terminal tab). -// Without this, long-running commands like `serve` block on a never-resolving -// promise and survive as orphaned processes. -process.on("SIGHUP", () => process.exit()) - let cli = yargs(hideBin(process.argv)) .parserConfiguration({ "populate--": true }) .scriptName("opencode")