Repository navigation
Copilot CLI crashes repeatedly (native runtime), reproducible across versions, unresolved since May 2026 #4026
Description
Describe the bug
Summary
GitHub Copilot CLI crashes frequently and unpredictably during normal interactive use (not on any single reproducible action) on Windows. This has been happening continuously since at least 2026-05-24, across at least four versions (v1.0.15, v1.0.52, v1.0.53, v1.0.54 in May, and v1.0.65, v1.0.67, v1.0.68 confirmed again today, 2026-07-03). Downgrading/upgrading versions does not help — the crash offsets are frequently identical across different versions, which strongly suggests the bug lives in a shared native runtime component (Node/V8 embed) that isn't being rebuilt between releases, rather than in app-level JS code.
Frequency / Impact
- 30+ crashes observed in a single ~3.5 hour window today (2026-07-03, 4:26 PM–6:59 PM) during normal interactive use (chat, running shell commands via the CLI's tool-use).
- A prior investigation on 2026-05-24 logged 30+ crashes in a single day as well, with the same recurring fault offsets.
- Crashes happen often enough that the CLI is frequently unusable for any extended session.
Reproducible crash signatures (Application Event Log, Event ID 1000, copilot.exe faulting)
Recurring fault offsets seen on both 2026-05-24 and 2026-07-03, across different versions:
| Fault offset | Exception code | Meaning | Seen on |
|---|---|---|---|
0x016cb792 |
0x80000003 (BREAKPOINT) |
Hard assertion / V8 DCHECK firing | v1.0.15, v1.0.52 (May); v1.0.65, v1.0.67, v1.0.68 (July) |
0xa8f440 / 0xa8f43c |
0xc0000005 (Access Violation) |
Same code path, adjacent offsets | Both May and July, multiple versions |
0xdcd04e |
0xc0000005 (Access Violation) |
Same code path | Both May and July |
New signature observed only in the July session (not seen in May):
| Fault offset | Exception code | Meaning |
|---|---|---|
0x0000000002224369 |
0xc0000409 (STATUS_STACK_BUFFER_OVERRUN) |
Stack cookie/canary violation — recurred 5+ times in one afternoon |
One crash faulted directly in runtime.node (the embedded Node runtime DLL) rather than copilot.exe itself:
Faulting module name: runtime.node, version: 0.0.0.0, time stamp: 0x6a457f2d
Exception code: 0xc0000005
Fault offset: 0x0000000001e211b4
Notably, copilot.exe reports the identical module timestamp 0x6a0e5564 across v1.0.65, v1.0.67, and v1.0.68 — suggesting these releases share an unchanged native runtime binary/build.
Underlying mechanism (from prior investigation)
A detailed investigation on 2026-05-24 (log available on request, ~780 lines) ruled out several external causes before landing on an internal mechanism:
Ruled out:
- ASUS Armoury Crate /
IOMap64.sys/Asusgio3kernel drivers — crashes continued identically after fully disabling all ASUS services/drivers and a clean reboot (first crash occurred <2 minutes after a driver-free boot) - Windows Defender — no blocks/detections against
copilot.exein Defender logs - Auto-update specifically — crashes reproduced with
COPILOT_AUTO_UPDATE=falseset and pinned versions
Confirmed internal mechanism:
- Copilot CLI resumes the most-recently-updated session for the current working directory, tracked via
~/.copilot/session-state/<uuid>/workspace.yaml. - If Copilot crashes mid-tool-execution, the corresponding
tool.execution_startevent in that session'sevents.jsonlhas no matchingtool.execution_complete— an "orphaned" tool call. - On restart, Copilot logs
Completing N orphaned tool callsand attempts to replay them. This replay path is itself crash-prone and can crash again immediately (same session, same orphaned data). - Each crash cycle can add tokens/state without the session ever cleanly compacting, and a separate crash mode was observed specifically when context utilization approaches the ~80% compaction threshold with a session in this state.
- This produces a self-reinforcing crash loop: crash → orphaned tool call → resume → replay → crash → repeat. One session accumulated 55+ orphaned tool calls and 76+ new session directories were created for a single working directory in one day as a result.
Additionally, a crash mode was observed today where the session log simply ends after assistant.turn_start with no further events — i.e., the crash occurs while a request to the model is in flight / being processed, before any tool call or response is recorded. This looks related to the Promise::MarkAsSilent / MultiIsolatePlatform::DisposeIsolate V8 fatal error also captured in a separate crash (see below), suggesting a promise-handling bug in the async request/response plumbing.
A separate captured crash (full V8 fatal-error text, not just Event Log offset)
#
# Fatal error in , line 0
# unreachable code
#
#FailureMessage Object: 0000006F161FD220
----- Native stack trace -----
1: node::MultiIsolatePlatform::DisposeIsolate+5341
2: V8_Fatal+287
3: v8::Promise::MarkAsSilent+700340
4: v8::Promise::MarkAsSilent+732099
5: v8::Promise::MarkAsSilent+653515
... (extended v8::Promise::MarkAsSilent chain) ...
17: EVP_MD_CTX_set_update_fn+270399
18: EVP_MD_CTX_set_update_fn+231768
19: EVP_MD_CTX_set_update_fn+229757
20: EVP_MD_CTX_set_update_fn+232476
21: v8::String::Value::~Value+173003
This crash reproduced identically (same relative stack, same symbol offsets from these exported symbols) on both v1.0.68 and v1.0.67, triggered simply by running copilot --version while an update/network check was in flight. The presence of OpenSSL frames (EVP_MD_CTX_set_update_fn) alongside heavy Promise::MarkAsSilent recursion suggests a crash during TLS-related async/promise handling — plausibly the same underlying defect as the mid-turn crashes described above, since both involve promise lifecycle handling around network I/O.
Minidumps available
Windows generated local minidumps for many of today's crashes (%LOCALAPPDATA%\CrashDumps\copilot.exe.<pid>.dmp, ~1.5–3.6 MB each). I have not attached them here since process memory dumps can contain auth tokens / conversation content, but I'm happy to share one or more privately (e.g. via a private support channel) if that would help get symbolized stack traces.
What I've already tried (none resolved it)
- Downgrading across many versions (1.0.15 through 1.0.68) — same offsets recur regardless of version
- Fully disabling/removing ASUS Armoury Crate, ROG Live Service, and related kernel drivers, with clean reboots
- Disabling auto-update (
COPILOT_AUTO_UPDATE=false) and pinning the winget package - Renaming corrupted
session-store.db-wal/-shmand individual crashed session-state directories to break active crash loops (works as a temporary unstick, not a fix)
Affected version
1.0.15, 1.0.52, 1.0.53, 1.0.54, 1.0.65, 1.0.67, 1.0.68
Steps to reproduce the behavior
Steps to reproduce
There is no single reliable repro — this happens intermittently during normal interactive use (chat + shell tool calls), roughly every 5–20 minutes of active use in the sessions observed. It is not tied to any specific command, prompt, or working directory.
Expected behavior
Ask
- Is this a known/tracked issue? The recurring identical offsets across releases suggest it should be reproducible on GitHub's end with a debug build or with the attached-on-request minidumps.
- Any guidance on capturing more actionable diagnostics (e.g., a debug/symboled build, or an env var to get full V8
--trace-*output) would be appreciated.
Additional context
Environment
- OS: Windows 11 Home 10.0.26200
- Install method: winget (
GitHub.Copilot) - Install path:
C:\Users\<user>\AppData\Local\Microsoft\WinGet\Packages\GitHub.Copilot_Microsoft.Winget.Source_8wekyb3d8bbwe\copilot.exe - Versions reproduced on: 1.0.15, 1.0.52, 1.0.53, 1.0.54, 1.0.65, 1.0.67, 1.0.68
- Note:
copilot.exe's Win32FileVersionresource does not reliably reflect the running app version — after auto-update,copilot --versionreported a newer version than the on-diskFileVersionmetadata showed. This makes crash-log "version" fields (including Windows Event Log WER entries) potentially unreliable for pinpointing which build actually crashed.
Activity
randsu commentedon Aug 4, 2026
Adding a data point from Windows 11 / CLI 1.0.78, in case the signature is useful.
The crash here is consistently preceded by bridge-ack timeouts from the native runtime, and the fatal one landed in the same second as a subagent launch:
Fourteen
bridge_backed_seam … timed out waiting for bridge event ackwarnings occurred in that single session across one day, at a 30 s timeout each. TheCompleting N orphaned tool callsline appearing ~2 minutes before the fatal exit matches the orphaned-call replay loop described in this issue — the session was already carrying orphans when it died.If the bridge ack timeout is on the path to the native fault, it may be a more tractable signal to instrument than the crash itself, since it is logged at WARNING well before the process goes down. Possibly related to #2543, given the subagent correlation.
One caution worth adding for anyone applying the workaround in this thread: renaming
~/.copilot/session-state/<uuid>/to break the crash loop also discards that session'splan.md, which lives in the same directory. Copy it out first.Environment: Windows 11 Enterprise build 10.0.26200, x86_64, Windows Terminal, PowerShell 7.6.4, Node v24.18.1,
autoUpdate: false,mouse: false.randsu commentedon Aug 5, 2026
Correcting my earlier comment — I over-weighted the bridge-ack timeouts. A second crash today lets me isolate the trigger, and it is much more specific.
Across all my session logs, correlating every
SessionAgentExecutor.execute()against when the log stops:github-context-memorytaskrubber-duckrubber-duckBoth
rubber-ducklaunches killed the process within seconds. Two other subagent types ran in the same environment and the session stayed up for half an hour.Critically, the second crash had no
bridge_backed_seamack timeouts at all — its log contains only two startupGitHub MCP server configured after authenticationerrors, then the rubber-duck launch, then the process is gone 1.35 s later. So the bridge timeouts in my first comment were incidental to that session rather than on the crash path. Apologies for the noise.The confound is now resolved with a full matrix on the same machine and CLI version (subagent model pinned via
subagents.agents.rubber-duckin settings):claude-opus-5gpt-5.6-sol(cross-family override)claude-opus-5claude-opus-5(inherit)gpt-5.6-solgpt-5.6-sol(inherit)So the trigger is specifically a subagent carrying a cross-family model override — not the
rubber-duckagent type, not the session's model family, and not subagent execution per se. The crash is in whatever path handles non-session-family model selection for subagent execution.inheritis a complete workaround in both directions.Given the subagent correlation this may belong with #2543 rather than here — happy for it to be moved.
Environment: Windows 11 Enterprise build 10.0.26200, x86_64, Windows Terminal, PowerShell 7.6.4, Node v24.18.1, CLI 1.0.78,
autoUpdate: false,mouse: false.randsu commentedon Sep 11, 2026
Two data points for the parent thread, following up on my August crash matrix.
1. The native fault site did not move between releases. From the Windows Error Reporting records of the crashes I reported on Aug 3 and Aug 5: the fault offset
0x0000000002224369and the module timestamp are identical oncopilot.exe1.0.77.0 and 1.0.78.0, two shipped builds two days apart. That points at a shared native component rather than the JS bundle. (GitHub Support, who have the sanitized WER records and process logs from my ticket, noted the same and asked me to quote it here.)2. Retest on 1.0.83: neither of my isolated triggers reproduces any more. Windows 11 Enterprise 10.0.26200, x64, Windows Terminal, interactive sessions driven through a scripted ConPTY so the timing is exact:
subagents.agents.<name>.model): sessionclaude-opus-5with the subagent overridden togpt-5.6-sol, twice; the reverse direction;claude-fable-5.1->gpt-6-astra; the same with experimental features on; and two cross-family subagents launched in parallel 3 ms apart. 6/6 clean. On 1.0.78 the identical override fail-fasted (0xc0000409) within 1.3-4.2 s, 2/2.subagent.configuredin the session log confirms the override was applied in every run./allow-allthen/autopilottyped while a long turn was in flight, three times;/autopilotfirst (the CLI enables allow-all itself 0.36 s before the mode change, exactly the pair in my Aug 6 log); and autopilot -> interactive mid-turn. 5/5 clean, every session kept working for minutes afterwards.Side observation:
/rubber-duck, the command that carried the August subagent crashes, is no longer registered in 1.0.83 on this account (Unknown command, in both Claude and GPT sessions, althoughcopilot help commandsstill lists it), andrubber-duckis absent from the task tool's agent list. If that path was removed or gated on purpose it may be the actual fix for the subagent trigger.No
copilot.execrash record on this machine since Aug 6, across daily use of 1.0.82 and 1.0.83 since Sep 3.patniko commentedon Oct 26, 2026
Thanks for the report. We've shipped fixes in this area since this was filed, and we believe this may now be resolved. Could you retest on the latest release (Copilot CLI v1.0.103) and let us know whether you still see it? If we don't hear back in a couple of weeks, we may close this issue — you can always reopen it.
Triaged as part of a Copilot SDK backlog review, with help from GitHub Copilot.
randsu commentedon Oct 27, 2026
@patniko Following up on the Sep 11 retest, which was already on 1.0.83 and came back clean for both of my isolated triggers (cross-family subagent model override and mid-turn interactive to autopilot switch with allow-all).
Since then I have used the CLI daily on Windows 11 Enterprise 10.0.26300, x64, through 1.0.93 and now 1.0.104, 42 interactive sessions since Sep 11 and 30 in October.
There is no copilot.exe crash record in Windows Error Reporting on my machine since Aug 6 and no minidump since then.
The only WER entries for copilot.exe in the last 60 days are two RADAR_PRE_LEAK_64 memory-leak reports on 1.0.83 and 1.0.93, not crashes.
From my side the native crash family reported here is resolved and I have no objection to closing 👍