TL;DR: Running Copilot CLI inside Ghostty kills the terminal within seconds, five out of five attempts, taking every tab and every child process with it. The exact same command in Terminal.app on the same machine works fine. Copilot's own logs show no panic and no OOM, so the terminal is what dies, but Copilot is a reliable trigger and right now it is unusable in Ghostty.
Environment
- GitHub Copilot CLI 1.0.86,
npm install -g @github/copilot
- Ghostty 1.3.1 (crashes) vs Terminal.app (fine)
- macOS 26.6.1 (25G76), arm64
- TERM=xterm-ghostty, zsh, Node v24.14.0 system / v24.20.0 bundled
Steps to reproduce
- Install and authenticate
- Open Ghostty
- Run any prompt,
copilot -p "..." or interactive
- Ghostty terminates within a few seconds
Expected: the prompt runs, or fails cleanly.
Actual: the terminal emulator dies and takes the shell, the CLI, and every other tab with it. Work in unrelated tabs is lost.
Control: identical steps in Terminal.app, same machine, same version, same MCP servers, same shell. No crash. That is the part that makes this worth your time even though the fatal fault is on the terminal side.
What the logs show
Copilot looks healthy right up to the end. No panic, no OOM, no abort. The only error:
[ERROR] [shutdown] Failed dispose: PromptMode.stdout (3ms): Error: write EPIPE
Reader gone, so the terminal died first. Child processes exit 137.
Hypothesis I tested and ruled out
Ghostty has an open segfault on terminal reset after displaying an image (ghostty-org/ghostty#5649), and your built in MCP server is the only one of my four advertising base64 PNG icons:
server_info: Implementation { name: "github-mcp-server", ...
icons: Some([Icon { src: "data:image/png;base64,...", mime_type: Some("image/png") }, ...]) }
My three other MCP servers all report icons: None. So I set Ghostty's image-storage-limit = 0, verified it was live in a freshly launched window, and it still crashed. The image path is not the cause. Recording it so nobody repeats the experiment.
Mechanism: unknown. Something in how the CLI drives the terminal takes Ghostty down and does not affect Terminal.app. I have not narrowed it further.
Why it is worth looking at on your side
- Five for five, from a clean install, with no third party configuration required
- Ghostty is widely used and the failure is total, not cosmetic. The process dies and unrelated work is lost
- There is already a known rough edge between these two (ghostty-org/ghostty discussion #9264, Enter key not registering in your interactive prompts), so the pairing has form
- Even if the fix belongs to Ghostty, a capability check or a quieter fallback on your side would unblock users now rather than after a Ghostty release
Happy to run an instrumented build, capture raw output to a file, or grab a spindump.
TL;DR: Running Copilot CLI inside Ghostty kills the terminal within seconds, five out of five attempts, taking every tab and every child process with it. The exact same command in Terminal.app on the same machine works fine. Copilot's own logs show no panic and no OOM, so the terminal is what dies, but Copilot is a reliable trigger and right now it is unusable in Ghostty.
Environment
npm install -g @github/copilotSteps to reproduce
copilot -p "..."or interactiveExpected: the prompt runs, or fails cleanly.
Actual: the terminal emulator dies and takes the shell, the CLI, and every other tab with it. Work in unrelated tabs is lost.
Control: identical steps in Terminal.app, same machine, same version, same MCP servers, same shell. No crash. That is the part that makes this worth your time even though the fatal fault is on the terminal side.
What the logs show
Copilot looks healthy right up to the end. No panic, no OOM, no abort. The only error:
Reader gone, so the terminal died first. Child processes exit 137.
Hypothesis I tested and ruled out
Ghostty has an open segfault on terminal reset after displaying an image (ghostty-org/ghostty#5649), and your built in MCP server is the only one of my four advertising base64 PNG icons:
My three other MCP servers all report
icons: None. So I set Ghostty'simage-storage-limit = 0, verified it was live in a freshly launched window, and it still crashed. The image path is not the cause. Recording it so nobody repeats the experiment.Mechanism: unknown. Something in how the CLI drives the terminal takes Ghostty down and does not affect Terminal.app. I have not narrowed it further.
Why it is worth looking at on your side
Happy to run an instrumented build, capture raw output to a file, or grab a spindump.