[BUG] Windows MSIX: inline browser preview crashes GPU process, leaves package Modified/NeedsRemediation
[BUG] Windows MSIX: Opening inline browser preview crashes GPU process → app dies → package left Modified, NeedsRemediation → app self-bricks until reinstall
Preflight
- Searched existing issues. Related but not identical: #76357 (CoworkVMService holds locks across updates), #63397 (0x80073D02 staged update), #47877 (0x80073CFA/stuck package). This report adds a reproducible runtime trigger (inline browser → GPU crash) that leaves the package integrity-broken.
- Single bug report; current release (installer confirms latest MSIX, SHA256
c7d61479f06a3490bd2598405aa95a428abb9fe31ed97f9e0a1fba7cd2745fe2).
Environment
| | |
|---|---|
| OS | Windows 10 Pro 10.0.19045 (22H2) |
| Package | Claude_1.24012.9.0_x64__pzs8sxrjxfjjc (current; two fresh downloads on 2026-07-25 returned identical SHA256) |
| Install | Sideloaded MSIX via Claude Setup.exe, current-user, AllowDevelopmentWithoutDevLicense=1 |
| GPU | NVIDIA GeForce RTX 3060 Ti, driver 32.0.16.1062 (2026-06-11, current) |
| AV | Windows Defender only |
Summary
Opening the inline browser preview in a Cowork/Code session kills the embedded Chromium GPU process within ~2 seconds and takes the whole app down. The crash leaves the MSIX package in Modified, NeedsRemediation. Subsequent launch attempts trigger Windows package remediation, which fails with 0x80073D02 ("apps need to be closed" — apparently blocked by the app's own activation/leftover process state), Windows shows "There is a problem with Claude. Reinstall the app from its original install location or contact your administrator" and deregisters the Start-menu entry. The app is unlaunchable until a clean-boot reinstall-over-top.
Reproduced twice in one day with identical log fingerprints. A rendering crash should never leave the package unable to activate.
Reproduction
- Start a session (in my case cwd
D:\ClaudeCode\file_reorg). - Have Claude open any website in the inline browser preview (first: during a file-reorg task; second: twitchtracker.com).
- GPU process crashes ~2 s after
Created browser preview; app exits. No Application-log Event 1000 (process does not die as a normal WER crash). Get-AppxPackagenow reportsModified, NeedsRemediation(wasOkminutes earlier after a fresh install).- Clicking the app → remediation attempt → 0x80073D02 → error dialog → AppsFolder entry removed.
Key evidence
main.log (crash #2):
14:05:11 [Preview] Created browser preview { serverId: 'browser-preview-1784981111728-0' }
14:05:13 GPU process gone: { type: 'GPU', reason: 'crashed', exitCode: 101457950, serviceName: 'GPU' }
unknown-window.log: identical WebGL warning burst (WebGL: INVALID_ENUM: getInternalformatParameter ...) at 13:12:02 (crash #1) and 14:05:13 (crash #2), immediately before each death.
AppXDeploymentServer/Operational (launch attempts after crash #1, local time):
13:12:52 / 13:13:14 Event 603/607: RegisterByPackageFullName Claude_1.24012.9.0...
13:12:52 / 13:13:14 Event 638: Packages were not updated because affected apps are still running. Running apps: {Claude_pzs8sxrjxfjjc!...}
13:12:52 / 13:13:14 Event 419/404: error 0x80073D02: Unable to install because the following apps need to be closed
Also: since the 02:30 auto-update (1.24012.1.0 → 1.24012.9.0), Event 471 error 0x12C repeatedly failing to delete WindowsApps\Deleted\Claude_1.24012.1.0... — a handle held the old package from the moment of the update.
ClaudeSetup.log:
- Every run:
WARNING: failed to remove conflicting service: could not open CoworkVMService: Access is denied.(the installer cannot manage its own packaged service; SCM denies Administrators too — only the registryStartvalue is writable) - Every run:
Windows rejected data-preserving removal ... (0x80073CFA, requires developer mode); relying on in-place update - 13:57 (after clean reboot, service disabled):
AddPackagesucceeds in 6 s → packageOk - 14:18 (2 min after crash Number 2, no reboot): same installer, same MSIX →
AddPackage failed with HRESULT 0x80073CF9
Ruled out
- Disk:
chkdsk /scanclean on C: and D:. - Driver/TDR: no display-driver reset events since June; driver current (installed 5 days prior).
- AV: Defender shows no detections in the crash windows.
- GPU stack in general: Brave (Chromium 150), same machine/driver: all features hardware-accelerated,
GPU process crash count: 0, no problems detected beyond standard universal workarounds. Fullabout:gpuexport available. - Repository corruption: AppX repository queries consistent; re-register (
Add-AppxPackage -Registeron the manifest) succeeds but cannot clearModified(as expected — files, not registration, are damaged).
Note: my config gets Chromium's exit_on_context_lost workaround applied — consistent with the GPU process exiting instantly on a lost D3D context rather than recovering. Whatever the preview spawn does, it loses the GPU context in Claude's bundled Chromium while Brave's Chromium never does.
Expected
- Inline browser preview opens without killing the GPU process.
- If a renderer/GPU process crashes, the app recovers or exits cleanly without leaving the MSIX package integrity-broken and unlaunchable.
- The updater/installer can manage
CoworkVMService(currently even Anthropic's own elevated installer gets Access denied).
Actual
Browser preview → GPU process crash → app death → package Modified, NeedsRemediation → remediation self-blocks with 0x80073D02 → "There is a problem with Claude..." dialog → Start entry deregistered. Recovery requires: disable CoworkVMService via registry (Start=4), clean reboot, reinstall-over-top. Reinstall without reboot fails (0x80073CF9).
Workaround test
--disable-gpu launch test: [PENDING — result to be added: does the preview survive under software rendering?]
Open questions for maintainers
- What writes into the package directory at runtime such that the integrity check fails after the crash? (Updater staging into the install dir?)
- Why does launch-triggered remediation see the package's own AUMID as "running" (self-blocking 0x80073D02)?
- Why does the GPU process lose context on preview spawn when the same driver runs Chromium 150 (Brave) with zero GPU crashes?
Logs available on request: full main.log, unknown-window.log, AppXDeploymentServer export, ClaudeSetup.log, brave://gpu export, original System-log .evtx.
Showing cached comments. Read the full discussion on GitHub ↗
3 Comments
I can confirm the same bug on another Windows machine.
Environment:
Reproduction:
This reproduced twice:
main.log:
capturePreviewScreenshotIfChanged failed:
Error: UnknownVizError
GPU process gone:
type: GPU
reason: crashed
exitCode: 101457950
serviceName: GPU
unknown-window.log shows the same sequence immediately before both crashes:
After each crash, Windows AppModel Runtime reported 0x3CFC and Claude could not launch. Repair and reboot did not restore it; reinstalling the same MSIX over the existing installation was required.
There were no Windows display-driver reset events or system-wide GPU failures. Memory pressure was also not present.
This appears to be the same inline-preview GPU crash and MSIX self-bricking behavior described in this issue, now reproduced with an RTX 5070 Ti and an OpenRouter login page.
Same crash here on Windows 11 Pro (26200), Claude 1.25927.0, sideloaded MSIX. I think I have the full causal chain — the GPU crash is a symptom, not the cause. Eight crashes over two days, all with a byte-identical fingerprint across three separate Windows event logs.
The chain
app\vk_swiftshader.dll.AppxMetadata\CodeIntegrity.catdoes not exist in the package:``
`CodeIntegrity/Operational Id=3010 (×3)
Code Integrity was unable to load the ...\Claude_1.25927.0.0_x64__pzs8sxrjxfjjc\AppxMetadata\CodeIntegrity.cat catalog. Status 0xC000003A
0xC000003A(
=STATUS_OBJECT_PATH_NOT_FOUND` — the file is genuinely absent.)``
``CodeIntegrity/Operational Id=3033
Code Integrity determined that a process (...\app\claude.exe) attempted to load
...\app\vk_swiftshader.dll that did not meet the Microsoft signing level requirements.
``
``GPU process gone: { type: 'GPU', reason: 'crashed', exitCode: 101457950, serviceName: 'GPU' }
``
`AppModel-Runtime/Admin Id=6 (×5)
0x3CFC: Cannot create the process for package <NULL> because an error was encountered
while checking the machine-level package status.
AppModel-Runtime/Admin Id=217
Destroyed Desktop AppX container {...} for package Claude_1.25927.0.0_x64__pzs8sxrjxfjjc
0x3CFC(
=ERROR_NEEDS_REMEDIATION`.) The whole sequence spans ~1.5 seconds.Notes that may save others time
vk_swiftshader.dllis not unsigned.Get-AuthenticodeSignaturereportsValid, signerAnthropic, same aslibGLESv2.dll/ffmpeg.dll/vulkan-1.dll. It fails the Microsoft signing level specifically, which the package catalog is what normally satisfies.d3dcompiler_47.dll(Microsoft-signed) is the only DLL in the folder that would pass on its own.3010catalog errors fire harmlessly at every single app start — those DLLs load before the mitigation applies. Only the lazy SwiftShader load is fatal. So the presence of3010alone isn't the bug; the3033is.UserGpuPreferenceschanged nothing. And an ordinary GPU crash (exitCode 34) is absorbed and recovered from normally — only the101457950variant is fatal, because that one is container teardown rather than a process fault.WarmLifecycle:previewis armedwhen-hidden, so a background preview warm appears to be enough.LocalDumpsforClaude.exeproduces nothing and%APPDATA%\Claude\Crashpad\reportsstays empty, because the process is terminated rather than faulting. Anyone chasing a dump is chasing a dead end.Status: Ok,SignatureKind: Developer,IsDevelopmentMode: False. Re-registering the package (Add-AppxPackage -Register -DisableDevelopmentMode) does not help — it comes back within the hour.Verify in one command
Cross-reference the timestamps against
Id=6inMicrosoft-Windows-AppModel-Runtime/Adminand againstGPU process gonein%APPDATA%\Claude\logs\main.log. On my machine those three line up to the second, eight times out of eight.Suggested fix
Ship a Microsoft-countersigned
AppxMetadata\CodeIntegrity.catin the MSIX (standard for packages whose binaries are lazily loaded under a signing-level mitigation). Failing that, either preloadvk_swiftshader.dllat startup alongside the other GL DLLs so it's validated on the normal path, or build with the software rasterizer disabled so the fallback is never attempted.Happy to supply full
.evtxexports or the app log bundle if useful.@sanderwollaert, your chain checks out on the machine from this report (Win10 / RTX 3060 Ti, so a different OS and GPU than yours). All three of my 07-25 crashes came right after the in-app browser/preview pane was opened (twice by a background agent session, once by the main session).
Your verify command matches here to the second:
CodeIntegrity/OperationalId=3033 forvk_swiftshader.dllat 2026-07-25 13:12:02, and again at 14:05:13 (that one was the first pane-open right after reinstalling the app).main.log(rescued from the pre-reinstall profile) ends in the same second with the familiar line:GPU process gone: { type: 'GPU', reason: 'crashed', exitCode: 101457950, serviceName: 'GPU' }unknown-window.log): a burst ofWebGL: INVALID_ENUM: getInternalformatParameterwarnings, therequestAdapter()powerPreference warning, thenA valid external Instance reference no longer exists.That is consistent with step 1 of your chain (context loss, then software-rendering fallback) as seen from inside the app.One data point that differs from your notes: a Crashpad dump can appear, just not reliably.
%APPDATA%\Claude\Crashpad\reports\here contains a 35 MB minidump written at exactly 13:12:02, the same second as the 3033 event. It appeared on only one of the three crashes; the other two left no dump, no WER report, and no Application event log entry, matching your observations. So at least one process in the chain sometimes faults before the container teardown. Not attaching it, since minidumps carry process memory, but we kept it.Workaround that has held up here: since 07-25 we stopped touching the browser/preview feature entirely, no preview tabs, and the browser tools are explicitly banned in every subagent prompt (two of the three crashes were triggered by background agents opening the pane). Zero crashes since, with heavy daily use otherwise. Given your idle crash via the
WarmLifecycle:previewwarm this may not be complete protection, but on this machine strict avoidance has been enough so far.Edit: counted it for the record: since the 07-25 reinstall this machine has logged 414
[WarmLifecycle:preview]warm-ups in 13 days with zero crashes, so on a desktop with a stable discrete GPU the when-hidden warm alone doesn't appear to be enough; it seems to also need the context loss that forces the SwiftShader fallback. Pre-reinstall numbers back this up: the broken build logged 2,424 preview warm-ups over the preceding three weeks, also without an idle crash, and none of our three crashes has a warm-up in the crash second (nearest was ~35 s earlier, firing routinely right after an app relaunch). Every crash here lines up with the pane actually being opened.One more artifact: the CLI-side MCP log of the fatal session pins the trigger-to-death window at 3 seconds.
preview_startwas called at 13:11:58 and returned "completed successfully in 912ms" at 13:11:59; the 3033 event, theGPU process goneline, and the minidump all follow at 13:12:02. So the pane reports success before the SwiftShader fallback kills the container.