[BUG] Anti-cheat driver crashes bundled Bun runtime; surfaced only as "process exited with code 3"

Open 💬 2 comments Opened Jul 12, 2026 by aron-thor-haraldsson

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

Claude Code (bundled in Claude Desktop for Windows) crashes on every launch — and kills already-running idle sessions — whenever nProtect GameGuard is active on the system. GameGuard is a kernel-level anti-cheat used by Helldivers 2, Myth of Empires: Throne and other titles. It injects a usermode DLL (npggNT64.des) into processes across the desktop via what appears to be a global Windows hook, and that DLL faults inside the Bun process Claude Code ships.

The segfault itself is not Anthropic's bug. It reproduces on stock bun.exe with no Anthropic code involved, and I've filed it upstream: oven-sh/bun#34055.

What I'm reporting here is the user-facing failure mode, which is Anthropic's. The entire diagnostic surface the user gets is:

Try sending your message again. If it keeps happening, share feedback so we can investigate. Claude Code process exited with code 3

This is a dead end. It suggests retrying — which can never succeed while the anti-cheat is running — and gives no hint that an external process is responsible. It took several days of elimination (reinstalls, clearing state, killing processes, Exploit Protection overrides, running the binary standalone outside the app container) before I happened to notice the correlation with a game running in the background.

The information needed to diagnose this is already in the crash report — every frame in the faulting stack is in npggNT64.des. It just isn't surfaced anywhere the user looks, and the message the user is shown actively points away from the cause.

What Should Happen?

Two things, in order of value:

  1. The failure should name the cause. On a segfault / code 3 exit, check whether a known anti-cheat module is loaded in the crashed process (GameGuard, and plausibly Vanguard / EasyAntiCheat / BattlEye) and say so: "Claude Code was terminated by nProtect GameGuard, an anti-cheat driver running on this system. Close the game and retry."
  2. Failing that, surface the faulting module at all. Even a generic "crash occurred in an external module: npggNT64.des" in the error UI would have cut days off this.

Additionally: don't suggest "try sending your message again" for a crash class where retrying is deterministic-fail. And a troubleshooting-doc note that anti-cheat software is known to crash the bundled runtime would let people find this by search.

Error Messages/Logs

In the Claude Desktop UI:

> Try sending your message again. If it keeps happening, share feedback so we can investigate.
> Claude Code process exited with code 3
> 
> ============================================================
> Bun v1.4.0 (63bb0ca0d) Windows x64 (baseline)
> Windows v10.26100
> CPU: sse42 avx avx2
> Args: "<home>\AppData\Roaming\Claude\claude-code\2.1.205\claude.exe" "--output-format" "stream->json" "--verbose" "--input-format" "stream-json" "--effort" "xhigh" "--model" "claude-opus-4-8" >"--permission-prompt-tool" "stdi"...
> Features: Bun.stdin(2) jsc spawn standalone_executable claude_code
> Elapsed: 233ms | User: 109ms | Sys: 156ms
> RSS: 0.20 GB | Peak: 0.20 GB | Commit: 0.25 GB | Faults: 48935 | Machine: 33.72 GB
> panic(thread 26712): Segmentation fault at address 0x3C
> oh no: Bun has crashed. This indicates a bug in Bun, not your code.
> https://bun.report/1.4.0/e_163bb0camggggEkgggCCYnpggNT64.desy2TCYnpggNT64.desynouE_A2A4D

Clicking through to the crash report reveals the cause — but nothing in the app surfaces this:

> Segmentation fault at address 0x0000003C
> 
> - ??? at `0x2769` in npggNT64.des
> - ??? at `0x239079` in npggNT64.des
> - *1 unknown/js code*

npggNT64.des is the anti-cheat DLL. Every frame in the faulting stack is inside it.

Steps to Reproduce

Steps to Reproduce

Install a game that uses nProtect GameGuard. Confirmed with Helldivers 2 and Myth of Empires: Throne (both on Steam).
With no game running, open Claude Desktop for Windows and start a new session. Prompt normally — it works.
Leave the chat idle. Launch the game; this auto-starts the GameGuard service.
Within seconds, the idle session shows the crash notification and becomes unresponsive. No further prompt yields a response. Any new session started now also crashes immediately.
Quit the game. GameGuard exits.
A few seconds later, "retry" recovers the chat, and new sessions work normally again. No reboot or reinstall needed.

Steps 3–6 cycle cleanly and repeatedly (verified 4+ times).

Minimal reproduction without any Anthropic code (this is what confirms the crash is upstream in Bun, not in Claude Code):

bun -e "let n=0; setInterval(()=>{ for(let i=0;i<5e6;i++) n+=i; console.log('alive', Date.now()); }, 1000)"

Ticks once a second indefinitely. Launch a GameGuard-protected game and it dies within seconds with the identical 0x3C fault in npggNT64.des. Full analysis in oven-sh/bun#34055.

Claude Model

Opus

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

2.1.205 (bundled). Desktop for Windows 1.20186.1 (df1d8a)

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

Other

Additional Information

<html><body>
<!--StartFragment--><h3 class="text-text-100 mt-2 -mb-1 text-base font-bold" data-sourcepos="133:1-133:41;6535-6575">Related but distinct existing issues</h3>

<p class="font-claude-response-body break-words whitespace-normal" data-sourcepos="135:1-135:303;6577-6879">There are open issues in this repo reporting Bun crashes on Windows without identifying a cause. This issue is not a duplicate of those — it identifies a specific, reproducible cause, and may explain a subset of them. Worth asking those reporters whether they have a GameGuard-protected game installed.</p>

<p class="font-claude-response-body break-words whitespace-normal" data-sourcepos="137:1-137:140;6881-7020">Also: oven-sh/bun#27940 reports the identical fault address (<code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">0x3C</code>) and was closed with the conclusion that the fault lies with GameGuard.</p>

<h3 class="text-text-100 mt-2 -mb-1 text-base font-bold" data-sourcepos="139:1-139:65;7022-7086">It is one specific build of the DLL, not GameGuard generally</h3>

<p class="font-claude-response-body break-words whitespace-normal" data-sourcepos="141:1-141:133;7088-7220">I installed three GameGuard-protected games and compared their GameGuard folders. They are near-identical except for <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">npggNT64.des</code>:</p>

  • Helldivers 2 — SHA-256 4227ed49…4f199, PE date 2025-04-21 — crashes
  • Myth of Empires: Throne — SHA-256 4227ed49…4f199 (byte-identical to HD2), PE date 2025-04-21 — crashes
  • N-Age — SHA-256 bc771b99…47619 (different build), PE date 2024-05-13 — does not crash

<p class="font-claude-response-body break-words whitespace-normal" data-sourcepos="149:1-149:140;7523-7662">Both games shipping the byte-identical 2025 build crash it. The game shipping an older build does not, despite starting GameGuard normally.</p>

<h3 class="text-text-100 mt-2 -mb-1 text-base font-bold" data-sourcepos="151:1-151:16;7664-7679">Environment</h3>

<ul class="[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3" data-sourcepos="153:1-157:56;7681-7925">
<li class="font-claude-response-body whitespace-normal break-words pl-2" data-sourcepos="153:1-153:38;7681-7718">Windows 11, build 10.0.26100 (24H2)</li>
<li class="font-claude-response-body whitespace-normal break-words pl-2" data-sourcepos="154:1-154:46;7719-7764">Claude for Windows 1.20186.1 (df1d8a), MSIX</li>
<li class="font-claude-response-body whitespace-normal break-words pl-2" data-sourcepos="155:1-155:54;7765-7818">Claude Code 2.1.205, bundled Bun v1.4.0 (63bb0ca0d)</li>
<li class="font-claude-response-body whitespace-normal break-words pl-2" data-sourcepos="156:1-156:51;7819-7869">CPU: sse42, avx, avx2 (no avx512) — 33.72 GB RAM</li>
<li class="font-claude-response-body whitespace-normal break-words pl-2" data-sourcepos="157:1-157:56;7870-7925">nProtect GameGuard, <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">npggNT64.des</code> PE date 2025-04-21</li>
</ul>

<h3 class="text-text-100 mt-2 -mb-1 text-base font-bold" data-sourcepos="159:1-159:15;7927-7941">Workaround</h3>

<p class="font-claude-response-body break-words whitespace-normal" data-sourcepos="161:1-161:117;7943-8059">Don't run Claude Desktop while a GameGuard-protected game is running. Reliable in both directions, no reboot needed.</p>

<h3 class="text-text-100 mt-2 -mb-1 text-base font-bold" data-sourcepos="163:1-163:13;8061-8073">Upstream</h3>

<p class="font-claude-response-body break-words whitespace-normal" data-sourcepos="165:1-165:104;8075-8178">oven-sh/bun#34055 — full analysis, minimal repro on stock Bun, PE section mapping of the fault offsets.</p><!--EndFragment-->
</body>
</html>

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗