anthropics / anthropics/claude-code
[BUG] Claude Desktop MSIX: CIG (MicrosoftSignedOnly) + vendor-signed vk_swiftshader.dll kills GPU process on every browser preview (0x060C201E)
- Dominant language
- Python
- Stars
- 145k
- Forks
- 23.1k
- PR merge metrics
- PR metrics pending
Description
### Preflight Checklist
- [x] I have searched [existing issues](https://github.com/anthropics/claude-code/issues?q=is%3Aissue%20state%3Aopen%20label%3Abug) 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?
On Windows 11 (build 26200), Claude Desktop 1.24012.9.0 (MSIX) crashes deterministically seconds after an agent opens a **browser preview** in the Code tab. The GPU child process dies with unhandled exception 0x060C201E, five relaunches fail (error_code=18), and the app self-terminates: `FATAL: GPU process isn't usable. Goodbye.` Windows then flags the package `Modified, NeedsRemediation`, so every crash also requires full Remove-AppxPackage + reinstall. 15 crashes captured, all second-exact correlated with CodeIntegrity events.
**Root cause (verified):** The GPU child runs with **MicrosoftSignedOnly (CIG): ON** (verified via Get-ProcessMitigation on the live process), but the package ships `app\vk_swiftshader.dll` signed by "Anthropic, PBC" (DigiCert) - valid Authenticode, but not Microsoft signing level - and no `AppxMetadata\CodeIntegrity.cat` (verified missing on disk AND inside the downloaded MSIX). When browser-preview's WebRTC path probes Vulkan, the GPU process loads vk_swiftshader.dll, CIG rejects it, and because the app is MSIX-packaged the loader escalates to `ntdll!LdrAppxHandleIntegrityFailure` and kills the process. Full ProcDump dump of the GPU child captured at the exact moment (WinDbg FAILURE_BUCKET: APPLICATION_FAULT_60c201e_ntdll.dll!LdrAppxHandleIntegrityFailure).
**Control group:** Chrome on the same machine has the identical MicrosoftSignedOnly:ON on its GPU process, logs the identical CodeIntegrity 3033 event for its own vk_swiftshader.dll - and survives, because it is not MSIX-packaged. Packaging is the only difference.
**Exonerated by 30+ hours of isolation:** Intel drivers 32.0.101.8331 AND 32.0.101.8860 WHQL clean install (identical crash on both); hardware (0 TDR / 0 WHEA in 30 days, disk healthy); fresh GPU caches; fresh package (Status=Ok); --no-sandbox / --disable-gpu-sandbox; clean zombie-SID scan; canonical WindowsApps ACLs; zero third-party DLLs (Defender only).
**Workaround (confirmed):** installing the non-MSIX build (`Claude Setup.exe --exe`) fully resolves it - same version, same CIG policy, same 3033 event, but the load failure is non-fatal outside MSIX. Browser previews work.
**Suggested fix:** drop MicrosoftSignedOnly on the GPU process in the MSIX build, or gate the Vulkan/swiftshader probe, or ship the DLL at the required signing level / with a CI catalog.
Related: #61372, #49676, #56679, #36157, electron/electron#51761
### What Should Happen?
Opening a browser preview should not crash the app. The GPU process should either load vk_swiftshader.dll successfully or fail the Vulkan probe gracefully (as Chrome does with the identical file and identical CIG policy) and fall back without terminating. The package should never flip to NeedsRemediation.
### Error Messages/Logs
```shell
[net] Failed to resolve address for stun.cloudflare.com / stun.l.google.com (WebRTC session setup)
<1 second later:
ERROR:gpu_process_host.cc(998) GPU process exited unexpectedly: exit_code=101457950
ERROR:gpu_process_host.cc(992) GPU process launch failed: error_code=18 (x5)
FATAL:gpu_data_manager_impl_private.cc(418) GPU process isn't usable. Goodbye.
CodeIntegrity/Operational log, second-exact with every crash (15/15):
Event 3010 x3: Code Integrity was unable to load the ...\Claude_1.24012.9.0_x64__pzs8sxrjxfjjc\AppxMetadata\CodeIntegrity.cat catalog. Status 0xC000003A.
Event 3033: claude.exe attempted to load ...\app\vk_swiftshader.dll that did not meet the Microsoft signing level requirements.
WinDbg on the ProcDump dump of the GPU child:
EXCEPTION_CODE: 60c201e (unhandled)
SYMBOL_NAME: ntdll!LdrAppxHandleIntegrityFailure
FAILURE_BUCKET_ID: APPLICATION_FAULT_60c201e_ntdll.dll!LdrAppxHandleIntegrityFailure
Live GPU child mitigation (Get-ProcessMitigation -Id ): MicrosoftSignedOnly: ON
vk_swiftshader.dll signature: Valid, Signer CN="Anthropic, PBC" (DigiCert) - not Microsoft level
```
### Steps to Reproduce
1. Windows 11 25H2 build 26200, Intel Arc iGPU (Core Ultra), VBS/HVCI on, Defender only
2. Install Claude Desktop 1.24012.9.0 via the standard MSIX installer
3. Open the Code tab, start an agent session
4. Have the agent open a **browser preview**
5. Within 7-11 seconds: WebRTC STUN lookups appear in the log, the GPU child dies (0x060C201E), the whole app terminates
6. Windows Settings now shows the app needs Repair; package Status = Modified, NeedsRemediation; Repair fails; only full reinstall recovers - until the next preview
Deterministic: 15/15 previews with the MSIX build crashed. 0 crashes with the non-MSIX build (--exe) on the same machine.
### Claude Model
None
### Is this a regression?
Yes, this worked in a previous version
### Last Working Version
1.22209.3
### Claude Code Version
1.24012.9.0 (Claude Desktop MSIX); non-MSIX build 1.24012.9 unaffected
### Platform
Anthropic API
### Operating System
Windows
### Terminal/Shell
PowerShell
### Additional Information
Available on request (privately - dumps contain environment data): ProcDump full dump of the GPU child, CodeIntegrity event log export, main.log, two Electron stderr captures showing the STUN-to-death fingerprint, driver A/B results, full diagnostic matrix report.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reproducing the browser-preview flow on Windows 11 with Claude Desktop 1.24012.9.0 MSIX, then inspect the CodeIntegrity/Operational events, Get-ProcessMitigation output, MSIX contents, and ProcDump/WinDbg evidence described here. Compare the MSIX and --exe builds; done means browser previews no longer terminate the GPU process or leave the package in NeedsRemediation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- electron, powershell
- Domain
- desktop, operating-systems, security
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 35/100