feat(coding-agent): add native Windows support - #744
Conversation
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 2aa1a10. Configure here.
|
Tested this branch on real Windows hardware, since CI has no Windows runner for the suite. Environment: Windows 11 Pro 26200 (x64), Node 24.15.0, npm 11.x, Python 3.11 via uv 0.11.6, Git Bash 2.51.0. Branch Results
Manual end-to-end check: the kernel starts from the built Two things still blocking a green Windows suite1. The production path moved to These 17 also fail on 2. Every test that needs a live kernel and hits a bootstrap-version mismatch fails with: Windows refuses to unlink a running image, so the The remaining failures ( One suggestion
if (process.arch !== "x64") {
throw new Error(`Windows daemon process isolation requires x64, received ${process.arch}`);
}
Separately, I checked whether |
|
While testing the latest PR commit on Windows 11, I found one remaining visible-console issue in clipboard image handling: each |
…upport # Conflicts: # packages/coding-agent/CHANGELOG.md
|
Windows follow-up from a native Windows 11 x64 check:
|
|
I reproduced a Windows-specific gap not covered by the current native-support summary. Herdr sets I added a local adapter in |
|
Validated this branch on real Windows 11 hardware (x64, Node 24.18.0, npm 11.12.1, Git Bash at the standard path) and fixed one remaining gap on top of it: #917. On Windows, Stacked PR on your fork: WDDGDA#1. One commit: the fix, a win32 regression test (observed failing with the exact #917 signature before the fix, passing after), and a changelog bullet. Numbers from this machine: targeted Windows files 12/12; @khanra17's two smaller points check out: #763 still reproduces by construction on this branch ( |
|
The The path downstream of it is still open in both, though.
Separately, on the duplication @khanra17 raised for #763: it is wider than that one PR. This branch also reimplements the venv interpreter path (#663, #695), the directory fsync guard (#670), the lease Replacing the I have not reproduced the lease case. It needs a held handle on |
|
Hi, thanks for taking the time to contribute to Prime Agent! Since open sourcing the project, we’ve received far more pull requests than we can responsibly review and validate. Prime Agent runs directly on users’ machines, so we need to be deliberate about which changes we accept and how they are reviewed. Rather than leave a large backlog that we cannot meaningfully work through, we’re closing the current PR queue and moving to a discussion-first contribution process. We have established new contribution guidelines to help us continue iterating on Prime Agent and better manage contributions from the community. Going forward, we won’t review unsolicited pull requests. Instead, please start with a GitHub Discussion. We’ll identify recurring bugs and feature requests, create Issues for work we want to pursue, and invite pull requests from maintainers or vouched contributors when implementation is ready. Please read the full process documented in our contribution guidelines. While we’re closing this backlog, we’re still reviewing it at a high level to identify recurring bugs, useful ideas, and important problems that we should address ourselves. Thanks again for the time you put into this! |

Summary
GetProcessTimes, and add Windows CI coverage for installer, kernel, daemon, and recovery pathsProcess safety
Validation
npm ci, root build, checks, and Windows-targeted tests (89 passed, 7 platform skips)koffi@2.16.2; hard worker kill removed the Bash leaf and a replacement worker became readyBuilds on the reports and proposed fixes in #663, #664, and #670.
Closes #660
Closes #665
Closes #666
Closes #667
Closes #668
Note
High Risk
Changes authentication-adjacent daemon lifecycle, session leases, and child-process termination on Windows using memory-unsafe FFI; failures are intended to fail closed but mis-assignment or Win32 errors could block Bash or leave orphans.
Overview
Adds native Windows x64 support: a published PowerShell installer, release/CI wiring, and runtime fixes so daemon workers, the Python kernel, and Bash behave correctly on Windows.
Install & docs: New
install.ps1(channel, SHA-256, x64 Node 22.8+, Git for Windows) is rendered and uploaded beside the shell installers; README/quickstart documentirm … | iex. Rootcheck:installerrunscheck-windows-installer.mjs.koffi@2.16.2is a direct dependency for Win32 FFI.Daemon process isolation: Daemon workers create a kill-on-close Job Object and gate Bash through Git’s direct
usr\bin\bash.exeso the process is assigned to the job before descendants start; worker crash tears down that Bash tree while supervisors stay outside the job. Session lease identity on Windows usesGetProcessTimesvia Koffi instead of spawning PowerShell per PID; lease/supervisor lock renames tolerate WindowsEPERMwhen the destination already exists.Cross-platform spawn hygiene:
windowsHide: trueon spawns;signalProcessTree/taskkillfor tree kills; kernel bootstrap usesScripts\python.exeand PowerShelluvinstall on Windows; command-recovery journal skips directory fsync when unsupported.CI: New
windows-latestjob (installer check, Windows-targeted vitest, kernel bootstrap + import smoke) gatesbuild-check-test.Reviewed by Cursor Bugbot for commit 0ef7b8e. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Add native Windows support with PowerShell installer, Job Object isolation, and hidden console windows
koffito bind Win32 Job Object APIs, enabling reliable process-tree termination for daemon workers on Windows.windowsHide: trueto allspawn/spawnSynccalls across the codebase so no console windows appear on Windows.venvPythonto useScripts/python.exeon Windows and updatesensureUvto invoke the PowerShell-based uv installer instead ofsh.EPERMon rename (when destination exists) as contention rather than throwing, matching Windows filesystem semantics.gitForWindowsRoot,getDirectWindowsBashPath,getWindowsGitBashLauncherPath) and probesLOCALAPPDATA\Programs\Gitfor bash detection.koffiis added as a runtime dependency; Windows-specific paths (Job Objects, named pipes, junction symlinks) are active only onwin32.Macroscope summarized b9581b3.