From 9d5abc6354607a47a23c1603a2c6527937986d53 Mon Sep 17 00:00:00 2001 From: Ayush Ojha Date: Fri, 30 Jan 2026 05:15:33 -0800 Subject: [PATCH] fix: use shell mode on Windows for command spawning On Windows, spawn("npm", [...]) fails with ENOENT because Windows requires .cmd/.exe extensions or shell-based PATH resolution. Adding shell: true on Windows enables proper PATH lookup for npm and other commands spawned via runCommandWithTimeout. Fixes #4557 Co-Authored-By: Ayush Ojha --- src/process/exec.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/process/exec.ts b/src/process/exec.ts index 44f8b2ce0..d8b4f48de 100644 --- a/src/process/exec.ts +++ b/src/process/exec.ts @@ -80,11 +80,13 @@ export async function runCommandWithTimeout( } const stdio = resolveCommandStdio({ hasInput, preferInherit: true }); + const isWindows = process.platform === "win32"; const child = spawn(argv[0], argv.slice(1), { stdio, cwd, env: resolvedEnv, windowsVerbatimArguments, + shell: isWindows, }); // Spawn with inherited stdin (TTY) so tools like `pi` stay interactive when needed. return await new Promise((resolve, reject) => {