[BUG] Claude Desktop fails to launch on Windows — orphaned Silo / Job Object after app crash, only logoff or reboot recovers (HRESULT 0x80070020 in AppModel-Runtime EventID 215/208)
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 Desktop on Windows enters a state where launch fails with the user-facing message:
"Há um outro programa usando este arquivo no momento." (English equivalent: "Another program is currently using this file.")
referencing C:\Program Files\WindowsApps\Claude_<version>_x64__pzs8sxrjxfjjc\....
The message is misleading — there is no actual file lock in the install directory. The real failure is in the AppX/Desktop Bridge container layer.
Real diagnosis (from Event Logs)
Channel Microsoft-Windows-AppModel-Runtime/Admin shows two correlated events on every failed launch:
- Event ID 215:
0x80070020: cannot create the Desktop AppX container for package Claude_<full>_x64__pzs8sxrjxfjjc due to an error converting the job - Event ID 208:
0x80070020: cannot create the process for package Claude_<full>_x64__pzs8sxrjxfjjc due to an error setting up the runtime. [LaunchProcess]
HRESULT 0x80070020 = ERROR_SHARING_VIOLATION, surfacing during the Job Object → Silo conversion (the Win32 container layer that backs Desktop Bridge / AppX-packaged Win32 apps).
Hypotheses ruled out
- ❌ No userspace process has modules loaded from the Claude install directory at the time of failure
- ❌ No file in the install directory has an exclusive lock (verified via Sysinternals
handle.exeand Process Explorer) - ❌ Other AppX apps (Notepad, OneDriveSync, Microsoft Store apps) successfully create Desktop AppX containers in the same time window — the issue is specific to the Claude package
- ❌ HCS (Host Compute Service, used by
cowork-svc.exefor the Cowork sandbox VM) has no orphaned compute systems (hcsdiag listreturns clean) - ❌
Reset-AppxPackagewith admin privileges does NOT recover - ❌
Add-AppxPackage -Register(re-register manifest) does NOT recover - ❌ Restarting
AppXSvc,ClipSVC,AppReadiness,vmcompute,CoworkVMServicedoes NOT recover - ❌ The Claude desktop process is briefly created and added to the container, then the container is destroyed immediately — suggesting an app crash during startup that doesn't propagate cleanup back through the Silo
Only known workaround
Logoff + Login (or full reboot). This clears the orphaned handle in the user-session. Service restarts and AppX package resets do not clean it up.
This matches the kernel-level lock pattern documented in #49655 (Helium hive locks held by cowork-svc.exe that survive service stop), but surfaces at a different layer (Silo/Job conversion at AppX activation time, not MSIX deployment time).
What Should Happen?
The Claude Desktop launch path should not leave an orphaned Silo/Job handle when it crashes during startup. Cleanup should be guaranteed via SEH / signal handlers / RAII-equivalent in the launcher process.
If CoworkVMService initialization fails, the app should fall back to chat-only mode (already requested in #28231) instead of crashing the entire activation.
The user-facing message ("Há um outro programa usando este arquivo no momento" / "Another program is using this file") is wrong and should be improved — there is no file lock; the failure is at the container layer.
Error Messages/Logs
Microsoft-Windows-AppModel-Runtime/Admin
Event ID 215:
0x80070020: cannot create the Desktop AppX container for package Claude_<full>_x64__pzs8sxrjxfjjc due to an error converting the job
Event ID 208:
0x80070020: cannot create the process for package Claude_<full>_x64__pzs8sxrjxfjjc due to an error setting up the runtime. [LaunchProcess]
HRESULT 0x80070020 = ERROR_SHARING_VIOLATION
User-facing dialog (Portuguese Windows):
"Há um outro programa usando este arquivo no momento."
referencing C:\Program Files\WindowsApps\Claude_<version>_x64__pzs8sxrjxfjjc\...
Full event log dumps, Get-AppxPackage output, service states, HCS/HNS state, and Claude logs are included in the attached claude-diag-<timestamp>.zip.
Steps to Reproduce
Not deterministic on demand. Observed pattern:
- Use Claude Desktop normally for a session.
- App crashes (any cause — observed after Cowork session, after sleep/wake, after Windows update notification).
- Attempt to relaunch from Start menu / taskbar.
- Error dialog appears: "Há um outro programa usando este arquivo no momento" referencing
C:\Program Files\WindowsApps\Claude_<version>_x64__pzs8sxrjxfjjc\.... - Event Viewer →
Microsoft-Windows-AppModel-Runtime/Adminshows EventID 215 + 208 with HRESULT0x80070020.
Already attempted (none recover without logoff/reboot)
Reset-AppxPackage Claude_pzs8sxrjxfjjc(elevated)Get-AppxPackage Claude_pzs8sxrjxfjjc | Reset-AppxPackageAdd-AppxPackage -Register "<install>\AppxManifest.xml" -DisableDevelopmentModeRestart-Service AppXSvc, ClipSVC, AppReadiness, vmcompute, CoworkVMService(in various orders)taskkillon allclaude*,cowork-svc*,parsecd*,chrome-native-host*processes- Verified
hcsdiag listis clean (no orphan compute systems) - Verified
handle.exereports no userspace handles into the install dir
Only logoff + login (or reboot) recovers the launch path.
Claude Model
None
Is this a regression?
Yes, this worked in a previous version
Last Working Version
_No response_
Claude Code Version
N/A — this is Claude Desktop on Windows, not Claude Code
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
PowerShell
Additional Information
Component involved
Claude Desktop bundles a custom Windows service CoworkVMService (executable: cowork-svc.exe) that creates a sandbox Linux VM via HCS (same API used by Hyper-V / WSL2 / Windows Sandbox). The smol-bin.x64.vhdx file in the install directory is that VM's disk.
Suspected root cause: when the Claude desktop process crashes during startup, the kernel-side Silo/Job cleanup does not run, leaving an orphaned handle in the user session. AppX activation for subsequent launch attempts hits ERROR_SHARING_VIOLATION when trying to convert a fresh Job Object into a Silo bound to the same package family in the same session.
Relationship to other issues
- #49655 —
0x80073CF6ERROR_PACKAGES_IN_USEfrom kernel locks held bycowork-svc.exeon Helium hive files; "only full reboot releases the kernel-level locks". Same cleanup-on-crash defect, observed at MSIX-deployment layer instead of activation layer. - #50825 — Launch failure on Windows 11 Pro 25H2 with v1.3109.0.0; HCS reports
Invalid JSON document '$'on VM shutdown. SubsequentCoworkVMServicestarts succeed but Claude Desktop still fails to launch — service is healthy, app-to-service handoff or stored state is wedged. - #25914 —
main.logis 0 bytes because the app crashes before logging starts. Same "process briefly created then container destroyed" signature. - #28231 — "No graceful fallback when CoworkVMService fails — the entire app crashes rather than launching in chat-only mode." Suggests the app's failure path is itself the trigger for the Silo leak.
Already attempted
Reset-AppxPackage Claude_pzs8sxrjxfjjc(elevated)Get-AppxPackage Claude_pzs8sxrjxfjjc | Reset-AppxPackageAdd-AppxPackage -Register "<install>\AppxManifest.xml" -DisableDevelopmentModeRestart-Service AppXSvc, ClipSVC, AppReadiness, vmcompute, CoworkVMService(in various orders)taskkillon allclaude*,cowork-svc*,parsecd*,chrome-native-host*processes- Verified
hcsdiag listis clean (no orphan compute systems) - Verified
handle.exereports no userspace handles into the install dir
Only logoff + login (or reboot) recovers the launch path.
Asks of engineering
- Confirm whether the Silo/Job cleanup-on-crash defect is the root cause.
- Provide a way to clear the orphaned handle without logoff/reboot (e.g., a documented PowerShell sequence or a flag in the app).
- Improve the user-facing error message — the current "another program is using this file" is actively misleading and sends users on a wild goose chase looking for file locks that don't exist.
- Consider the chat-only fallback already requested in #28231 — it would also avoid this leak path.
Happy to provide additional traces (ETW for AppXDeploymentServer or Microsoft-Windows-AppModel-Runtime, WPR captures of a failed launch) on request.
Environment
- OS: Windows 11 Pro
<build> - Claude Desktop:
Claude_<version>_x64__pzs8sxrjxfjjc(MSIX, installed via claude.ai/download → MSIX bootstrapper) - Diagnostic ZIP:
claude-diag-<timestamp>.zip(attached) — includes EventLog dumps forAppModel-Runtime/Admin,AppXDeploymentServer/Operational,Hyper-V-Compute-Operational, fullGet-AppxPackageoutput, service states, HCS/HNS state, and Claude logs.
Note on this template
This bug report concerns Claude Desktop on Windows, not Claude Code. The closest matching repo for filing the report appears to be this one. The "Claude Code Version" field has been filled with N/A accordingly, and the OS / Platform fields have been set to the closest available values.
34 Comments
Cross-linking with #49655. This may be a related Windows AppX/MSIX container-lock symptom. In the #49655 repro, the visible error was also
Another program is currently using this file, and the recoverable lock source was running Claude package processes underC:\Program Files\WindowsApps\Claude_*plusCoworkVMService.Workaround/details: https://github.com/anthropics/claude-code/issues/49655#issuecomment-4498317708
This may not cover the orphaned Silo/Job Object case completely, but it is worth linking because both symptoms surface as AppX/WindowsApps sharing violations after update/relaunch.
Corroborating report from a second affected machine — and a new data point that discriminates between the two leading theories.
I hit this exact signature (208 + 215,
0x80070020, only sign-out/reboot recovers) on every in-place MSIX update, and ran a controlled test that I think narrows the root cause.Environment
Claude_pzs8sxrjxfjjc1.11187.1.0→1.11847.5CoworkVMService(cowork-svc.exe)Signature (identical to this issue)
Microsoft-Windows-AppModel-Runtime/Admin, every failed launch:0x80070020: Cannot create the process for package Claude_<ver>_x64__pzs8sxrjxfjjc ... [FinishPackageActivation]0x80070020: Cannot create the Desktop AppX container ... because an error was encountered converting the job.Dialog: path in the title bar, body "Another program is currently using this file."
claude.exenever spawns. Sign-out/login or reboot clears it every time.NEW: a pre-update CoworkVMService mitigation does NOT prevent the wedge
The competing theory (#57221) is that the AutoStart
CoworkVMServiceowns the package Job Object across the version transition, so neutralizing it before the update should help. I tested that directly:Before clicking "Relaunch to update", as Administrator, with Claude still running:
CoworkVMServicestart type to Disabled (via SCM asNT AUTHORITY\SYSTEM, since the service DACL blocksSet-Servicefor Administrators)Stop-Service CoworkVMService -Forcecowork-svc.exe,parsecd,chrome-native-hostResult: the post-update launch still wedged with the same 208/215 /
0x80070020, and a reboot was again required.Since the service was disabled, stopped, and process-killed before the file swap, the "running service owns the Job Object" path is eliminated for this signature. That leaves the model described in this issue: the new version crashes during its first launch, kernel-side Silo/Job cleanup does not run, and the orphaned handle bound to the package family persists until the session is torn down (sign-out/reboot). The fix needs to be in the launch/crash path, not in service startup config.
Also ruled out on this machine (none prevented or recovered it)
Defender (real-time, BAFS, MAPS, sample submission, Tamper Protection all off); Smart App Control (Eval;
CodeIntegrity/Operationalempty during repro — no 3076/3077/3091/3092); SmartScreen for Apps (Off); ASR (none configured); Controlled Folder Access (Disabled); static file lock (File.OpenFileShare.Nonesucceeds,handle.exefinds no holders);Reset-AppxPackage;Add-AppxPackage -Register -ForceApplicationShutdown; restart ofAppXSvc/ClipSVC/AppIDSvc/StateRepository/vmcompute; Explorer + RuntimeBroker + ApplicationFrameHost recycle; deleting the orphan prior-version WindowsApps folder; stoppingCoworkVMServiceafter the wedge.Asks (same as OP, reinforced)
CoworkVMService/the VM fails, launching chat-only would avoid the crash that appears to trigger the leak.Happy to provide ETW captures (
AppModel-Runtime,AppXDeploymentServer/Operational,Hyper-V-Compute-Operational) of a failed post-update launch on request.Same failure on Windows 11 x64 (
Claude_1.12603.1.0_x64__pzs8sxrjxfjjc), triggered by an MSIX auto-update rather than a crash, but the end state is identical to this report: orphaned Silo/Job →0x80070020inMicrosoft-Windows-AppModel-Runtime/Admin(Event 215 "error encountered converting the job" + Event 208 "configuring runtime / LaunchProcess") → the process is created and added to the container, then the container is destroyed and the app dies before any window. Zero entries in...\LocalCache\Roaming\Claude\Crashpad\reports, confirming it dies at the container layer, not in app code.Confirming your finding that
Add-AppxPackage -Registerdoes NOT recover — it repairs the package registration (status → 0x0) but the leaked silo hives stay locked, so the app is still unlaunchable. (This is why theAdd-AppxPackage -Registerworkaround in #59934 is insufficient for this signature.)Re your ask #2 — a way to clear the orphaned handle without sign-out/reboot
This worked here. The leaked Silo surfaces as orphaned registry hives under
\REGISTRY\WC\Silo<guid>...(visible inHKLM\SYSTEM\CurrentControlSet\Control\hivelist) that hold the package'sSystemAppData\Helium\User.datandUserClasses.datopen —CreateFileon them returnsERROR_SHARING_VIOLATION (32). Force-unloading just those hives releases the lock:\REGISTRY\WC\Silo...entry:NtUnloadKey2(<OBJECT_ATTRIBUTES of the silo hive path>, REG_FORCE_UNLOAD).0xC0000022 STATUS_ACCESS_DENIEDon these even withSeRestorePrivilegeenabled — they must be unloaded asNT AUTHORITY\SYSTEM(e.g. via a one-shot scheduled task created with/RU SYSTEM /RL HIGHEST), withSeRestorePrivilege+SeBackupPrivilegeenabled in the SYSTEM token.After the unload:
hivelistshows no Claude silos, the hive files open cleanly, and Claude Desktop launches normally viashell:AppsFolder\<PackageFamily>!Claude— no reboot, no sign-out, every other app left running. Verified: post-unload launch loggedCreated process ... for application Claudewith no0x80070020.So the recovery that holds when re-register fails is: re-register (to fix the registration) + SYSTEM force-unload of the leaked
\REGISTRY\WC\Silo...hives. Ideally activation should detect and reset a stale Silo for the package family before failing, as you suggest.(Full writeup with the complete event-log signatures was filed separately; closing that as a duplicate of this issue.)
Still reproduces on the latest version — Claude Desktop 1.14271.0 (sideloaded MSIX)
Adding a fresh data point confirming this is not fixed. The signature is identical to the OP and it reproduces on every auto-update for me, including the most recent one (which postdates the closed duplicates #67911 / #59934 / #48003).
Environment
Claude_1.14271.0.0_x64__pzs8sxrjxfjjc(sideloaded MSIX, publisher "Anthropic, PBC")MSIX detected: windowsStore=true, appPathMatch=true, source=windowsStore1.13576.4.0 → 1.14271.0.0Timeline (single auto-update, 2026-06-22, local time)
| Time | Source | Event |
|---|---|---|
| 11:50:43 | AppXDeploymentServer/Operational
[400]|Addoperation — new MSIX staged (Claude-c8f4d811….msix), old version still running || 12:20:03 | app
logs\main.log|beforeQuitForUpdate handler fired, going down for update|| 12:20:03 | AppXDeploymentServer/Operational
[603]|Started deployment RegisterByPackageFamilyName … Claude_pzs8sxrjxfjjc and Options ForceApplicationShutdownOption|| 12:20:35 | AppXDeploymentServer/Operational
[400]/[613]|Register operation … Claude_1.14271.0.0 … finished successfully(Overall time: 31891 ms) — package update itself SUCCEEDS || 12:20:35–36 | AppModel-Runtime/Admin
[215]/[208]| container creation FAILS (see below) — 0–1s after the Register succeeded || 12:20–13:11 | — | repeated failed launches; zero entries in
…\LocalCache\Roaming\Claude\Crashpad\reportsand no appmain.logactivity → dies at the container layer, not in app code || 13:11:04 | AppModel-Runtime/Admin
[201]| after a full reboot:Created process … for application Claude_pzs8sxrjxfjjc!Claude→ app launches normally as 1.14271.0 |AppModel-Runtime/Admin failure signature (every failed launch)
(
0x80070020=ERROR_SHARING_VIOLATION)Recurs every update. The exact same
[215]/[208]0x80070020pair is present for the previous version too — packageClaude_1.13576.4.0_x64__pzs8sxrjxfjjcon 2026-06-18 (Events 16:24:14 → 16:29:03, multiple failed retries before recovery).Notable: the Register operation runs with
ForceApplicationShutdownOption, so the old instance is force-killed and the new container is created almost immediately — consistent with the Job Object / Silo not having been released yet (the race described in this issue and #59934). Only a reboot/logoff has reliably recovered it on my machine; I have not yet attempted the SYSTEM\REGISTRY\WC\Silo…force-unload workaround from the thread above.Confirming this on build Claude_1.14271.0.0_x64__pzs8sxrjxfjjc, Windows 11 Pro 26200. Adding a data point because
my case diverges from the reported recovery path in a way that may matter.
Key divergence: a full reboot did NOT recover for me. The issue body lists logoff/reboot as working recovery; in my
case it did not.
Sequence I went through:
0x80070020 initially.
sharing-violation errors entirely.
Event 217 (Destroyed Desktop AppX container) entries in Microsoft-Windows-AppModel-Runtime/Admin within a single
second, all for this package, with zero Event 215/208 and zero sharing-violations. The container is created and
torn down in a tight loop until the app gives up.
Additional observations at this stage:
created fresh but stay completely empty; the process dies at the earliest Electron bootstrap, before anything is
written.
So there appear to be at least two failure modes in this family: the orphaned-Silo variant that a reboot clears,
and a second state where the container create/destroy loop persists across a clean reinstall and reboot. Echoing
the request for a chat-only fallback when the Cowork container layer cannot initialize; the app is currently
unusable with no recovery path short of a downgrade.
Reproduced the SYSTEM hive-unload fix a second time on the next auto-update (now
1.15962.0.0). A few practical refinements for anyone trying it — these are the difference between "it worked" and "it silently did nothing":HKLM\SYSTEM\CurrentControlSet\Control\hivelist: each value's name is the\REGISTRY\WC\Silo<guid>...key to unload, the data is the backing hive file. Unload the ones whose data path contains the Claude package (...\Packages\Claude_<pfn>\...Helium\.../...\WindowsApps\Claude_<ver>\...).NT AUTHORITY\SYSTEM(elevated admin still gets0xC0000022 ACCESS_DENIEDeven withSeRestorePrivilege+SeBackupPrivilege). A one-shot scheduled task with/RU SYSTEM /RL HIGHESTworks — but on a laptop the task staysStatus: Queuedand silently never runs while on battery. AC power is required (a task-XML<DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>did not override this for me). Plug in first, then run.AppModel Runtime status for package Claude_... successfully updated to 0x0), so only the silo unload was needed — noAdd-AppxPackage -Registerat all. Worth checking the package's registration status first; if it's already0x0, the leaked silos are the sole blocker.Success signal is the silo count, not any log: after the unload
hivelistshows zero Claude silos,User.dat/UserClasses.datopen cleanly (noERROR_SHARING_VIOLATION), andshell:AppsFolder\<PFN>!Claudelaunches withCreated process ... for application Claudeand no0x80070020— again no reboot, no sign-out, every other app left running.Adding another current x64 repro. I did not open a new issue because this issue matches the failure exactly.
Environment:
10.0.26200, 64-bitClaude_1.17377.1.0_x64__pzs8sxrjxfjjcGet-AppxPackage ClaudereportsStatus: OkObserved after upgrade from
Claude_1.15962.1.0_x64__pzs8sxrjxfjjctoClaude_1.17377.1.0_x64__pzs8sxrjxfjjc:1.15962package was moved aside and1.17377registered successfully.CoworkVMService/cowork-svc.exe; noClaude.exeUI process survives.%APPDATA%\Claude\logs\main.logdoes not advance. The last normal entry remains from the prior update path:beforeQuitForUpdate handler firedon 2026-06-28.Microsoft-Windows-AppModel-Runtime/Adminrepeats the same pair on every launch:0x80070020: Cannot create the Desktop AppX container for package Claude_1.17377.1.0_x64__pzs8sxrjxfjjc because an error was encountered converting the job.0x80070020: Cannot create the process for package Claude_1.17377.1.0_x64__pzs8sxrjxfjjc because an error was encountered while configuring runtime. [LaunchProcess]CoworkVMServicecleanly does not recover launch.C:\Program Files\WindowsApps\Claude_1.17377.1.0_x64__pzs8sxrjxfjjc\app\Claude.exefails with:The process cannot access the file because it is being used by another process.app\Claude.exereports no owner:RmGetList result=0 needed=0 count=0 rebootReasons=0.Another program is currently using this fileagainst the newClaude_1.17377.1.0...package path.So this still reproduces on the current x64 MSIX package after a successful package upgrade and after
CoworkVMServiceis stopped; it is not just a stale1.15962install or a visible userspace file-lock problem.Follow-up on the
Claude_1.17377.1.0_x64__pzs8sxrjxfjjcrepro above: the no-reboot SYSTEM hive-unload recovery described in this thread did work here.Recovery details:
HKLM\SYSTEM\CurrentControlSet\Control\hivelistand targeted only\REGISTRY\WC\Silo*hives whose backing path contained\Packages\Claude_pzs8sxrjxfjjc\.NT AUTHORITY\SYSTEMwithSeRestorePrivilegeandSeBackupPrivilegeenabled.NtStatusHex: 0x00000000; one COM hive returned0xC0000121on pass 1 and then unloaded successfully on pass 2.hivelistshowed zero remainingClaude_pzs8sxrjxfjjcWC/Silo hives.shell:AppsFolder\Claude_pzs8sxrjxfjjc!Claudethen succeeded without logoff/reboot: AppModel-Runtime/Admin logged Event ID 201Created process ... for application Claude_pzs8sxrjxfjjc!Claude,Claude.exestayed alive, and%APPDATA%\Claude\logs\main.logadvanced again.Impact note, strongly stated: logoff/reboot must not be treated as an acceptable user recovery path for this. Users should not have to tear down an entire Windows session, lose active work, kill unrelated dev tools, break running terminals/processes, and burn time reconstructing state because Claude Desktop's MSIX/AppX update or launch path leaves the machine wedged. This is especially damaging for people running long-lived coding sessions, IDEs, terminals, browsers, local services, and other agent tools. A desktop app update failure should not make the only reliable official recovery "restart your computer." Anthropic needs to prevent this state or ship a supported no-reboot recovery path.
Adding a follow-up from the same Windows/MSIX failure class, now on
Claude_1.18286.0.0_x64__pzs8sxrjxfjjc.Environment:
26200, x64Claude_1.18286.0.0_x64__pzs8sxrjxfjjcGet-AppxPackage ClaudereportedStatus: OkClaude_pzs8sxrjxfjjc!ClaudeCoworkVMServiceexisted asWIN32_PACKAGED_PROCESS,AUTO_START, binary underC:\Program Files\WindowsApps\Claude_1.18286.0.0_x64__pzs8sxrjxfjjc\app\resources\cowork-svc.exeFailure signature:
Claude.exeUI process.CoworkVMService/cowork-svc.exe.Microsoft-Windows-AppModel-Runtime/Adminrepeated the same pair:0x80070020: Cannot create the Desktop AppX container for package Claude_1.18286.0.0_x64__pzs8sxrjxfjjc because an error was encountered converting the job.0x80070020: Cannot create the process for package Claude_1.18286.0.0_x64__pzs8sxrjxfjjc because an error was encountered while configuring runtime. [LaunchProcess]/[FinishPackageActivation]C:\Program Files\WindowsApps\Claude_1.18286.0.0_x64__pzs8sxrjxfjjc\app\claude.exefrom PowerShell failed before app logging withUnknown error (0xc0070020).Attempts that did not recover launch:
After each of those, launch still recreated the packaged service and then failed again with Event ID 215/208
0x80070020.Recovery that did work without logoff or reboot:
Important detail: this did not appear to repair the MSIX/AppX state in place. It changed the installed Desktop distribution:
com.squirrel.AnthropicClaude.claudeC:\Users\<user>\AppData\Local\AnthropicClaude\app-1.18286.0\claude.exeCoworkVMServicewas no longer installed (sc qc CoworkVMServicereturned service not found)claude.exestayed alive and responsive after launch.0x80070020AppModel failures appeared after the Squirrel install launch.So for this
1.18286.0.0incident,winget repairwas insufficient, while uninstall/install through the currentAnthropic.Claudewinget manifest restored Desktop launch by moving off the failing MSIX/AppX packaged-service path. I am not treating this as a fix for the leaked MSIX silo/job state; it is a useful no-reboot recovery data point and may have feature-set implications because the packaged service is absent afterward.<html>
<body>
<!--StartFragment--><html><head></head><body><hr>
<h1>Windows: Crash exit leaves stale AppContainer job (<code>Container_Claude_...</code>) held by <code>svchost.exe</code>, blocking relaunch with "Another program is currently using this file" — only reboot clears it</h1>
<p><strong>Version:</strong> Claude_1.20186.7.0 (Windows)</p>
<h2>What's wrong</h2>
<p>After Claude Desktop terminates unexpectedly (crash, not a normal close), attempting to reopen the app fails:</p>
<ol>
<li>
<p><code>cowork-svc.exe</code> spawns in Task Manager (~13.6 MB), then a popup appears: <code>Another program is currently using this file</code>, referencing <code>C:\Program Files\WindowsApps\Claude_1.20186.7.0_...</code> — main window never opens.</p>
<p><em>(attach screenshot here — the dialog you shared earlier)</em></p>
</li>
<li>
<p>On at least one occasion, a "Please wait a moment, we are updating the app" message appeared instead, then nothing further happened (no completion, no error, no retry).</p>
</li>
</ol>
<h2>Root cause (identified via Resource Monitor / Process Explorer)</h2>
<p>No visible Claude process holds the lock. Instead, <code>svchost.exe</code> (running <code>netsvcs -p</code>) holds a Job handle to <code>\Container_Claude_1.20186.0.0_x...</code> — the AppContainer job object for the packaged app. This job object survives the crash and is never released, blocking the next launch attempt from acquiring the package's file lock.</p>
<p>A related lead: <code>services.exe</code> holds multiple Semaphore handles named <code>DaxUseSemaphore_Claude_1.20186...</code> (tied to the Desktop Bridge / Desktop App Converter runtime used to run the packaged Win32 app). These may be contributing to, or be a symptom of, the same underlying teardown failure.</p>
<h2>Tested (all failed to resolve without reboot)</h2>
<ul>
<li>Manually killing <code>cowork-svc.exe</code> in Task Manager — no effect</li>
<li>Restarting the AppX Deployment service (<code>Restart-Service -Name AppXSvc -Force</code>) — no effect</li>
<li>Confirmed via <code>Get-AppxPackage -Name "Claude" | Select Name, PackageFullName, Status</code> that the package registration itself is healthy (<code>Status: Ok</code>) — not a corrupted registration issue</li>
<li>Killing the specific <code>svchost.exe</code> PID holding the <code>Container_Claude_...</code> job handle (via Resource Monitor) — Windows immediately respawned a new <code>svchost.exe</code> under a new PID to take over the same service group; the block persisted</li>
<li>Full system reboot → only fix that works</li>
</ul>
<h2>Confirmed underlying cause (Event Viewer + folder check)</h2>
<p>Windows Event Viewer shows Event ID 2562 from <code>Microsoft-Windows-AppXDeploymentServer/Operational</code>, logged around the time of a failed relaunch attempt:</p>
<pre><code>MSIXDeployment / windows.applicationData / DeleteMachineFolder
Package Claude_1.20186.0.0_x64__pzs8sxrjxfjjc removed machine folder
C:\ProgramData\Microsoft\Windows\AppRepository\Families\ApplicationData\Claude_pzs8sxrjxfjjc:
The system cannot find the path specified.
</code></pre>
<p>Manually verified afterward:</p>
<pre><code class="language-powershell">Test-Path "C:\ProgramData\Microsoft\Windows\AppRepository\Families\ApplicationData\Claude_pzs8sxrjxfjjc"
Returns: False
</code></pre>
<p>This folder is missing even outside the crash window (confirmed while the app was otherwise stuck/unable to launch), not just transiently during the failed relaunch. This means:</p>
<ul>
<li>On relaunch after a crash, Windows' AppX deployment service attempts an MSIX servicing operation that includes a <code>DeleteMachineFolder</code> step against this path.</li>
<li>That step fails immediately because the folder doesn't exist.</li>
<li>The deployment operation appears to error out mid-flight without rolling back cleanly, leaving the AppContainer job object (<code>Container_Claude_...</code>, see below) stuck in a "still in use" state under <code>svchost.exe</code>'s job tracking.</li>
<li>Because the underlying missing-folder condition is persistent (not cleared by reboot), this will recur on every subsequent crash until the app's data folder is properly repaired/recreated.</li>
</ul>
<h2>Timeline reconstructed from <code>C:\ProgramData\Claude\Logs\cowork-service.log</code></h2>
<p>The service log (not reviewed at the time of the original write-up) corroborates the crash/stuck-relaunch pattern with a precise, quantified timeline for one occurrence on 2026-07-13:</p>
Time | Preceded by clean stop? | Notes
-- | -- | --
(before 21:16) | — | Original unexpected app closure. Not visible in this log — cowork-svc.exe crashing doesn't log its own death.
21:16:01 | ✅ (stop at 21:16:00) | User manually stopped the service as a troubleshooting step, then restarted it — relaunch still fails.
21:16:34 | ❌ | First occurrence of the no-clean-stop signature.
21:19:11 | ❌ |
21:19:16 | ✅ (stop at 21:19:12) |
21:22:52 | ❌ |
21:25:09 | ✅ (stop at 21:25:09) |
21:25:40 | ❌ |
21:26:54 | ✅ (stop at 21:26:53) |
21:32:05 | ❌ |
21:47:32 | ❌ |
21:47:33 – 22:21:24 | — | 34-minute gap, nothing logged — likely the window spent on the workarounds listed above, before proceeding to a full reboot.
22:21:24 | ❌ (different cause — see below) | This attempt succeeded — app launched normally, matching "only reboot fixed it." No-stop here reflects the OS killing everything at reboot, not a repeat of the stuck-lock failure.
<p><strong>Net result:</strong> 7 of the 11 restarts during troubleshooting (21:16:34, 21:19:11, 21:22:52, 21:25:40, 21:32:05, 21:47:32, 22:21:24) show no clean stop logged beforehand. Of those, 6 (all but the final, post-reboot one) share the same mechanism: the previous attempt's <code>cowork-svc.exe</code> never registered a proper shutdown before the next attempt started. The 4 "clean stop" restarts (21:16:01, 21:19:16, 21:25:09, 21:26:54) are the moments something in between — a manual kill, or a Windows timeout — let it register a stop before the next attempt.</p>
<p>This is the more precise failure mode: it isn't just "the app crashed once, then relaunch fails" — it's "when the launch hits the file lock, the service itself doesn't shut down cleanly, so each retry piles a new attempt on top of a service that never cleanly exited from the last one." That's consistent with the AppContainer job staying alive in the background even though nothing appears to be running, and it's a stronger signal than a simple one-time crash: the failure to open <em>is itself</em> what prevents a clean stop, which is exactly what you'd expect if the stuck job/file-lock is blocking the shutdown path too, not just the startup path.</p>
<p>One log line present on every single start (both clean and crashed) is worth flagging separately in case it's relevant: <code>Warning: failed to open service for recovery config: Access is denied.</code> This appears consistently regardless of shutdown type and may be an unrelated SCM permission quirk — but it's worth Anthropic ruling out explicitly rather than assuming it's benign.</p>
<h2>Post-reboot contrast</h2>
<p>After rebooting, the app launched successfully. The <code>CoworkVMService</code> event logged on this successful start was simply "Claude VM Service starting" with a reference to detailed logs at <code>C:\ProgramData\Claude\Logs\cowork-service.log</code> — no folder-not-found or deployment error accompanied it. This is a clean contrast to the failed relaunch attempts, which specifically triggered the <code>DeleteMachineFolder</code> path-not-found error.</p>
<p>This strongly suggests a repair or reinstall (not just a reboot) is needed to permanently resolve this, since reboot only clears the immediate stuck job/lock state — it does not recreate the missing <code>ApplicationData</code> folder, so the same failure will repeat after the next crash.</p>
<h2>Why this matters</h2>
<p>Even directly targeting and killing the process holding the job handle doesn't release it — Windows simply reassigns the service group to a fresh <code>svchost.exe</code> instance rather than releasing the stale job object. This indicates the AppContainer job's state is tracked at a level that isn't cleared by process-level intervention, only by a full session/kernel reset (reboot).</p>
<p>The <code>cowork-service.log</code> timeline above sharpens this conclusion: the failure mode isn't just "the app crashed once, and relaunch happens to fail afterward." It's that <strong>the failed-launch path itself doesn't shut the service down cleanly</strong> — 6 of 7 no-clean-stop restarts occur specifically when retrying on top of the stuck file lock, not as isolated one-off crashes. That means the same stuck-lock condition that blocks startup is also preventing a clean stop, which is consistent with the AppContainer job never being released: the job stays alive in the background even though nothing user-visible appears to be running, so neither the next launch attempt nor the current instance's own shutdown can complete cleanly.</p>
<p>Sign-out was not tested as a lighter-weight alternative to reboot, since it also risks unsaved app state — but if it were confirmed to work, that would narrow the stale state to session-level rather than full boot-level. Untested here, but worth Anthropic checking as a possible faster user-facing recovery path if the underlying job can't be fixed to release cleanly on crash.</p>
<h2>Ask</h2>
<ul>
<li>The app (or its installer/updater) should ensure <code>C:\ProgramData\Microsoft\Windows\AppRepository\Families\ApplicationData\Claude_pzs8sxrjxfjjc</code> exists and is valid, and should tolerate/recreate it if missing, rather than letting the <code>DeleteMachineFolder</code> MSIX servicing step fail outright when the path is absent.</li>
<li>The AppX deployment operation triggered on relaunch should roll back cleanly if a step like <code>DeleteMachineFolder</code> fails, instead of leaving the AppContainer job object (<code>Container_Claude_...</code>) in a stuck "in use" state.</li>
<li>Would help to know if the failed-launch path skips releasing the AppContainer job object when it hits the stuck file lock, and whether that can be fixed so a clean job teardown happens even when launch fails (not just on a graceful exit). The service log shows 6 of 7 no-clean-stop restarts occurring specifically on retries against the stuck lock — i.e. the failure to open is itself preventing a clean shutdown, not just blocking startup. Worth checking whether <code>cowork-svc.exe</code> can be made to log (or attempt) cleanup even when a launch attempt fails partway through.</li>
<li>Is there a way to force-release the job/lock via a repair/reset routine (similar to <code>wsreset</code> for other AppX apps) without requiring a full OS reboot, once the missing-folder condition is fixed?</li>
<li>Worth investigating whether the <code>DaxUseSemaphore_Claude_...</code> semaphores held by <code>services.exe</code> are related or a separate leak.</li>
<li>Worth ruling out whether <code>Warning: failed to open service for recovery config: Access is denied.</code> (logged on every single service start, clean or crashed) is related or a separate, benign permission issue.</li>
</ul>
<h2>Suggested workaround for other affected users</h2>
<p>After the next unavoidable reboot, run a Repair (not just relaunch) via Settings → Apps → Installed apps → Claude → Advanced options → Repair, to attempt to recreate the missing <code>ApplicationData</code> folder. If Repair doesn't recreate it, a full uninstall/reinstall may be required — a plain reboot only clears the immediate stuck lock, it does not fix the underlying missing folder, so the same crash-triggered lock is expected to recur.</p>
<h2>Environment</h2>
<ul>
<li>OS: Windows 11 Home, build 10.0.26200</li>
<li>Claude Desktop version: 1.20186.7.0 (confirmed current via <code>Get-AppxPackage -Name "Claude"</code>)</li>
<li>Trigger: unexpected/crash shutdown of the app (not a normal close)</li>
<li>Confirmed via: Task Manager, Resource Monitor (Associated Handles), Process Explorer (Sysinternals), <code>C:\ProgramData\Claude\Logs\cowork-service.log</code></li>
</ul></body></html><!--EndFragment-->
</body>
</html>
+1 — we hit what looks like the same post-crash lockout, with extra data that may help.
Windows 11 Pro 26200, Claude Desktop (MSIX
Claude_1.24012.9.0_x64__pzs8sxrjxfjjc). Timeline on 2026-07-27:Application Hangonconhost.exebefore each crash).Microsoft-Windows-AppXDeploymentServer/Operationallogged cascades of404 ... 0x80073D02(files in use),8107(package integrity validation) and8104(Trust Label,0x80070057) — i.e. Windows was attempting deployment operations against the package while orphaned child processes still held package files open. The repair only succeeded during the restart window.So from our side the sequence is: subagent process storm → app crash without cleanup → orphaned handles keep the package "in use" → Repair/Reset/relaunch all fail until session teardown. Consistent with the orphaned Silo/Job hypothesis here. Happy to provide Event Viewer exports.
Confirming another occurrence of the orphaned Silo/Job launch failure, as a follow-up to the GPU-crash → MSIX brick reports in #81840 / #81756.
Environment: Windows 11 Pro 26200, Claude Desktop (MSIX). 5th GPU-crash →
Modified, NeedsRemediationbrick on this machine since 2026-07-28.Timeline (2026-08-04, JST):
GPU process gone: reason: 'crashed'in main.log, app version 1.24012.9.0). Package immediately becameModified, NeedsRemediation.Add-AppxPackage -ForceUpdateFromAnyVersion -ForceApplicationShutdownwith the latest official MSIX → package updated to 1.24012.11.0, Status: Ok.Microsoft-Windows-AppModel-Runtime/AdminEventID 215:0x80070020: ... error during job conversion, cannot create Desktop AppX container for package Claude_1.24012.11.0_x64__pzs8sxrjxfjjc(twice per attempt)0x80070020: ... cannot create process [LaunchProcess]Ruled out: the packaged Windows service (
CoworkVMService/ cowork-svc.exe). From an elevated shell I stopped the service, verified the process was gone, and retried activation — identical 0x80070020 job-conversion failure with zero package processes running. So this is not a process/file lock that can be cleared from user land, consistent with the orphaned Silo/Job diagnosis in the OP.Will follow up to confirm whether logoff/reboot restores activation (expected per this issue).
Follow-up to my previous report above.
The 2026-08-04 occurrence did recover after a full Windows reboot: Windows booted at 21:47 JST and Claude Desktop 1.24012.11.0 launched successfully at 21:49.
However, the exact Event ID 215/208 +
0x80070020launch failure recurred on 2026-08-05 during the normal auto-update path from 1.24012.11.0 to 1.25927.0.0.Importantly, this recurrence was not preceded by a GPU crash.
Environment
Claude_pzs8sxrjxfjjcClaude_1.25927.0.0_x64__pzs8sxrjxfjjcThe registered installation path is under:
Timeline (2026-08-05, JST)
DeferRegistrationWhenPackagesAreInUse.Claude_1.24012.11.0is still running, soClaude_1.25927.0.0is marked for deferred registration.main.logrecords:``
``beforeQuitForUpdate handler fired, going down for update
TerminateSingleServicefor the oldCoworkVMService.C:\ProgramData\Claude\Logs\cowork-service.logrecords:``
``Graceful shutdown failed, forcing termination:
HcsShutdownComputeSystem failed with HRESULT 0x0/0x80070032
Claude_1.25927.0.0completed successfully.0x80070020during Desktop AppX container/job conversion.RepairAppRegistrationterminates and reinstallsCoworkVMService, then again reports Event 400 success.0x80070020sequence repeats.Current state
Get-AppxPackage -Name Claude: Version1.25927.0.0, StatusOkCoworkVMService: Running / Automatic, using the new1.25927.0.0package pathhcsdiag listshows no remaining compute systemchrome-native-host.exeprocess from the previous version remains alive and its copied binary hash differs from the current package binary, but this appears separate from the AppX job-conversion failureThis recurrence appears to connect the updater/service shutdown problem discussed in #83968 and #84005 with the orphaned Silo/Job activation failure in this issue. Deployment and service replacement both report success, but the user-session AppX activation state is left unusable.
The current occurrence has not yet been cleared by logoff/reboot. I will update again after confirming the recovery result.
Additional diagnostic data confirming the leaked-silo theory, and pinpointing the specific kernel object that stays pinned.
Environment: Claude Desktop
1.25927.0.0(MSIX,Claude_pzs8sxrjxfjjc), Windows 11 26200.8893, x64, Fast Startup disabled.Repro on this machine: the app launches successfully exactly once per boot. After it exits, every subsequent launch fails with "Another program is currently using this file" and the same events you cited:
The pinned object is the package's Helium registry hives
The leaked silo shows up as a measurable, still-mounted pair of package registry hives:
Both are locked. Restart Manager (
RmGetList) attributes the handles to:Because the holders are the kernel and the
Registryprocess, no amount of killing user-mode processes can release them — which I think explains a lot of the confusion across the duplicate reports.Control experiment: locked hives ⟺ app running, Claude is the sole exception
I tested
User.datlock state across all 25 installed MSIX packages on this machine and cross-referenced whether each app was running:| Result | Count | Examples |
|---|---|---|
| Locked and running | 5 | MSTeams, WhatsApp, WindowsTerminal, WidgetsPlatformRuntime, Client.WebExperience |
| Unlocked and not running | 19 | OpenAI.Codex, Copilot, Paint, Notepad, Photos, ScreenSketch, … |
| Locked and NOT running | 1 | Claude |
The invariant holds perfectly for every package except Claude. Its hives are stranded — mounted with no process to justify them.
No process is running in the Claude container
Enumerating by package identity rather than by path —
GetPackageFamilyName()on every PID, sinceGet-Processcannot read.Pathfor protected packaged processes — returns zero processes in the Claude container, while correctly listing 60+ for Teams, Outlook, WhatsApp, etc.This rules out the "orphaned packaged child process pins the container" explanation offered in #73107, #84792 and #77379, at least for this reproduction. There is nothing left to kill; only the hive mount survives.
Verified non-fixes
All performed elevated, with the app not running, re-testing hive lock state after each:
| Attempt | Hives released? |
|---|---|
|
Stop-Service CoworkVMService -Force(confirmed Stopped, process gone) | No ||
Restart-Service AppXSvc -Force| No ||
Add-AppxPackage -DisableDevelopmentMode -Register ...\AppxManifest.xml(reported success) | No || Full reboot | Yes |
Note this contradicts the suggestion in #49655 that the Helium hive locks are held by
cowork-svc.exe: I stopped that service completely and confirmed the process was gone, and the hives stayed locked.cowork-svc.exeis not the holder — the kernel is.One-line detection
Useful for anyone triaging this, and as a post-fix regression check — with Claude not running, this should print
UNLOCKED:Red herrings ruled out on this machine
In case they're absorbing triage time elsewhere: package registration status is
Ok; ACLs on the package folder are byte-for-byte the same shape as a healthy package (compared against MSTeams);claude.exeitself is not locked (opens cleanly even withFileShare.None); AppxSignature and declared dependencies are fine; Defender has zero detections and no relevant ASR/CFA blocks; and theCode Integrity was unable to load ...\AppxMetadata\CodeIntegrity.cat (0xC000003A)warnings are benign — the OpenAI Codex package logs them too and launches fine, since directly-distributed MSIX packages don't ship that catalog.Also worth flagging: once the app is in this state it writes nothing to
%APPDATA%\Claude\logs\main.log— the last entry is from the final successful launch. Anyone relying on the app's own logs will see no evidence at all; the signal is only inMicrosoft-Windows-AppModel-Runtime/Admin.Ask
Whatever cleans up the silo on exit isn't unmounting these two hives. If teardown can't be made reliable, an explicit unmount (or a self-heal that detects the stranded hives at launch and clears them) would turn a reboot-per-session bug into a non-issue.
3rd occurrence on this machine in 9 days — this time captured end-to-end with event logs: deferred-registration update + slow old-app shutdown → post-update relaunch hits 0x80070020, and the condition then persists (orphaned Job/Silo)
Follow-up to my 2026-08-04 comment. Environment: Windows 11 Pro 25H2 (build 26200), Claude Desktop MSIX updating 1.26832.0.0 → 1.28929.0.0.
Timeline (JST, 2026-08-12)
Addoperation withDeferRegistrationWhenPackagesAreInUse, AppXDeploymentServer Event 603; sourcedownloads.claude.ai). At 08:58:46, Events 638/658: "package could not be updated because the affected app is running" → marked for deferred registration. Correct behavior so far; 1.26832 kept running all day.main.log:beforeQuitForUpdate handler fired, going down for update. Simultaneously the deferredRegisterran (RegisterByPackageFamilyName,ForceApplicationShutdownOption 0).main.logwas still writing at 17:28:50). The old version's Desktop AppX container{C8D22D79-…}was destroyed at 17:29:03 (Event 217), CoworkVMService stopped.0x80070020: … error converting the job— container creation failed) then Event 208 (LaunchProcessfailed). The app never reappeared; no furthermain.logwrites.{99AEB409}was created successfully andcowork-svc.exe(PID 70148) was added to it ("Service ready" in cowork-service.log). So container creation is not blocked wholesale — it is the app's launch that stays broken.shell:AppsFolder\Claude_pzs8sxrjxfjjc!Claude, ~11 minutes later: identical Event 215 ×2 + Event 208 with 0x80070020. So this is not a one-shot race; once hit, the failure persists exactly as described in the OP (orphaned Silo/Job, per-user-session), until sign-out/reboot.Reading of the data
The deferred-registration mechanism itself worked as designed. The failure is in the post-update auto-relaunch racing the teardown of the old version's AppX container job: a heavy Electron instance can take tens of seconds to exit, and the relaunch fired ~1 second after the old container was destroyed, hitting the job-conversion sharing violation. Once that first launch fails, the kernel is left in the known orphaned-Job/Silo state that only sign-out or reboot clears — so a single lost race bricks the app for the rest of the user session.
Suggestion
After
beforeQuitForUpdate, the updater/relaunch step could wait for the old package's Desktop AppX container to be fully destroyed (or retry the launch with backoff when hitting 0x80070020) instead of launching immediately after teardown.History on this machine
Two of the three were triggered by the restart-to-update flow. Likely related: #83932 (auto-update deploying into running claude.exe), #48003 (same 0x80070020 after update).
Independent confirmation on Claude Desktop 1.30096.1.0: five orphaned WC/Silo hives and successful no-reboot recovery
Environment
Failure
After the update, launching Claude displayed:
Windows reported that the Claude package status was Ok, but AppModel-Runtime recorded:
Automatic package re-registration and the Windows Repair operation did not resolve the failure.
Important distinction from a normal lingering-process problem
Despite there being no remaining Claude process, the Windows hivelist contained five Claude-specific registry hives under \REGISTRY\WC\Silo.
These consisted of:
Both User.dat and UserClasses.dat remained exclusively locked. This appears to be an orphaned AppX silo or container state rather than a Claude executable file being used by another ordinary process.
No-reboot recovery
Using the community recovery approach already discussed in this issue, a narrowly restricted helper was run as NT AUTHORITY\SYSTEM. It enabled only the required backup and restore privileges and used NtUnloadKey2 with REG_FORCE_UNLOAD.
Targets were enumerated dynamically. A hive was eligible only when:
No GUIDs, usernames, SIDs, or profile paths were hardcoded.
Result
This recovery method is experimental and community-derived. It should not be treated as a general-purpose registry cleanup operation. Killing System, Registry, or vmcompute would be unsafe and was not done.
The recovery result strongly suggests that the update or immediate post-update relaunch can leave the old Desktop AppX container's WC/Silo hives mounted after its user-mode processes have exited.
Could Anthropic please investigate:
I can provide sanitised diagnostics or the restricted helper source privately if a maintainer needs them.
Confirming this on Windows 11 Pro 10.0.26200, and I have four data points that I don't think are in the thread yet. One of them identifies which container is the orphan, which may point straight at the missing teardown.
1. The trigger was a clean quit-for-update, not a crash
The issue describes the orphan arising after a crash. Mine arose from a completely orderly shutdown.
%APPDATA%\Claude\logs\main.logends with a textbook graceful Electron quit — no exception, no renderer/GPU crash, no truncation:The log then simply ends because the process exited on purpose. 33 seconds later (22:30:02) the first
0x80070020appears, and the app never launched again. Greps across all log rotations forunhandled, renderer/GPU crash markers,quitAndInstall,EPERM,sharing violation,singletonreturn nothing anywhere near the incident.The same
beforeQuitForUpdateflow had succeeded 18 hours earlier on the previous build:2026-08-12 04:30:38 beforeQuitForUpdate→04:31:09 Starting app { appVersion: '1.28929.0' }, a 31-second quit-and-relaunch.So the orphan is not exclusive to the crash path — a normal stealth-update package swap reproduces it. That widens the repro considerably.
2. The orphaned container belongs to the previous package version — probably the key detail
This is the part I haven't seen reported. At logoff, Windows logs the orphan being destroyed and names it:
1.28929.0.0is the OLD build. Its package folder had been removed fromC:\Program Files\WindowsApps\during the 8/13 19:49 update — 34 hours earlier. The container object outlived its own package, its processes, and the entire update.The container GUID epochs make the age visible. The orphan is
{B1E5026D-96CD-…}; every container created after the recovery is{2529xxxx-989D-…}/{BC1Bxxxx-987B-…}. Different epoch, consistent with an object created before the swap and never released.65 seconds after the orphan died, the launch that had failed on every attempt for 34 hours (20 × Event 215 — it fires twice per attempt, so ~10 attempts) succeeded on the first try:
Reading: because the package family name (
Claude_pzs8sxrjxfjjc) is shared across versions, the outgoing build's container holds the family's container slot. The incoming build can never convert its own job to a silo, so every activation returnsERROR_SHARING_VIOLATIONuntil the session dies. If that's right, the bug is a missing container teardown on the outgoing version during a package swap, not anything in the incoming build's startup.3. Version boundary (the report's "Last Working Version" field is blank — here's mine)
Every Event 215 in my entire retained
AppModel-Runtime/Adminlog (1,569 records) belongs to one build:| Version | Installed | Event-215 failures |
|---|---|---|
|
1.26832.0.0| 8/06 | 0 ||
1.28929.0.0| 8/12 | 0 — a true zero, inside the retention window ||
1.30096.0.0| 8/13 16:18 | 0 (superseded 3h later, never activated) ||
1.30096.1.0| 8/13 19:49 | all 20 |Failures began at
1.30096.1.0's first activation attempt, ~2h40m after install. Last known good:1.28929.0.0. Also worth noting: 20 of 20 Event-215s on this machine are Claude — no other packaged app has ever hit "converting the job" here, so this isn't a general AppX-subsystem fault on my box.4.
cowork-svc.execan be ruled out — there's a clean controlI saw #57221 attribute this to
CoworkVMServiceclaiming the Job Object. On this machine that's not it, and the recovery produced an unusually clean natural experiment.First, direct test — with the service stopped and zero package processes alive, and the service's own container confirmed destroyed:
Second, and better:
cowork-svc.exeruns in session 0, which a logoff does not touch. Across the recovery it was the same process instance — same PID, created 07:34:13 — running unchanged during every failure and during the 08:22:14 success. One variable changed between failure and success (the session, and with it the orphaned container), and the service wasn't it.Invoke-CommandInDesktopPackage— a different activation path entirely — fails identically, which places the fault in container creation rather than in any launcher.Two things that may save other people time
603 RegisterByPackageFullName … RepairAppRegistrationOption→649 ACLs repaired successfully … Register next time should succeed→400 finished successfully. It ran ~11 times on my machine and never helped. Anyone matching those register events to the failures should note the millisecond ordering: the register follows the error and is a reaction to it, not a cause.1.30096.1.0.Suggested repro
beforeQuitForUpdate). No crash needed.Microsoft-Windows-AppModel-Runtime/Admin— then log off and inspect the Event 217 at logoff and read which package version the destroyed container names. On my machine it named build N, not N+1.Environment
Happy to pull any further logs if useful — I still have the full deployment and runtime traces from the failure window.
Follow-up with a contrast case from the same machine ~2 hours later: an update swap that went correctly. Since this bug is intermittent, a clean swap sitting next to a failed one on identical hardware may be more useful than another failure report.
A successful swap, same machine, same day
1.30096.5.0staged while I was on1.30096.1.0, and Windows deferred it correctly:I then closed the app by hand and reopened it. The swap applied and the new build launched first try:
Both outgoing-version containers were destroyed before the new one was created — precisely the teardown that did not happen on 8/13. Event 215 count unchanged at 20; the old package folder was removed from
WindowsAppscleanly.The difference — a lead, not a finding
| When | Quit path | Result |
|---|---|---|
| 8/13 22:29 |
[stealth-update] Triggering stealth update after idle timeout— app quit itself while idle | container leaked || 8/15 08:33 | user closed the window by hand | clean teardown, swap applied, launched |
That points at the idle-timeout stealth-update path possibly not fully unwinding the container when nobody is at the keyboard.
Counter-evidence, so nobody over-reads this: my 8/12 04:30 swap was also a stealth
beforeQuitForUpdatequit and it succeeded (04:31:09 Starting app { appVersion: '1.28929.0' }). So it is not "stealth always leaks" — it stays intermittent, and this is n=1 on the manual path. Treat it as a place to look, not a conclusion.Net for anyone hitting this
The logoff recovery held. After it, a normal close-and-reopen and a full package swap both worked with no reboot, no reinstall, no repair, and no re-registration — the machine has now been up continuously for 2d 08h across the whole failure-and-recovery cycle.
If someone can reproduce on demand, the highest-value artifact would be the Event 217 at logoff naming which package version the surviving container belongs to. On my machine it named the outgoing build, which is what makes a missed teardown on the old container the most likely culprit.
Fresh occurrence today, updating
1.30096.5to1.32352.1.0. That starts from the build @HarvestEdge's successful swap landed on in their 8/15 contrast case, so the next swap from the same build failed here. I had written a much longer comment before reading this thread properly, then found most of it was already above, so I have cut it to the one thing I could not find anywhere here: a logged failure on the outgoing package during the swap, which looks like direct evidence for @HarvestEdge's missing-teardown theory.Environment: Windows 11 Pro 10.0.26200, x64, MSIX
Claude_pzs8sxrjxfjjc, SignatureKind Developer. Update 18 Aug 2026, cleanbeforeQuitForUpdatequit, no crash.The outgoing package's runtime status transition fails with ACCESS_DENIED
@HarvestEdge's reading is that the outgoing build's container holds the family's container slot and is never torn down, so the incoming build can never convert its job. On my machine there is an event that shows the outgoing package failing to complete its state transition at exactly that moment.
Microsoft-Windows-AppModel-Runtime/Admin, in order:Event 67 with
0x5is ACCESS_DENIED, it is the only failure logged against the outgoing package during the handover, and it lands one second before the first0x80070020on the incoming one. The outgoing package never reaches0x480000.I grepped the whole thread and could not find event 67,
0x280000or0x480000mentioned by anyone, so flagging it in case it is useful. If the missing teardown is the bug, this looks like the moment it fails rather than an after-effect. @HarvestEdge saw the same thing from the other end, with the Event 217 at logoff naming the old build. Two views of one incomplete retirement, possibly.For the record on my machine the container destroy at 11:14:47 did fire for the old package, so the object was not simply left undestroyed. Something in the status transition after it still failed.
Minor detail on the CoworkVMService question
@HarvestEdge's control experiment above (service stopped, zero package processes, launch still fails, service restarts only after the 215) is more rigorous than anything I ran, and my data is consistent with it rather than with the service being the blocker. Adding one small piece since the "just stop the service" advice keeps circulating from #57221, #76357 and #61635:
No recovery actions configured, so when people report the service coming back seconds after they stop it, that is not the service restarting itself, it is activation starting it. I confirmed three of the
cowork-svc.exePIDs in my event 211 lines againstWin32_Processcreation times, and each was a brand new process created in the same second as its activation attempt: 17832 at 11:15:28, 19800 at 11:24:21, 8348 at 11:26:12. So stopping it beforehand cannot work on the launch path, which matches the ordering @HarvestEdge measured.I also confirmed
Set-Service CoworkVMService -StartupType Manualreturns Access denied from an elevated prompt, same as thesc.exe configfailure reported in #57371. There is no user-side mitigation available through the service.Other details from my incident
(Get-CimInstance Win32_Process | Where-Object { $_.ExecutablePath -like '*WindowsApps*Claude*' }).Countreturned 0, andGet-AppxPackage -Name Claudereported1.32352.1.0withStatus: Ok. Deployment succeeded, only activation was broken. Same as several reports above.main.log, if it helps confirm labolabo's 8/12 timeline:11:14:17 beforeQuitForUpdate handler fired, then11:14:27 Starting app { appVersion: '1.30096.5' }followed immediately byNot main instance, returning early from app ready. The relaunch fired ten seconds after the quit handler and still found the old instance alive.1.32352.1.0.On the user experience side
I want to add support to the point @adpena made above, because I do not think it is a side issue.
The practical effect of this bug is that updating Claude Desktop has become something to avoid. That is a strange position to be in with a desktop app. On this machine an update has a meaningful chance of ending in an app that will not start, and until you find this thread the only visible information is a dialog naming a file, which points nowhere near the actual problem. The recoveries that work are a session logoff, a reboot, or force-unloading kernel registry hives as SYSTEM. None of those are reasonable things to ask a user to do, and the first two mean tearing down everything else you had open.
For anyone running long sessions, terminals, IDEs, local services or agent tooling, the cost of a failed update is not the app, it is the whole working session. So the rational response is to defer updates, which then leaves people on older builds. That seems like the opposite of what anyone wants, and it is worth weighing when this gets prioritised. A supported no-reboot recovery, or an updater that verifies the app actually launches before declaring the swap done, would change the calculation a lot.
Happy to pull more logs from this incident if any of the above is worth chasing. I still have the full AppModel-Runtime and AppXDeploymentServer traces for the failure window.
Consolidated index of related reports
Since I went looking anyway: below is every report of this bug and its immediate neighbours that I could find, with state as of 18 Aug 2026. Some are already linked individually in comments above, but not in one place, and about a third of them have never been linked here at all. The grouping is my reading of the signatures rather than anything authoritative, so corrections welcome.
Same activation failure as this issue (Event 215/208,
0x80070020, orphaned container or silo, recovered by logoff, reboot, or the SYSTEM hive unload described above):Container_Claude_...job held bysvchost.exe1.32352.0.00x80070020signaturecowork-svc.exelocks the packageDeployment side, where the update or install fails rather than the launch (
0x80073CF6,0x80073CF9,0x80073D02,0x80073D28):Modified, NeedsRemediation; independently reports the sameSet-Serviceandsc.exe configaccess-denied result I hit, and attributes the service DACL to TrustedInstallerclaude.exeandcowork-svc.exeWindowsApps\Deleted, suggests moving to wingetWIN32_PACKAGED_PROCESSandAUTO_STARTmanifest problemService configuration:
sc.exe configis refusedAdjacent triggers that end in the same state:
That comes to 27 reports, 14 open and 13 closed, spanning 15 Feb to 18 Aug 2026, on x64 and ARM64, on personal machines and on managed fleets, and still reproducing on
1.32352.1.0. Eight of the thirteen closures were duplicate or not planned.Two of those, #87607 and #87610, were filed today, within minutes of each other and while I was writing this. That is probably the clearest argument for consolidating: people keep independently rediscovering the same mechanism, writing it up carefully, and filing fresh, because the existing reports are scattered across two dozen issues and the majority of the closed ones were never triaged.
One last thing that is easy to mistake for this bug and does not appear anywhere in this thread. If the symptom is "Couldn't finish loading" with error code
1XAF0WC, andlogs\claude.ai-web.logshowsFailed to fetch dynamically imported module, that is a stale renderer cache (#81961), cleared by deletingCache,Code CacheandGPUCachefrom the app data directory with no session teardown required. Different bug, unrelated fix, but the two get conflated because the user-visible failure is again "the app broke after an update". On MSIX installs that directory is%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude, not%APPDATA%\Claude, which is another thing that costs people time.Reproduced again today (2026-08-19), update-triggered variant — 3rd occurrence of the update-triggered pattern on the same machine (also 08-07, 08-12; 08-14 update was fine).
Environment: Windows 11 Pro 26200 (25H2), Claude Desktop MSIX 1.32352.1.0 → 1.32885.1.0
Timeline (AppModel-Runtime/Admin, JST):
Claude_1.32352.1.0runtime status 0x280000 → 0x200000 (shutting down for update)Claude_1.32885.1.0Register completes (AppXDeployment 400/613, overall 36 s,Gap: 34515 ms= waiting for old processes)0x80070020 ... error converting the job×2 → 208Cannot create the process ... [LaunchProcess]— the automatic relaunch failscowork-svc.exe(PID 91380) does get its container created successfully → the block is on the app launch path only, same as my 08-12 analysisshell:AppsFolder\Claude_pzs8sxrjxfjjc!Claude→ identical 215/208 sequence, so once the race is lost the orphaned Job persists for the whole user sessionGet-AppxPackage Claude→ Status: Ok the whole time (not a NeedsRemediation case), CoworkVMService Running/AutomaticRecovery expected to be sign-out/sign-in (as before). No new information on the root cause; posting for frequency tracking — on this machine the updater loses this race 3 out of 4 recent updates.
Follow-up to my report above (same 2026-08-19 incident,
1.32352.1.0 → 1.32885.1.0): recovered without sign-out/reboot using the SYSTEM force-unload workaround described earlier in this thread.hivelistshowed 8 orphaned\REGISTRY\WC\Silo*hives backed by the package'sHelium\User.dat/UserClasses.dat(both LOCKED, errno 13)NtUnloadKey2(..., REG_FORCE_UNLOAD)under SYSTEM (one-shot scheduled task): 8 → 2 silos, both.datfiles freedshell:AppsFolder\Claude_pzs8sxrjxfjjc!Claudeimmediately succeeded — 10WindowsApps\Claude_*processes, no new 215/208 eventsNo re-register needed this time either (package Status was Ok throughout). That keeps the pattern: the only broken piece after a lost update race is the leaked container silos holding the registry hives; once those are force-unloaded the new build starts fine in the same user session.
The orphaned silo here has a specific, findable cause on my machine: the package's Desktop Bridge ("Helium") registry hives stay mounted after a container crash.
The adjacent
.LOG1/.LOG2files indicate a hive is currently mounted. Creating a Desktop AppX container requires loading those hives; they were already loaded, so the load failed withERROR_SHARING_VIOLATION— the0x80070020in EventID 215, immediately followed by 208:This is why the usual remedies do nothing. Silo-mounted hives live in the container's own registry namespace, not the global one — they are invisible to Task Manager,
handle.exe, andreg query HKU, and are held by the kernel rather than by any user-mode process. Sotaskkill, Settings → Terminate, Repair, Reset, and stopping the packaged service all had no effect. Plain reboots failed too, because the still-registered package and its auto-starting packaged service (CoworkVMService, TYPE 210WIN32_PACKAGED_PROCESS) re-mounted the hive at every boot.What cleared it, in this order:
Get-AppxPackage *Claude* | Remove-AppxPackage— verifyGet-AppxPackage *Claude*returns nothing.sc.exe query CoworkVMServiceshould report the service does not exist.Remove-Item "$env:LOCALAPPDATA\Packages\Claude_pzs8sxrjxfjjc" -Recurse -Force. This succeeds silently once nothing has mounted the hive.Step 4 has to precede step 5. Installing first re-registers the package, re-mounts the hive, and puts you back where you started.
Two diagnostic traps that cost me time:
Get-AppxPackagereportingStatus : Okdoes not rule this out. The registration is fine; the hive is the problem.Caveat: single machine, n=1. I have not reproduced this elsewhere, and I can't say from one host whether the initial container crash has a common trigger.
Recurrence on the same machine as my 2026-08-18 report. Windows 11 Business 25H2 (26200.9106), this time updating
1.32352.1.0to1.34493.1.0, recovered by restart. Same hardware and same reporter, so nothing here independently confirms my own earlier observations, and I've flagged inline where that matters.Before anything else: most of what I was going to post as new is already in this issue family, in #76357 and #83968 rather than here. I went looking after drafting, and I'd rather say so than re-report other people's work. Credits and links at the bottom. The narrow thing I think is actually new is one log line, described next.
The narrow new bit:
close-appwithoutbeforeQuitForUpdate@tonydzi already showed (#76357, 2026-08-12) that the OS-driven deferred registration can fire on its own while the app is still logging
[updater] Staged version ... is still current, with nobeforeQuitline inmain.logat all. My trace is the same path, with one additional detail:main.loghere does record a shutdown line, and it isclose-appwithbeforeQuitForUpdateabsent.That distinction matters because
close-appon its own is not diagnostic. In the only other logs in this family that contain the line (HarvestEdge here, JeKie1408 in #87610), it appears immediately after a successfulbeforeQuitForUpdate, which is why JeKie1408 reasonably read it as reassurance that the app did its part. From my own log, the updater-driven path looks like this:And the 23/08 servicing path looks like this:
So
close-appplusbeforeQuitForUpdatemeans the updater drove it.close-appalone, with the updater still logging deferrals, means something else did. That is a one-line triage signal for anyone reading amain.logfrom this family, and it is the only part of this comment I would call new.The trace
The instance ran continuously from 18/08 20:52 to 23/08 22:49 while three versions stacked up behind it (
1.32885.1.0,1.34493.0.0,1.34493.1.0), with the updater loggingDeferring auto-restart after 117/118/119 hours: Claude is workingthroughout. The deployment side had also been backing off: event638at 22/08 16:25:27 reads "Packages were not updated because affected apps are still running. Running apps: {Claude_pzs8sxrjxfjjc!Claude}, ... Number of previous attempts: 2, Is user session locked: true". That event is itself a deferral recording two prior attempts, so by the handover the deployment side had backed off at least three times.Unchanged boot and logon timestamps rule out shutdown and logoff. The logs do not identify which operation requested the close: there is no event 603 for the 22:48:42 operation, which entered via
679 OnDemandRegisterPackageListand exited via821 During-logon registration, unlike the 09:37 repairs that log603 RegisterByPackageFullName ... ForceTargetApplicationShutdownOption. The same-second correlation with 607/855 associates the close with servicing, but I can't name the caller.No GUI activation followed. In the pre-recovery capture the retained AppModel log contains no event 201 for
1.34493.1.0, while still retaining the old version's 18/08 event 201, so the interval had not rolled out of the roughly 5-day window.main.logends at 22:48:42 and never advances again.Practical consequence, which is really @repko-artem's point rather than mine: the failure only appears the next time someone launches the app, so "worked yesterday, broken this morning, I changed nothing" reports in this family are plausible rather than user error.
Two corrections to my own earlier reasoning
The 210/211 pairs after the swap are the packaged service, not the app. At 22:49:14 a container was created and PID 22740 added, which looks like a successful relaunch. It is
cowork-svc.exe:C:\ProgramData\Claude\Logs\cowork-service.loglogsService readyat 22:49:14.789, and SCM 7045 installs the service the same second. Absence of event 201 corroborates that no application[LaunchProcess]creation was recorded. A 210/211 pair is not a universal service-versus-GUI discriminator on its own; here it is the service log and SCM lifecycle that identify these PIDs. @I083 made the more general version of this point in #77379: the package creates two containers, and deployment destroys only the service's.File mtimes do not establish hive mount time. I initially read
User.datmtime 17/08 19:59 as evidence the hives had been mounted since the 18/08 launch. That is unsound: a mounted hive's mtime updates on flush, so a hive held continuously across five days of use should show a later mtime, not an earlier one.One counting correction as well: this machine shows 8 hive entries across 4 distinct
Silo...GUIDs, which is not "8 orphaned silos". Anyone comparing counts should check both sides are counting the same thing.Confirmations, with the attribution straight
Mounted user hives with no GUI process.
User.datandUserClasses.datwere mounted and failed the exclusive-open test while no Claude Desktop GUI process was alive. I did not test whetherCoworkVMServiceis the holder on this machine; that it is not was established by @tazbdp's and @DevHoracioRodriguez's controls here and by @ostrakographos's ProcMon trace in #42776. Package registration reportedStatus: Okwhile activation failed.Automatic ACL repair does not restore activation, per @HarvestEdge (2026-08-15). Reproduced: each repair cycle logs
649 ... ACLs repaired successfully ... Register next time should succeed, followed by successful registration (400/613) and SCM service reinstallation (7040/7045), and activation still fails. Registration succeeds; activation does not.The
0x5at event 67 on the outgoing package (0x280000 -> 0x480000) is the same signature I reported on 2026-08-18. Same machine and same reporter, so treat it as a recurrence rather than independent confirmation. It does establish that the0x5reproduces across successive update generations here (1.30096.5to1.32352.1.0, then1.32352.1.0to1.34493.1.0). The bit semantics remain inferred:0x400000has never been observed succeeding anywhere in this family, so calling it "the hive-unload step" is still conjecture.Ruled out here
Microsoft.WindowsAppRuntime.2servicing is not involved. Its install completed at 22:48:56, 18 s before the handover, and all three stage operations were no-ops (735 Windows cannot install ... a higher version is already installed). Claude's Register had been de-queued and running since 22:48:42, before the Windows Update activity, so the ordering is backwards for a race.Kernel-Power 566at 09:36:46 reads "The system session has transitioned from 28 to 30. Reason InputAccelerometer", which I can't map to a documented state without SleepStudy data, so I'd treat it as noise rather than causal. It does follow that absence of Power-Troubleshooter events doesn't exclude Modern Standby, since Modern Standby doesn't log S3-style wake events.Speculation, clearly labelled
No evidence for this, offered as something testable. The manifest declares
runFullTrust,packagedServices,localSystemServicesandunvirtualizedResources, and ships a LocalSystem packaged service inside the package identity, so the container's lifetime is referenced by both a user app and a system service. If silo teardown assumes the container dies with the user's app, a split lifetime could break it. That would fit @I083's two-container observation. In the retained logs on this machine, Claude accounts for all 215/208 events and MSTeams, Photos, Terminal and VS Code for none, but that is a roughly 5-day circular log, not a lifetime comparison.Counterexamples worth respecting
I recovered by restart, but that is not universal and I don't want to add to the "just reboot" chorus:
0x80070002variant where two full reboots did not recover, withchrome-native-host.exeinside the package app-data store as the holder.Ask
Seconding @roopsikhaai-web's explicit-unmount or launch-time self-heal request, with one addition that follows from @tonydzi's trace and mine: when servicing is applied outside the updater's own quit-and-relaunch, nothing verifies afterwards that the new version can activate. A post-servicing activation check would surface this immediately and attributably, even without fixing the teardown.
Prior work this refines
DeferRegistrationWhenPackagesAreInUse, that Windows can then never come back to apply it, and that sign-out is the folk cure precisely because sign-out performs the pending registration. His cross-package control (event 215 over three days: Claude 44, every other package 0) also rules out a general AppX fault.beforeQuitline at all, followed by 28 activation attempts with zero package processes alive. This is the closest existing report to the path above; I add only theclose-appdetail.cowork-svc.exeroot cause and replaced it with the chain that still stands: event 658 deferred registration, abnormal container teardown mid-swap, silo hives left mounted,0x80070020. Worth crediting the retraction as much as the finding.Helium\User.dat/UserClasses.datlocks, that they are kernel-level and invisible tohandle64, and thatreg unloadfails as Administrator. Four months before the same files were re-derived on the activation path.Same failure, still open, worth consolidating
taskkill, no reboot. @leifclaesson's three-pinner framing is the clearest in this family.svchost.exeholding\Container_Claude_*is normal for every packaged app, so chasing that handle is a dead end.vmmemCmZygote) holding kernel VSMB/HCS mappings, invisible to Restart Manager.Closed without a fix while still reproducing
0x80070020, never seen by a human.invalid. Contains @TurielD's first report (2026-06-06) that sign-out alone recovers and no reboot is needed.Add-AppxPackage -Registerrecovery that needs no admin.One triage note. The only maintainer action I can find across this family is #81756 being closed as a duplicate of https://github.com/anthropics/claude-code/issues/73694. That issue is open but already labelled
stale, and it is scoped to0x80073D02, the deployment file lock. That is a different mechanism from the0x80070020activation failure discussed here. If #73694 is the designated canonical issue for this family, it may be pointing at the wrong bug.Environment and method
Windows 11 Business 25H2, 26200.9106. Package
Claude_pzs8sxrjxfjjc, sideloaded (SignatureKind: Developer),1.32352.1.0to1.34493.1.0.Recovery: after restart, the exclusive-open test on
User.datandUserClasses.datreturned free at 11:21:59, about 13 s before first launch. No Claude GUI process was running then, though the packaged service had been up since 11:20:32. That was an interactive check and is not captured in my snapshots. First launch succeeded and logged event 201 at 11:22:12. Once the app is running those hives are locked again, and that is the healthy state: the signature is locked with no process in the container, not locked as such.For anyone gathering evidence here,
Microsoft-Windows-AppModel-Runtime/Adminships at about 1 MB and rolls in roughly 5 days, so raise it before you need the history.Microsoft-Windows-AppXDeploymentServer/Operationalcarries the deployment side (603/607/613/638/649/679/821/855) and is where the servicing correlation is visible at all.Independent reproduction, plus a more specific trigger than "crash at startup" — and two more workarounds to cross off the list.
Still present on a much newer build: Claude Desktop
1.37937.1, Windows 11 Home 10.0.26200 (de-DE), non-managed machine. Three occurrences observed: 2026-08-21 (on1.34493.1), 2026-08-25, 2026-08-26. Same0x80070020, sameAppModel-Runtime/Admin215/208 pair.The trigger looks like a deferred-registration race, not a startup crash
In my logs the app does not crash. It quits itself deliberately for the stealth update, then re-activates before the old package's container is gone.
Microsoft-Windows-AppXDeploymentServer/Operational— the new version is installed with registration deferred, because the old one is still running:%LOCALAPPDATA%\Claude\Logs\main.log— the app then quits and the swap is attempted ~3 seconds later:Microsoft-Windows-AppModel-Runtime/Admin:Wedged from then on — every launch reproduces the pair (08:18:26, 08:21:11, 08:26:02, 08:26:04 …). Interestingly one attempt partially succeeds: event 210 creates a container and 211 assigns a process to it, then subsequent container creations fail — so the main process gets in and the children can't follow.
Quit type correlates with whether it wedges
| Quit | Next launch |
|---|---|
|
beforeQuitForUpdate(stealth) 08-21 00:53 | OK ~8 h later, no reboot ||
beforeQuitForUpdate(stealth) 08-21 09:09 | wedged, failed continuously 10:26 → 16:23 || normal
Windows session ending (shutdown)08-25 22:18 | OK next morning ||
beforeQuitForUpdate(stealth) 08-26 08:14 | wedged |The one stealth quit that recovered had a long gap before the next activation; the wedging ones re-activate within seconds. Consistent with a teardown race, though not proof.
Two more things that do NOT recover it
Adding to the list already in this issue:
sc.exe stop CoworkVMService(elevated) — no effect. In my case the service wentSTOP_PENDINGand auto-restarted, but that's not the reason it failed: the container errors at 08:21:11 / 08:21:12 are after the stop. This is worth stating explicitly because #57221 proposes the service as the cause and stopping it as the fix; it isn't sufficient here.IPackageDebugSettings::TerminateAllProcesses(the API behind Settings → Advanced options → Terminate), called on both package full names — returnsS_OK, hives stay locked, next launch still0x80070020.Windows' own repair registration (
RegisterByPackageFullNamewithForceTargetApplicationShutdownOption, RepairAppRegistrationOption) runs automatically on every launch attempt and succeeds each time — which is whyGet-AppxPackagekeeps reportingStatus: Okwhile the app is completely dead. That mismatch sends people down the wrong diagnostic path; the deployment logs look clean and onlyAppModel-Runtime/Adminshows the failure.Confirming the workaround: logoff + login is enough, no full reboot needed.
Partial user-side mitigation
For anyone stuck on this daily: setting the documented
disableAutoUpdatespolicy stops the stealth updater, so the race never fires — then update manually with the app closed.Documented for MDM deployments, but it's a plain registry policy read and appears to work on an unmanaged machine. Obvious cost: no automatic updates, on an app that currently ships roughly daily.
Suggested fix
Since
DeferRegistrationWhenPackagesAreInUsewas requested, the platform will apply the deferred registration on the next natural activation anyway. So:source=windowsStore, drop the self-managed stealth relaunch and let the platform apply the deferred registration at the next launch.0x80070020activation failure and say "sign out and back in to finish updating" instead of surfacing a generic file-in-use error.For those stuck with this bug, I asked Kiro/Claude to build a Powershell script which (for most cases) resolves the issue: https://github.com/Bestehorn/claude-desktop-update-unblock
In some cases, even killing a bunch of depending processes does not resolve this, so you have to log out and then back in, but it mostly works and then let's you update Claude Code properly.
Adding a deterministic trigger plus fresh forensics for this — hit it twice in the last two days with the exact signature described here (Event 215/208
0x80070020"error converting the job" on every launch attempt, only reboot recovers, user-facing dialog "Another program is currently using this file").Trigger identified: the in-app updater's forced shutdown. The app deadlocks while shutting down for the update's register operation, WER hard-kills it mid-servicing, and that kill is what orphans the silo/job.
Timeline reconstructed from
AppXDeploymentServer/Operational,AppModel-Runtime/Admin, WER, and the cowork-service log (2026-08-26, local time, updating 1.37937.1.0 → 1.37937.3.0):Addoperation, deferred registration) while the app is running. No problem at this point.RegisterByPackageFamilyNamestarts withForceApplicationShutdownOption. Same second, cowork-service log shows the app's persistent RPC connection drop (EOF) — the app begins shutting down.0x80070020"error converting the job" / Event 208, containers created then immediately destroyed. Only a reboot recovers.Recurrence data: WER shows MoAppHang for claude.exe 3× in 14 days — 08-13 (1.28929.0.0), 08-15 (1.30096.1.0), 08-26 (1.37937.1.0). Each hang is on exactly the version being replaced that day, i.e., every recorded hang coincides with an update register.
Verified NOT to recover the wedge (all attempted before rebooting):
chrome-native-host.exethat survived from the pre-update package\Container_Claude_<version>job handle in an earlier occurrence — not this time)CoworkVMService(cowork-svc.exe)Container_Claudeor the package family string — this round the stale job appears GUID-named / kept alive by membership, so there is no user-mode handle to closeexplorer.exe "shell:AppsFolder\Claude_pzs8sxrjxfjjc!Claude"— fails identicallySuggested fix direction: either the Electron main process needs to shut down cleanly when the MSIX deployment issues the force-shutdown, or the updater should defer the register until the app has actually exited (staging while running is fine; the forced register racing a hung shutdown is what wedges the machine).
Environment: Windows 11 Pro 10.0.26200, sideloaded MSIX build (
Claude_pzs8sxrjxfjjc).Same failure here on a current build (1.37937.x), and I have two additions that
aren't in the thread yet: the trigger is the in-place MSIX update, not only a
crash, and the occupant of the container is
cowork-svc.exeitself - with aworkaround that actually sticks.
Environment
SignatureKind=Developer, auto-updated fromdownloads.claude.ai(not Microsoft Store)The trigger is a normal, successful update - no crash needed
Microsoft-Windows-AppXDeploymentServer/Operational:The updater downloads, defers registration because the app is running, then ~10
minutes later re-registers with
ForceApplicationShutdownOption. Windows killsthe running app to apply it. Deployment reports success at every step. The app is
unlaunchable from that moment on.
The container is occupied by cowork-svc.exe
Microsoft-Windows-AppModel-Runtime/Admin:PID 59092 is
cowork-svc.exe(CoworkVMService), confirmed by process lookup atthat timestamp. The packaged service is added to the package's container right
before every failure to create one.
Confirming there is no file lock
While the dialog was on screen I ran a Restart Manager (
RmGetList) query againstResult: zero holding processes.
Add-AppxPackage -Register <AppxManifest.xml>also returned success and changed nothing. This matches the thread's conclusion
that "file in use" is only how
0x80070020surfaces.The dialog itself is owned by
sihost.exe(window class#32770), title = thepackage's
app\claude.exepath.Stopping the service is NOT enough - it comes straight back
CoworkVMServiceisWIN32_PACKAGED_PROCESSwithSTART_TYPE 2 (AUTO_START), soit restarts within seconds and re-takes the container. That is probably why
"restart the service" is reported as not working.
Workaround that does stick
plus, so the app does not expect the VM:
Applied on 2026-08-27; service is now
Stopped / Disabled, nocowork-svc.exerunning. Cost: Cowork is unavailable. I have not yet been through an update cycle
with this in place, so I can't confirm it prevents the failure - I'll report back.
Note this is not a supported configuration; Anthropic support explicitly said so.
Side effect worth fixing too
Every update leaves the old package directory behind. On this machine:
AppXDeploymentServerevent1230warns on every update about hardlinks sharedwith those stale folders (
app\chrome_100_percent.pakacross 1.30096.1.0,1.32352.1.0, ...).
Suggested fix
Don't let the packaged service join or hold the package's Desktop AppX container,
or ship
CoworkVMServiceas Manual/Demand start so only the app spins it up.Correcting my earlier comment, and confirming the preceding report's key claim with a controlled contrast.
Correction
I wrote that stopping
CoworkVMServiceshowed it was "not the holder — eliminated." That overreached, and I'd rather it not steer anyone away from the right suspect. The defensible version of my observation is narrower:**Stopping the service is not sufficient.** It is
WIN32_PACKAGED_PROCESSwithSTART_TYPE 2 (AUTO_START), so it returns within seconds and re-takes the container. That is a statement about the workaround, not about causation — and I stated it as the latter.Confirmation: success and failure path on one machine, 18 minutes apart
I happened to catch both paths on the same box today (Windows 11 Home 10.0.26200,
1.37937.1→1.37937.3).Successful launch — the app's own process joins the container:
Event 201 identifies 19824 as the app.
cowork-svc.exewas PID 10400, running since boot, and was never added. App launched normally.Failed launch after the in-place update —
cowork-svc.exejoins instead:PID 31808 is
cowork-svc.exe, created 10:52:47 — verified by process lookup while it was live:No corresponding event 201 appears in the window I captured, consistent with this not being an application activation — the packaged service is placed into the new package's container on its own. The app's subsequent container creations then fail with
0x80070020, and the package stays wedged.So the contrast is: app process in the container → launches fine; service process in the container → every subsequent container creation fails. Same machine, same package family, 18 minutes apart, no reboot in between. That's consistent with the preceding comment's PID 59092 finding rather than with my "eliminated" phrasing.
What I think this narrows it to
The service is
AUTO_START, so after the forced re-registration terminates it (event 9650) it races back up and is placed into the new package's container before the app is activated. Whoever gets there first appears to determine whether the package family is usable until the session ends.That would explain all of the otherwise-confusing observations in this thread at once: why deployment reports success at every step, why
Get-AppxPackagereportsStatus: Ok, why re-registration andReset-AppxPackagechange nothing, why stopping the service alone doesn't help — and why only logoff/reboot recovers, since that is what finally tears the silo down.Shipping
CoworkVMServiceasManual/demand-start, so only the app spins it up after its own container exists, looks like it would remove the race entirely — as the preceding comment suggests.Still unverified
I have not tested whether disabling the service prevents the failure across an update cycle; neither has the preceding reporter. Worth someone confirming before it's treated as a fix. Note also that the two policy values in that workaround (
secureVmFeaturesEnabled,isClaudeCodeForDesktopEnabled) do not appear in the published enterprise configuration docs, and it costs Cowork.The documented
disableAutoUpdates=1policy avoids the trigger instead of the occupant, and is supported — but it means updating by hand on an app currently shipping close to daily.Same signature today (Windows 11 Education 26200, de-DE, sideloaded MSIX, in-place update
1.34493.1.0to1.37937.3.0, updater-drivenbeforeQuitForUpdatequit, first 215/208 one second after the Register completed, then on every launch for 14 hours). I want to add one thing the thread does not have yet: an enumeration of what was actually inside the leaked silo, because on this machine it was neithercowork-svc.exenor a kernel-only artifact, and ending those members recovered the app without logoff, reboot, or the SYSTEM hive unload.The leaked silo had live members, and they were not Claude processes
hivelistshowed the familiar picture (as @Ciki, @adpena, @AccountZero and others documented): one\REGISTRY\WC\Silo<guid>set withHelium\User.dat/UserClasses.datmounted, zero processes with the package identity (tasklist /appsempty forClaude_), all sixHelium\*.dat*files failing an exclusive open.Enumerating every Job object on the system (NtQuerySystemInformation
SystemExtendedHandleInformation, thenQueryInformationJobObjectwithJobObjectSiloBasicInformation= 36 andJobObjectBasicProcessIdList= 3, script below) found exactly one silo that no running app accounted for:telemetryIdsits in the same sequential UUID series as the old app's container{656BD05C-9CD3-11F1-...}from event 217, and 1.67 million processes created over its lifetime is what days of the Desktop app's embedded Claude Code sessions look like. The eight survivors:Git-for-Windows
tail | greppipelines that a Claude Code session running inside Claude Desktop had started five days earlier as background log monitors. Their parentbash.exe/claude.exeprocesses died when the app quit for the update; the grandchildren stayed job members, so the silo never terminated and the hives never unloaded.Three consequences that match observations elsewhere in this thread:
tasklist /appsdoes not list them andGetPackageFamilyName()per PID returns nothing, so @DevHoracioRodriguez's identity-based sweep (which is the right tool for identity-inheriting children) cannot see this class of pinner. Job membership and package identity are different things; only the former keeps a silo alive.taskkill /IM claude*,cowork-svc*,chrome-native-host*,parsecd*): ordinarytail.exe/grep.exenames, dead parents, session 2.handle.exefinds nothing because nothing user-mode holds the hive files or the WC key paths; the pin is membership, as @ZHANGV25 suspected ("kept alive by membership, so there is no user-mode handle to close"). This is the same class as the orphaned elevated member in #73107.The service was not the occupant here
Tested with
hivelistre-read after each step, before touching the members:Stop-Service CoworkVMService(elevated, confirmedStopped, nocowork-svc.exeleft): the service's own silo (software+comhives underProgramData\Microsoft\Windows\WindowsApps\Claude_<ver>\Cache) disappeared. The leaked user silo withuser_sid/user_classesstayed, 6/6 files still locked.Restart-Service vmcompute: no change.So the 210/211 pair right after each Register (service added to a container, as @DrRIH and @Abtomation traced) is real but is a second, separate silo. The one that blocks activation is the old app's user silo, and on this machine it was held up by app-descended processes. That does not rule out the service (or a leaked Cowork VM, #87607) as the pinner in other people's cases; it just means "who is still a member of the old silo" is the question to ask before "who holds a handle".
Recovery without logoff (and without the SYSTEM unload)
Seconds later
hivelisthad no entries for the package, all six hive files opened exclusively, and the nextshell:AppsFolder\Claude_pzs8sxrjxfjjc!Claudelogged 210/211/201 instead of 215/215/208.1.37937.3has been running since, with two terminal-launched Claude Code sessions on the same desktop untouched throughout. Compared with theNtUnloadKey2(REG_FORCE_UNLOAD)route this needs no SYSTEM context and does not yank hives out from under anything.Suggested procedure for anyone stuck
hivelistcheck with no Claude Desktop GUI running: aSilo…user_sidentry forpzs8sxrjxfjjcmeans the old silo is alive.SILOline whosepidsyou cannot attribute to a running app. Check each PID's parent; dead parent plus a shell/tool name is the tell.hivelist, launch. If the silo showsprocs=0and still persists, you are in the handle-pinned case and the SYSTEM unload from earlier in the thread is the next step.<details>
<summary>PowerShell: list every silo on the box with its live PIDs (read-only, run elevated)</summary>
Class 36 fails with error 1505 on ordinary (non-silo) jobs, which is how the script filters them out. Then look up the listed PIDs with
Get-CimInstance Win32_Process -Filter "ProcessId = N"and check whether theirParentProcessIdstill exists.</details>
What this suggests for the fix
At least one path into the wedge is not a crash or a deployment race at all: the app quits for an update while descendants of an embedded Claude Code session are still running, they keep the old silo alive, and the new version can never mount the hives. Terminating the container job on quit-for-update (or at minimum the process trees of embedded sessions and their Monitor/background tasks) would close this path regardless of what the deployment side does. And the dialog text still sends people hunting for a file lock that does not exist.
n=1 machine, so treat the mechanism as one confirmed pinner among the several this thread has now identified, not the only one.
Adding data from another affected machine. Same symptom, but my error code is
0x80073D02rather than the0x80070020in the original report — posting heresince #76357 was consolidated into this issue. If maintainers judge this a
sibling defect rather than the same one, happy to split it out.
Environment
1.40609.0.0, MSIX, package familyClaude_pzs8sxrjxfjjc.msixfiles, not via Microsoft Store(
SignatureKind: Developer)The event that names the blocker
Get-AppPackageLogon a failed register writes AppXDeploymentServer event638, which states the blocking app explicitly. This seems underused in the
existing reports and is the fastest way to confirm the cause:
Every failure fails at the same state handler:
This is specific to the Claude package, not a broken deployment queue
Control test, same minute, same elevated shell:
| Package | Result |
|---|---|
|
Microsoft.WindowsCalculator| registered successfully, 656 ms ||
Claude_1.40609.0.0| failed atResolvedDeferredRegistrations, 78 ms |So the machine's MSIX subsystem is healthy; only the Claude package is blocked,
because only the Claude package has something of its own still running.
Timing: how long between the download and the forced shutdown
The updater downloads, then ~10 minutes later force-closes the app to apply.
Four consecutive update cycles:
Practical consequence: the whole cycle completes inside one working session, so
"shut down at the end of the day" does not avoid it. The app is killed
mid-session, and clicking the icon during the swap window produces the dialog.
A full uninstall + reinstall does NOT fix it
Worth recording so others do not spend the time. I uninstalled Claude Desktop
completely, confirmed no package remained registered, reinstalled from the
official download, signed in — and the very next register attempt failed
identically at
ResolvedDeferredRegistrationswith0x80073D02.An orphaned package folder also survives the uninstall
No package record in the repository — AppXDeploymentServer logs event 1230
("these hardlinks did not have packages in repository", ~100 entries) on every
deployment operation. It persisted through the uninstall/reinstall and had to be
removed manually after taking ownership. Its large files all report hardlink
count = 1, so it is genuinely dead space, not shared with the live package.
CoworkVMService ships with the app and is not opt-in
Confirming a detail from #76357:
CoworkVMService(cowork-svc.exe, displayname "Claude") is declared in
AppxManifest.xml, starts automatically at boot,and runs from inside the package directory. It is not a consequence of
enabling Cowork:
vm_bundlesandclaude-code-vmboth absent(zero Cowork data provisioned), the service was still
State=Running,StartMode=Auto
several days
So every Claude Desktop install carries a service that holds the package folder
open regardless of whether the user closes the window.
A debugging trap worth flagging
Do not count package processes with
cowork-svc.exereports an emptyExecutablePathvia WMI, so that filtersilently misses it and reports zero processes while the package is still in use.
That false reading cost me several hours and one unnecessary reinstall. Match on
process name, or better, just read event 638 and let Windows tell you.
Suggested fix (same as #76357, restating with the extra evidence)
The updater should, before applying the package:
Stop-Service CoworkVMServiceClaude.exeprocessesA reboot should never be required.
Also seeing this on Claude Desktop 1.40609.0.0 (MSIX). Symptom matches exactly: launch/update fails with "This file is in use by another program" referencing C:\Program Files\WindowsApps\Claude_1.40609.0.0_....
In my case, the Application event log shows repeated warnings from CoworkVMService around each occurrence:
Claude VM Service: failed to configure SCM recovery actions; if the service
crashes it will not restart until the machine reboots: open service: Access is denied.
Claude VM Service: failed to disarm SCM recovery actions for this stop; if the
stop overrun, the service may be auto-restarted during package servicing: open
service: Access is denied.
Get-CimInstance Win32_Service for CoworkVMService also fails to return details (StartName/PathName) with Access is denied under a normal (non-elevated) session — consistent with the TrustedInstaller-only DACL mentioned in #87610.
Occurred 3 times over ~2 weeks; only recoverable via full PC reboot. Most recent: 2026-08-29 14:39-14:45.
Full event log export attached.
claude_event_log.txt
The orphaned Silo is held by a stale
RuntimeBroker.exe— recoverable without logoff/rebootI hit this again today and traced the handle that keeps the orphaned container alive. It is not
cowork-svc.exe. It is the per-packageRuntimeBroker.exeinstance that Windows spawned for theold package version. Killing that one process destroys the orphaned container immediately and the
app launches — no logoff, no reboot.
This does not appear anywhere in this issue or in #48003 / #57221 / #76357, so posting the full trace.
Environment
| | |
|---|---|
| OS | Windows 11 Home China, 25H2, Build 26200.9168 |
| Package family |
Claude_pzs8sxrjxfjjc|| Old → new |
Claude_1.37937.3.0_x64→Claude_1.40609.0.0_x64|---
What actually happens
1. The app is running, so the updater correctly defers registration
Microsoft-Windows-AppXDeploymentServer/Operational, event 603:2. …then registration is forced through anyway, killing the running app
ForceApplicationShutdownOptionterminates the running old-version process instead of waiting for itto exit. That is the trigger — the container teardown path never runs.
3. The old container is never destroyed
Microsoft-Windows-AppModel-Runtime/Admin:PID 30520 was gone; no matching 217 (destroy) event ever fired.
4. Every subsequent launch fails
Windows retries
RegisterByPackageFullNamewithForceTargetApplicationShutdownOption,on every launch attempt, repairs the package ACLs, logsRepairAppRegistrationOption
Register next time should succeed— and the next launch fails identically. On 2026-08-28 that loopran 11 times before I gave up and rebooted.
---
The handle holder: a stale per-package
RuntimeBroker.exeRuntimeBroker.exeis spawned bysvchost.exehosting DcomLaunch / BrokerInfrastructure, and eachinstance is bound 1:1 to a single AppX package. Verified via
GetPackageFullName()on live brokers:The broker created at 18:41:26 — 13 s before the Claude container at 18:41:39 — was still alive
~19 h later, still pinned to the replaced package
Claude_1.37937.3.0_x64.Result of killing it (PID 14700, no elevation needed):
App launched normally, 9 processes,
cowork-svcclient connected and signature-verified. No reboot.---
Why the workarounds in this thread don't work
Stop-Service CoworkVMService— the service runs in session 0; the orphan is a user-sessioncontainer. Different silo, so stopping it changes nothing. (Matches the "service restart doesn't
work" note in this issue.)
Reset-AppxPackage/ reinstall — none of these close a kernel job-object handle heldby a live process.
---
Recovery script (no admin required)
To identify the exact broker instead of killing several, resolve each broker's package with
GetPackageFullName(P/Invokekernel32,PROCESS_QUERY_LIMITED_INFORMATION=0x1000) and kill onlythe one reporting the stale
Claude_<old-version>_x64__pzs8sxrjxfjjc.---
Suggested fixes
ForceApplicationShutdownOption. TheAddalready staged correctly withDeferRegistrationWhenPackagesAreInUse; let registration happen on next natural app exit ratherthan force-killing the running instance 11 minutes later.
RuntimeBrokerinstance as part of teardown, or verify a 217 destroy event fired before registering.
version, clean it up instead of looping on
RepairAppRegistrationOption.---
Unrelated but visible in the same logs
CoworkVMServicelogs this on every stop and start:The service cannot open its own SCM handle with
SERVICE_CHANGE_CONFIG. Per its own log text thismeans a crashed service stays down until reboot, and during package servicing SCM may auto-restart it
mid-update. Probably worth a separate issue — it's not what caused the launch failure here.
Another affected machine, and one detail I don't see stated explicitly in the thread yet: on this machine the wedge also forms after a plain close, with no update anywhere near it — and it is recoverable without logoff or reboot.
Environment: Windows 11 x64,
Claude_1.40609.0.0_x64__pzs8sxrjxfjjc, MSIX, SignatureKind Developer, self-downloaded.msix(not Store).Wedge without an update. I closed the app normally with the window X, no deployment activity at all in
AppXDeploymentServer/Operationalin that window. 13 orphanClaude.exeprocesses were still alive andCoworkVMServicewas still Running. Log from the launcher wrapper I now use:Stopping the service and killing the leftover package processes before activation recovers it — no logoff, no reboot. Consistent with the "membership, not handles" reading earlier in the thread: stopping the service alone was not enough here either, killing the leftovers is what matters. This also explains the days when the app died in the morning with no update in the logs at all: I had been treating those as a separate failure until I looked.
Update-driven occurrences. Four automatic updates in four days, each with the two-step signature already documented here — stage with
NormalPriorityRequest, DeferRegistrationWhenPackagesAreInUse, thenRegisterByPackageFamilyNamewithForceApplicationShutdownOption6 to 12 minutes later:| staged | forced shutdown | version |
|---|---|---|
| 2026-08-25 22:25 | 22:31 | 1.34493.1.0 → 1.37937.0.0 |
| 2026-08-26 04:31 | 04:42 | → 1.37937.1.0 |
| 2026-08-27 04:06 | 04:17 | → 1.37937.3.0 |
| 2026-08-28 19:38 | 19:50 | → 1.40609.0.0 |
The 19:50 one hit while I was working. Adding a user-side observation to the "misleading error message" point already raised: from the user's side the window simply vanishes, and there is no Application event, no WER report and no crash dump for any of these, because the process is terminated rather than crashing. Standard troubleshooting therefore finds nothing at all, and a normal user has no way to tell an update from a crash. It took a full deployment-log analysis to work out what was happening.
Windows' repair paths, for the record on 1.40609.0.0. Repair (
RegisterByPackageFullName+RepairAppRegistrationOption) completes and changes nothing. Reset (ResetPackageOperation) fails at step 1 of 4 with0x80073CF0(ERROR_INSTALL_OPEN_PACKAGE_FAILED) — a different code from the0x80073D02reported above, presumably because the staged.msixhad already been cleaned out of%TEMP%. Uninstall + reinstall did recover it on this machine, unlike some reports here, which is what I was doing several times a day before finding the process-kill route.Two asks, echoing the thread: don't force-close a running app to apply an update, and make sure the package's processes are actually gone before registering. The documented
disableAutoUpdatespolicy avoids the trigger, but it should not be the answer for an individual user on a consumer install.Follow-up: recurrence on 1.40609.0.0 and second successful no-restart recovery
This follows my earlier report and successful recovery on 1.30096.1.0:
https://github.com/anthropics/claude-code/issues/53247#issuecomment-5293117363
The same failure recurred on 30 August 2026 after Claude Desktop updated to:
Claude_1.40609.0.0_x64__pzs8sxrjxfjjc
The visible message was again:
AppModel-Runtime recorded the same signature:
State before recovery
Step 1: stop the Claude service and recheck
I stopped CoworkVMService and waited until it reported Stopped with PID 0.
That removed three service-related WindowsApps hives, but the result was still:
This cleanly separated the ordinary service-owned state from the deeper five-hive orphan. Stopping Cowork alone was not the recovery for this occurrence.
Step 2: targeted hive recovery
I reused the same narrowly restricted recovery described in my previous comment.
Before it ran, the helper reported:
TARGET_COUNT=5
PACKAGE_PROCESS_COUNT=0
The helper:
Independent checks after recovery showed:
TARGET_COUNT=0
PACKAGE_PROCESS_COUNT=0
Both Helium files could then be opened exclusively, the temporary task was absent, CoworkVMService remained stopped, and the Claude package still reported Status: Ok.
Step 3: restart Claude through the registered app identity
Claude was launched through its registered application identity:
Claude_pzs8sxrjxfjjc!Claude
The raw executable under C:\Program Files\WindowsApps was not launched directly.
Verification after launch:
No Windows restart or sign-out was used.
Repeated result
This targeted recovery has now successfully restarted the Claude application on the same machine twice:
This suggests the recovery is not tied to a specific Claude version. It is tied to the package family and the stranded WC/Silo hive state.
Safety caveat based on newer reports
Newer comments have identified stale job-member processes that may not have a Claude name or Claude package identity. Future tooling should inspect and terminate only processes proven to be members of the superseded Claude container job before force-unloading hives.
I did not enumerate job membership during this recurrence, so I am not claiming the five remaining hives were necessarily memberless. I am only reporting the measured sequence and successful result. The hive-unload method remains an unsupported, last-resort recovery and should never be broadened to unrelated hives, processes, or services.
The engineering need remains a supported Claude or Windows-side equivalent that completely tears down the outgoing package container before relaunching the updated package.