Skip to content

Copilot CLI crashes repeatedly (native runtime), reproducible across versions, unresolved since May 2026 #4026

Open

Description

@millshre5

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 / Asusgio3 kernel 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.exe in Defender logs
  • Auto-update specifically — crashes reproduced with COPILOT_AUTO_UPDATE=false set and pinned versions

Confirmed internal mechanism:

  1. Copilot CLI resumes the most-recently-updated session for the current working directory, tracked via ~/.copilot/session-state/<uuid>/workspace.yaml.
  2. If Copilot crashes mid-tool-execution, the corresponding tool.execution_start event in that session's events.jsonl has no matching tool.execution_complete — an "orphaned" tool call.
  3. On restart, Copilot logs Completing N orphaned tool calls and attempts to replay them. This replay path is itself crash-prone and can crash again immediately (same session, same orphaned data).
  4. 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.
  5. 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/-shm and 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 Win32 FileVersion resource does not reliably reflect the running app version — after auto-update, copilot --version reported a newer version than the on-disk FileVersion metadata showed. This makes crash-log "version" fields (including Windows Event Log WER entries) potentially unreliable for pinpointing which build actually crashed.

Activity

  1. added theissue type on Jul 4, 2026
  2. added
    area:platform-windowsWindows-specific: PowerShell, cmd, Git Bash, WSL, Windows Terminal
    area:sessionsSession management, resume, history, session picker, and session state
    and removed on Jul 4, 2026
  3. randsu commented on Aug 4, 2026

    @randsu

    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:

    12:49:14.535Z [WARNING] [rust:copilot_runtime::interop::bridge_backed_seam] timed out waiting for bridge event ack {"event_kind":"event","timeout_ms":30000}
    12:51:54.590Z [INFO]    Completing 1 orphaned tool calls.
    12:53:59.317Z [WARNING] [rust:copilot_runtime::interop::bridge_backed_seam] timed out waiting for bridge event ack {"event_kind":"event","timeout_ms":30000}
    12:53:59.553Z [INFO]    SessionAgentExecutor.execute() called for "rubber-duck" (toolCallId=…)
    12:54:03.747Z [INFO]    --- End of group ---
                            <process gone>
    

    Fourteen bridge_backed_seam … timed out waiting for bridge event ack warnings occurred in that single session across one day, at a 30 s timeout each. The Completing N orphaned tool calls line 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's plan.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.

  4. randsu commented on Aug 5, 2026

    @randsu

    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:

    Subagent Launched Log ends Session lifetime after launch
    github-context-memory 13:31:14 14:02:26 survived 31 min
    task 13:32:01 14:02:26 survived 30 min
    rubber-duck 12:53:59 12:54:03 died in 4.2 s
    rubber-duck 13:14:29 13:14:30 died in 1.3 s

    Both rubber-duck launches 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_seam ack timeouts at all — its log contains only two startup GitHub MCP server configured after authentication errors, 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-duck in settings):

    Session model Subagent model Result
    claude-opus-5 gpt-5.6-sol (cross-family override) crash in 1.3–4.2 s (2/2)
    claude-opus-5 claude-opus-5 (inherit) clean, 5m35s to completion
    gpt-5.6-sol gpt-5.6-sol (inherit) clean, 33s to completion

    So the trigger is specifically a subagent carrying a cross-family model override — not the rubber-duck agent 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. inherit is 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.

  5. randsu commented on Sep 11, 2026

    @randsu

    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 0x0000000002224369 and the module timestamp are identical on copilot.exe 1.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:

    • Cross-family subagent model override (subagents.agents.<name>.model): session claude-opus-5 with the subagent overridden to gpt-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.configured in the session log confirms the override was applied in every run.
    • Mid-turn interactive -> autopilot switch with allow-all just enabled (my second trigger, distinct hashed bucket): /allow-all then /autopilot typed while a long turn was in flight, three times; /autopilot first (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, although copilot help commands still lists it), and rubber-duck is 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.exe crash record on this machine since Aug 6, across daily use of 1.0.82 and 1.0.83 since Sep 3.

  6. patniko commented on Oct 26, 2026

    @patniko
    Collaborator

    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.

  7. randsu commented on Oct 27, 2026

    @randsu

    @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 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:platform-windowsWindows-specific: PowerShell, cmd, Git Bash, WSL, Windows Terminalarea:sessionsSession management, resume, history, session picker, and session statemore-info-needed

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions