github / github/copilot-cli

[Windows] Shell commands have no console handle since v1.0.57 - breaks Clear-Host and MSAL interactive auth

Ouverte
#3,683 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
area:platform-windows area:tools
Langage dominant
Shell
Étoiles
11.2k
Forks
1.9k
Merge moyen
14 h 16 min
PR mergées (30 j)
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

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.