-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Description
Describe the bug
Issue #411 was closed as "not_planned" in Oct 2025, but the bug is still present and getting worse — it now blocks the CLI from running any shell command at all on Windows machines that ship only with Windows PowerShell 5.1 (powershell.exe).
The error on every single command:
<exited with error: PowerShell 6+ (pwsh) is not available. Please install it from https://aka.ms/powershell (https://aka.ms/powershell). Error: Error: Command failed: pwsh.exe --version 'pwsh.exe' is not recognized as an internal or external command, operable program or file.
Affected version
0.0.417 (also reproducible on 0.0.415, 0.0.414 — any recent version)
Root cause (with exact locations in index.js)
pwsh.exe is hardcoded in 6 places in ~/.copilot/pkg/universal/{version}/index.js.
All 6 must be changed to powershell.exe for the CLI to work on Windows PowerShell 5.1:
| # | Pattern | Location |
|---|---|---|
| 1 | process.platform==="win32"?"pwsh.exe":"pwsh" |
Shell type detection |
(xds function) |
||
| 2 | l?"pwsh.exe":"bash" |
PTY spawn (class constructor) |
| 3 | Start-Process -FilePath "pwsh.exe" |
|
tryExecuteDetachedCommandWindows (inner PS command) |
||
| 4 | ths("pwsh.exe",["-NoProfile","-Command",I] |
|
tryExecuteDetachedCommandWindows (outer spawn) |
||
| 5 | "pwsh.exe --version" |
ensureShellIsSupported version check |
| 6 | (one remaining — likely in installer/zip extraction path) | TBD |
Proposed fix
Use powershell.exe as the fallback when pwsh.exe is not found:
// Before
process.platform === "win32" ? "pwsh.exe" : "pwsh"
// After — detect what's available
process.platform === "win32" ? (hasExe("pwsh.exe") ? "pwsh.exe" :
"powershell.exe") : "pwsh"
Or simpler: just use powershell.exe (works on both PS 5.1 and PS 7+, both ship
it).
Why "not_planned" is the wrong call
- Windows 11 ships only with powershell.exe by default. No pwsh.
- powershell.exe is available on every Windows machine going back to Windows 7.
- The CLI already works perfectly once patched — there is no functional dependency on PS 6+.
- This blocks 100% of Windows users on default installs from using the CLI at all.
- Related open issue: #1086
Workaround (until fixed)
Patch ~/.copilot/pkg/universal/{version}/index.js — replace all pwsh.exe → powershell.exe.
Must be re-applied after each winget upgrade GitHub.Copilot.