[Windows] Shell commands have no console handle since v1.0.57 - breaks Clear-Host and MSAL interactive auth
- Dominant language
- Shell
- Stars
- 11.2k
- Forks
- 1.9k
- Avg merge
- 14h 16m
- Merged PRs (30d)
- 6
Description
## Describe the bug
Since upgrading from v1.0.47 to v1.0.60, the `powershell` tool launches `pwsh.exe` without a console handle attached to the process. This breaks any script that calls `Clear-Host`/`cls` or requires MSAL interactive browser authentication.
Evidence from inside a powershell tool call:
```powershell
# GetConsoleWindow() returns 0 (no console window)
Add-Type -TypeDefinition 'using System; using System.Runtime.InteropServices; public class C { [DllImport("kernel32.dll")] public static extern IntPtr GetConsoleWindow(); }'
[C]::GetConsoleWindow() # 0
[System.Console]::WindowWidth # Throws "The handle is invalid"
Clear-Host # Throws SetValueInvocationException: "The handle is invalid"
# Process has no window
[System.Diagnostics.Process]::GetCurrentProcess().MainWindowHandle # 0
```
## Affected version
```
GitHub Copilot CLI 1.0.60-0.
```
Last working version: 1.0.47 (May 13, 2026).
## Steps to reproduce the behavior
1. Launch Copilot CLI v1.0.60 on Windows
2. Ask it to run a command containing `cls` or `Clear-Host` (e.g., "run `cls; Write-Host hello`")
3. Observe exit code 1 with error:
```
SetValueInvocationException:
Line |
3 | $RawUI.CursorPosition = @{X=0;Y=0}
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Exception setting "CursorPosition": "The handle is invalid."
```
Alternatively:
1. Ask it to run any script that uses MSAL interactive auth (e.g., Azure EV2 deployment cmdlets)
2. Auth fails with:
```
Failed to get authentication information : Value cannot be null. (Parameter 'format').
```
No browser window opens for authentication.
## Expected behavior
Shell commands executed via the `powershell` tool should have a console handle attached, as they did in v1.0.47. `Clear-Host` should succeed or be a silent no-op, and MSAL should be able to open a browser for interactive authentication.
## Additional context
- Operating system: Windows 11 (10.0.26100)
- CPU architecture: x86_64
- Terminal emulator: Windows Terminal
- Shell: PowerShell 7.6.2
- The pwsh process is launched as: `pwsh.exe -NoProfile -NoLogo -NonInteractive -Command "..."`
- The Copilot shell wrapper's `finally` block checks `$?` and calls `$host.SetShouldExit(1)` on any error, making the `cls` error fatal
- Workaround: use `Start-Process pwsh -ArgumentList @("-ExecutionPolicy", "Bypass", "-Command", $cmd)` to get a real console window, but this prevents the agent from capturing stdout directly
- Possibly related: #2525
Contributor guide
Assessment
This issue has not been assessed yet.