Claude Desktop (Windows MSIX) updater modifies package in place, breaking code integrity; blocked vk_swiftshader.dll load crashes GPU process and kills all embedded Claude Code sessions

Status Open
Reported on v2.1.247
Maintainer reply None cached
Activity 0 comments · opened Aug 31, 2026

Summary

Claude Desktop (Windows MSIX) repeatedly crashes and kills every running embedded Claude Code session. Root cause traced on the affected machine: the Desktop updater writes files in place inside the immutable MSIX package directory (C:\Program Files\WindowsApps\Claude_...), which invalidates package code integrity. The per-file catalog AppxMetadata\CodeIntegrity.cat is then missing, so Windows Code Integrity blocks the GPU process from loading app\vk_swiftshader.dll (Chromium's SwiftShader software-Vulkan fallback). The GPU process dies, Electron tears down the whole app, and all embedded Claude Code sessions are killed.

Standalone Claude Code (unpackaged) is unaffected.

Environment

  • Claude Desktop: 1.40609.0.0 (Claude_1.40609.0.0_x64__pzs8sxrjxfjjc, SignatureKind: Developer)
  • Embedded Claude Code: 2.1.247; standalone Claude Code: 2.1.251 (works fine)
  • Windows 11 Home 64-bit, build 26200
  • GPU: NVIDIA GeForce RTX 5060 Ti, driver 32.0.16.1088
  • Package status observed after crashes: Modified, NeedsRemediation

Crash timeline (2026-08-30, local time)

Five crashes: 16:46:30, 17:00:51, 17:09:21, 17:26:42, 20:09:29.

At every crash, Claude main.log reports:

GPU process gone: type: GPU, reason: crashed, exitCode: 101457950, serviceName: GPU

At the exact same timestamps, the Windows Code Integrity operational log shows, in order:

  1. Event 3010: Code Integrity was unable to load the \...\Claude_1.40609.0.0_x64__pzs8sxrjxfjjc\AppxMetadata\CodeIntegrity.cat — status 0xC000003A (STATUS_OBJECT_PATH_NOT_FOUND; the file genuinely does not exist in the package).
  2. Event 3033: claude.exe attempted to load app\vk_swiftshader.dll but it did not meet Microsoft signing-level requirements.

AppModel-Runtime Event 6 subsequently reports the process cannot be created because the machine-level package status requires remediation.

The final daytime crash occurred ~8 seconds after Claude created an in-app browser preview — consistent with the GPU process falling back to SwiftShader for a new surface and being killed on the blocked DLL load. System memory was fine and there was no contemporaneous NVIDIA display-driver reset (this is not a driver issue).

Key forensic evidence

  • AppxMetadata\CodeIntegrity.cat is absent from the package directory (Test-Path = False), even after Windows remediation returned the package to Status: Ok.
  • vk_swiftshader.dll itself carries a valid embedded Authenticode signature (CN="Anthropic, PBC") — only the package catalog validation fails.
  • The package was installed 2026-08-28 08:02, but every GPU-related DLL in app\ (vk_swiftshader.dll, vulkan-1.dll, libGLESv2.dll, libEGL.dll, ffmpeg.dll, dxil.dll, dxcompiler.dll, d3dcompiler_47.dll) has LastWriteTime 2026-08-30 21:01–21:02 — i.e. something (the in-app updater) rewrote files inside WindowsApps post-install. That is what flips the package to Modified/NeedsRemediation and orphans the catalog.

Expected

  • Package files never modified in place; updates go through a proper MSIX package update so the code-integrity catalog stays valid.
  • GPU-process crash recovery (fall back to software / disable GPU) without terminating the entire Desktop app.
  • Embedded Claude Code sessions survive, or at minimum are cleanly resumable, when the host crashes.

Actual

Entire Desktop app terminates, every embedded Claude Code session is killed, and the MSIX package is left Modified/NeedsRemediation. The cycle recurs after remediation because the updater rewrites package files again.

Workarounds found

  • Clean reinstall (Remove-AppxPackage + fresh installer) — until the next in-place update re-corrupts the package.
  • Launching with --disable-gpu avoids the SwiftShader load path.
  • Running standalone claude in a terminal instead of embedded sessions.

View original on GitHub ↗