Repository navigation
v0.7.2
Fixed
-
Windows: killing a session now kills the CLI's whole process tree.
Previously context cancellation calledcmd.Process.Kill(), which
terminates onlyclaude.exe— its MCP servers (npx/node) and any Chromium
they spawned survived until their stdin-EOF handling exited them, or
forever if wedged.LocalExecutornow confines each spawn in an anonymous
kill-on-close job object: cancel callsTerminateJobObject(tree kill),
and the job handle is closed afterWait()returns, reaping stragglers
that outlive a clean CLI exit. Matches the unixSetpgid+kill(-pid)
behavior. If job creation or assignment fails, the executor degrades to
the old single-PID kill rather than failing the spawn. Known caveat:
assignment happens just afterStart()(os/exec has noCREATE_SUSPENDED
path), so a child forked in that instant could escape — in practice the
CLI takes far longer to start MCP servers.Upgrade note: adds a
golang.org/x/sysdependency (Windows builds only);
no API changes. -
Windows: every direct CLI spawn now suppresses its console window.
OnlyLocalExecutorset CREATE_NO_WINDOW; theAuthStatus,AuthLogin,
AuthLogout,Updateand-vprobe spawns did not, so a windowless
parent (a service, a GUI app) flashed a console on screen for each —
once per auth-status poll. -
Windows:
AuthLogin's BROWSER capture works for usernames with
spaces. The generatedbrowser.cmdredirected to an unquoted temp
path; a space in it (e.g.C:\Users\Anna Karin\...) truncated the
redirect target and silently dropped the captured callback URL. The
target is now quoted. -
Windows: npm's
claude.cmdshim is bypassed. When the resolved
binary is npm's cmd.exe shim and the layout confirms it wraps
@anthropic-ai/claude-code, the executor runs node on the wrapped
cli.jsdirectly — os/exec refuses to start batch files with arguments
cmd.exe cannot safely escape (the CVE-2024-24576 hardening), so e.g. a
WithSystemPromptcontaining%or"failed atStart()behind a
shim. The bypass also removes the cmd.exe layer from the process tree.
Falls back to running the shim when node is missing or the layout is
unconfirmed. -
Cancelling
Updateinterrupts the whole process group. On unix,
SIGINT now goes to the updater's process group (previously the single
CLI process), so npm/node children unwinding a staged download are
interrupted too. On Windows — where no console interrupt is deliverable
from a windowless parent — cancellation is an immediate job-object tree
kill instead of a loneclaude.exekill that orphaned npm children. -
AuthLoginandLoginProcess.Cancelkill the login CLI's whole
process tree (job object on Windows, process group on unix) instead of
just the CLI process.