#49562·opencode

Desktop: silent abort before window creation when sidecar utilityProcess.fork fails

Author: tsangildCreated Sep 17, 2026Updated Sep 17, 2026

Description

Desktop won't open on Windows: no window, no error, nothing in the Windows Event Log. main.log stops here every time:

[info]   sidecar connection started { version: 'v1' }
[info]   spawning sidecar { url: 'http://127.0.0.1:58427' }

No loading task finished, no server ready, and no utility.log / server.log at all. Crashpad catches a 0x80000003 abort on the main thread ~250ms in.

The sidecar's own log (~/.local/share/opencode/log/opencode.log) has entries only for the launches that worked — its first line (loading path=...config.json) never appears for a failed one. So utilityProcess.fork() is failing at process creation and the child never runs any code.

The reason nothing is shown is in app.asar:

javascript
const { listener, health } = yield* Effect.promise(
  () => spawnLocalServer(hostname, port, password, { ... }))
...
yield* Fiber.await(loadingTask)       // waits for sidecar
const windows = restoreMainWindows()  // window created only after

Effect.promise turns the rejection into an unrecoverable defect, so forwardInitializationFailure never sees it, and the window doesn't exist yet to show anything.

Two suggestions: use Effect.tryPromise so a failed spawn is a handled error, and log the rejection to main.log before dying — right now the one useful piece of information is the only thing never written anywhere.

My specific trigger was environment-dependent (shell-activated launches get a __COMPAT_LAYER=DetectorsAdminProtection compat shim, which is inherited by the forked child; 0/3 launches from Start/Search vs 23/23 from a shell). Workaround is pointing the shortcut at explorer.exe with the exe as its argument. But the trigger matters less than the handling — I suspect several existing "desktop won't start / sidecar died" reports are different causes behind this same silent abort.

Plugins

None (global config is only $schema)

OpenCode version

1.18.31 (Desktop)

Steps to reproduce

  1. Install OpenCode Desktop 1.18.31 on Windows 11.
  2. Launch it from the Start menu / Windows Search / desktop shortcut.
  3. Main process aborts ~250ms after spawning sidecar; no window is ever shown.
  4. Launching the same exe from a shell works reliably.

Step 2 is only a reliable trigger on a machine where the shell applies the compat shim. To force the general failure on any machine, make utilityProcess.fork() fail — the point is that the app dies silently rather than reporting it.

Screenshot and/or share link

n/a — no UI is ever displayed, so there is nothing to capture.

Operating System

Windows 11 Pro 25H2, build 26200.9445

Terminal

n/a (desktop app)