GPU process crashes (UnknownVizError) when using Browser tools, corrupting the app package and requiring full reinstall
Description
Using the in-app Browser tool (browser:open_site) intermittently crashes the Electron GPU process. The crash is deterministic in signature (same exit code every time) but not deterministic in when it happens — sometimes the very first site opened crashes it, sometimes several successful site opens/tool calls happen first and it crashes later (including once right after receiving an HTTP 403 "Forbidden" page).
After the crash, the app cannot be relaunched — Windows shows:
You'll need to go to advanced options for Claude and select Repair. If you're still having issues with it, reinstall this app or contact your administrator.
Get-AppxPackage *Claude* shows Status: Modified, NeedsRemediation after every crash, even though no files were actually changed. The Windows "Repair" option always fails ("We couldn't repair this app. Try again in a bit."). The only reliable recovery is a full Remove-AppxPackage + reinstall (login required again each time). A lighter re-register (Add-AppxPackage -Register <manifest> -DisableDevelopmentMode -ForceApplicationShutdown) sometimes clears the flag but not always.
Environment
- Claude desktop app version: 1.24012.9.0
- OS: Windows 11 Pro (fresh install)
- Motherboard: Gigabyte Z790 Gaming X
- GPU: NVIDIA GeForce RTX 4070 Ti, driver 32.0.15.9649 (2026-05-05)
- Install source: Microsoft Store (MSIX), package family
Claude_pzs8sxrjxfjjc
Steps to reproduce
- Fresh install of Claude desktop.
- Ask Claude to open any website (triggers
browser:open_sitetool permission card, allow it). - Repeat step 2 a few times across a session (does not reproduce 100% on the first try, but reproduces reliably within a handful of site opens).
- App's GPU process crashes; the whole app becomes unusable; Windows flags the package as needing remediation.
Relevant log excerpt (logs/main.log)
[info] GPU process gone: {
type: 'GPU',
reason: 'crashed',
exitCode: 101457950,
serviceName: 'GPU'
}
[warn] [Preview] capturePreviewScreenshotIfChanged failed: {
error: [Error: UnknownVizError] {
[stack]: [Getter/Setter],
[message]: 'UnknownVizError'
}
}
exitCode: 101457950 = 0x060C201E (decimal shown in log). Reproduced with this exact exit code across multiple, separate crash occurrences.
What we've already ruled out
Since the crash always correlates with the Browser tool's automatic preview-screenshot capture (capturePreviewScreenshotIfChanged) rather than page content itself, we tried disabling every GPU/virtualization-adjacent system setting we could find, none of which fixed it:
- NVIDIA overlay / GeForce Experience background services (
NvContainerLocalSystem,NVDisplay.ContainerLocalSystem) — stopped and disabled, crash still occurs. - Windows "Hardware-accelerated GPU scheduling" — disabled, crash still occurs.
- Windows Memory Integrity / HVCI (Hypervisor-Enforced Code Integrity) — disabled via
HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity, confirmedSecurityServicesRunning: {}after reboot — crash still occurs. - No corresponding Windows-level display-driver TDR/reset event in Event Viewer (
Systemlog) at any crash timestamp — this is not a full driver crash, only the sandboxed Electron GPU process.
Not yet tried: full DDU (Display Driver Uninstaller) clean reinstall of the NVIDIA driver.
Requests
- Could Chromium's GPU process be configured to not take down the whole app / not trip the package's file-integrity flag on a sandboxed GPU-process crash? A GPU process crash in Chromium is normally recoverable (GPU process restarts) — here it seems to cascade into full app failure and MSIX package corruption flags.
- Since MSIX packaging blocks launching
claude.exedirectly with--disable-gpu(Access is denied) and there is no in-app "hardware acceleration" toggle (checked Settings → General / Claude Code / Desktop app → General/Extensions/Developer — none found), could a supported way to disable GPU acceleration for the Browser tool preview be added? - As a workaround we disabled "Browser tools" entirely in Settings → Claude Code → Browser — this avoids the crash but removes the whole in-app browsing/preview feature.
Happy to provide the full main.log / cowork-service.log or a memory dump if useful.
Showing cached comments. Read the full discussion on GitHub ↗
4 Comments
Adding a data point confirming this on a high-end discrete GPU with a fully healthy DX12 stack — so this isn't limited to integrated/weak GPUs or headless sessions.
Environment
Claude_1.26832.0.0_x64__pzs8sxrjxfjjc)System GPU state is healthy (rules out a driver/DirectX problem):
Win32_VideoController: Status OK, ConfigManagerErrorCode 0Repro
Trigger the in-app agentic browser (a "site · Opened in Browser" card with an Open button; in my case app.roll20.net). Clicking Open opens the browser pane, then the window disappears within a second — before the target page even renders.
Log signature (main.log), matching this issue:
[error] [CDPTools] Compressed screenshot failed { error: [Error: UnknownVizError] ... }
[warn] [Preview] capturePreviewScreenshot failed: { error: [Error: UnknownVizError] ... }
[warn] [Preview] capturePreviewScreenshotIfChanged failed: { error: [Error: UnknownVizError] ... }
The crash correlates with the browser pane's automatic preview-screenshot capture, not with page content — consistent with the compositing-path hypothesis in this thread.
Aftermath (also matches): the MSIX package flips to
Modified, NeedsRemediationand the app then refuses to launch with "There's a problem with Claude. Reinstall the application from its original install location…".Mitigations that did NOT work in my case:
winget repair/winget install --force/Add-AppxPackage -Register— none clearedNeedsRemediation(note:winget install --forcepulled an older version 1.25927 and created a duplicate parallel install).Add-AppxPackage -Path Claude.msix -ForceApplicationShutdown) restoredStatus: Ok— but the next browser crash re-corrupts it.--disable-gpupassed viashell:AppsFolder\Claude_pzs8sxrjxfjjc!Claude --ArgumentListappears to be swallowed by the packaged app (no effect).+1 on the request for a hardware-acceleration toggle (or honoring
ELECTRON_EXTRA_LAUNCH_ARGS/ anelectron-flags.conf) so affected users have a working fallback.main.anonymized.log
gpu-info.anonymized.json
Another data point — this time on integrated Intel graphics, so it's not limited to discrete GPUs either.
Environment
GPU process gone: reason 'crashed', exitCode 101457950(0x060C201E) while the in-app browser loads an external site, then main.log stops — the whole app dies. (exitCode 34occurrences are benign here — GPU process restarts fine.)Additional things ruled out on this machine
isHardwareAccelerationDisabled: truein%APPDATA%\Claude\claude_desktop_config.json). The crash still occurs with acceleration disabled, identical exit code — so the GPU driver stack is fully out.C:\Program Files\WindowsApps\Claude_*— no change.Possibly useful correlation for locating the code path: in 4 of 6 fatal crashes the last main.log line ≤2 s before death was
[PreviewContext] Blocked subresource to private-resolving host { resourceType: 'xhr' }— and that warning never appears anywhere else in our logs.
MSIX recovery that works here without reinstall or reboot: the servicing failure lands ~7 s after the crash with
0x80073D02("apps need to be closed") because zombie claude.exe processes still hold the package — that's what leaves it inNeedsRemediation. Killing them first, then re-registering, has cleared it every time here:+1 on the core request: a GPU-process crash should not take down the shell and every running session.
Confirming this on a desktop dual-GPU system (not a laptop), with the full corruption-recurrence cycle documented. Same exit code, same WebGL signature.
Environment
Claude_pzs8sxrjxfjjc)Crash signature —
main.log:Logged twice, then the app dies. The crash occurs ~2 seconds after launch, immediately after the OAuth token lookup — i.e. during initial render, not during an active browsing session. This differs from the existing reports, where the crash follows interaction with the browser pane.
Preceding errors —
unknown-window.log, same second as the crash:Also recurring, though I can't tell whether they're related: an unhandled promise rejection reporting no registered handler for a
$eipc_message$ ... claude.buddy ... BuddyBleTransport ... reportStateremote method (identifiers redacted), andSetting the document's base URI to 'https://claude.ai/' violates the following Content Security Policy directive: "base-uri 'none'".Package corruption is a consequence of the crash, and it recurs
This is the part worth emphasising, because it turns a crash into an unusable install. After each GPU crash:
In this state the app shows the Windows dialog "Can't open this app / go to Claude's advanced options and select Repair", and
CoworkVMServicecannot start at all (Cannot start service CoworkVMService) because its binary lives inside the package. Note the service's security descriptor also denies configuration changes to an elevated administrator (Set-Service ... Access is denied) whileStop-Serviceis permitted — worth checking whether that's intended.What did and did not restore it:
NeedsRemediationAdd-AppxPackage -Register AppxManifest.xml(re-registration): completed with no error, status unchanged — it rewrites the store entry, not the files on diskAdd-AppxPackage -Path Claude.msix -ForceApplicationShutdown -ForceUpdateFromAnyVersion, overwriting with the signed package freshly downloaded from yourlatest/redirectendpoint: restoredStatus: Okand allowed the service to startBut it does not hold: the package returned to
Modified, NeedsRemediationafter the next crash. Three full cycles over two days. Each crash re-corrupts the registration, so the recovery path is a repeated 253 MB reinstall.Ruled out
nvlddmkm/Dxgkrnlevents in the System log at crash time; the failure is contained to the Electron GPU processvmcomputeandhnsrunning, Virtual Machine Platform enabledNo usable mitigation via flags (confirming #83028 and #77857): MSIX blocks passing
--disable-gpu/--disable-gpu-compositing, arguments passed viaStart-Process shell:AppsFolder\...are silently dropped, and there is no hardware-acceleration toggle in Settings.Workaround that appears to work: Settings → Claude Code → Browser → disable Browser tools. The cost is the entire in-app browser and live preview.
Requests
ELECTRON_EXTRA_LAUNCH_ARGS, so there is a reachable mitigation on MSIXI can provide
main.log,unknown-window.logandcowork-service.logprivately via support if useful — I'd rather not attach them publicly, as they contain account and workspace identifiers.There is a mitigation that keeps the in-app browser and live preview: the official
Claude Setup.exebootstrapper accepts an undocumented--exeswitch that installs the classic non-MSIX (Squirrel) build to%LOCALAPPDATA%\AnthropicClaude\instead of the MSIX. Root cause analysis in #81341 explains why that helps: the GPU process runs with theMicrosoftSignedOnlyCIG mitigation while the package ships an Anthropic-signedvk_swiftshader.dlland no workingAppxMetadata\CodeIntegrity.cat— inside the MSIX container that Code Integrity denial is escalated to a fatal GPU-process kill (your 0x060C201E) and it's the same integrity failure that flags the packageModified, NeedsRemediationafter every crash. Outside MSIX the identical denial is non-fatal, which also solves the "MSIX blocks passing flags" problem, since the Squirrelclaude.exeis directly runnable.Verified on my machine (RTX 5080, Win11 26200) after 10/10 fatal crashes on MSIX with second-exact CodeIntegrity 3033/3010 events: after switching via
"Claude Setup.exe" --exe, the same pages (Google Sign-In / GSI widgets in my case) load fine, GPU process survives, no new 3033 events, no package corruption. User data survives the switch (%APPDATA%\Claudeand~/.claudeare shared between builds; no re-login). Another user confirmed the same fix on Win10 + AMD iGPU in #81341.