# v2.1.0-alpha.0 — Windows-safe agent spawn Opens the v2.1 "Reliability & secret safety" line with a real Windows execution fix. ## Fixed - **Windows agent spawn reliability.** Spawning an agent CLI by name failed on Windows for npm-global installs: Node's `shell:false` lookup only auto-appends `.exe` (not `.cmd`/`.bat`), and since CVE-2024-27980 a `.cmd` cannot run without a shell (EINVAL) while `shell:true` does not escape arguments (DEP0190 → injection). The result was `doctor` mis-reporting `codex`/`claude` as missing and `run`/`handoff`/`login` failing to launch the next agent. ## How - New `safeSpawn` / `safeSpawnSync` core wrapper (over `cross-spawn`) resolves PATHEXT shims and routes `.cmd`/`.bat` through `cmd.exe` with **escaped** arguments and `shell:false`. - Every agent spawn now goes through it: `AgentRunner`, all five adapters (Codex/Claude/Gemini/Aider/OpenCode), `doctor`, `login`, and the TUI. - Verified by test: resolves a `.cmd` on PATH and blocks argument injection. ## Notes - macOS/Linux behavior is unchanged. Git invocations still use the standard child_process path (git ships as a native executable). ## Next in v2.1 - Redact secrets before the handoff/continuation prompt (not just on bundle). - Secret-leak regression scan + `--allow-api-key-env` audit event.