github / github/copilot-cli

Copilot CLI terminal freezes when a stdio MCP child crashes mid-call

Open
#3,067 1 comment 0 reactions 0 assignees View on GitHub
area:input-keyboard area:mcp area:platform-windows
Dominant language
Shell
Stars
11.2k
Forks
1.9k
Avg merge
14h 16m
Merged PRs (30d)
6

Description

# Bug: Copilot CLI terminal freezes when a stdio MCP child crashes mid-call

## What happens

When a stdio MCP child process crashes during an in-flight tool call, the **host Copilot CLI terminal becomes fully unresponsive** — keystrokes, mouse, and **Ctrl+C are all ignored**. Only force-closing the Windows Terminal tab or killing `pwsh.exe` recovers it. Reproduced twice in a row on Windows 11; affected tabs stay frozen indefinitely.

## Repro

A reliable trigger today is the WorkIQ MCP server, which has a deterministic `msalruntime.DLL` crash during concurrent token-refresh ([microsoft/work-iq#113](https://github.com/microsoft/work-iq/issues/113)):

1. `/plugin install workiq@work-iq`
2. Authenticate, then issue several `workiq-ask_work_iq` calls in parallel.
3. The WorkIQ child crashes (visible as `Application Error` in the Windows event log: `workiq.exe`, `msalruntime.DLL`, exception `0xc000027b`).
4. The Copilot CLI terminal hangs — no input accepted, including Ctrl+C.

## Why it matters

A misbehaving plugin should never be able to take the host CLI hostage. **Ctrl+C must always cancel the in-flight tool call** and return control to the prompt, regardless of child-process state.

## Likely cause

Host appears to do a blocking read on the child's stdout for a JSON-RPC response, and never notices process death / EOF. Concurrent calls compound the issue — multiple in-flight requests all become unresolvable after a single child crash.

## Environment

- Copilot CLI 1.0.40-3, Node v24.14.1
- Windows 11 + Windows Terminal + PowerShell 7
- Repro MCP: `@microsoft/workiq` 0.4.1.19742 (stdio, via npx)

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the freeze with the WorkIQ stdio MCP server and parallel tool calls, then inspect the Copilot CLI's stdio child-call handling around process exit, EOF, and Ctrl+C. Done means a crashed child returns control to the prompt, Ctrl+C cancels the in-flight call, and concurrent requests do not leave the terminal unresponsive.

Written by the indexing model from the issue text.

Assessment

Tech stack
node.js, powershell, shell
Domain
cli
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.