Summary
Windows auto-update deployments run while the app (claude.exe) and the packaged service CoworkVMService (cowork-svc.exe) are still running, and fail: 0x80073CF9 with inner 0x80070020 (ERROR_SHARING_VIOLATION) on cowork-svc.exe, or 0x80073D02 ("the following apps must be closed"). To the user this looks like Claude suddenly crashed mid-session, after which the app never launches again (no window, no error). What follows in the log is recovery churn: register attempts that "succeed" at the AppX layer without producing a launchable app, repair attempts that race the very processes they're repairing, and — in both incidents — an identical removal attempt with PreserveApplicationData, which is dev-mode-only and guaranteed to fail with 0x80073CFA on a store-signed package.
This hit the same machine twice within one day (2026-08-04, ~01:14 and ~22:52 local). Both times the app was down for 10+ minutes and needed assisted recovery.
Environment
- Windows 10 Pro 10.0.19045 x64, Russian locale (log excerpts translated; codes/paths/options verbatim)
- Claude Desktop MSIX, package family
Claude_pzs8sxrjxfjjc
- Update path:
1.24012.11.0 → 1.25927.0.0, payload https://downloads.claude.ai/releases/win32/x64/1.25927.0/Claude-003700efafbc2ccb4b1177a5e637b14da381799e.msix
All excerpts are from Microsoft-Windows-AppXDeploymentServer/Operational, times local. The log records operations, options and outcomes but not the initiating process, so per-attempt attribution (updater retry logic vs. Windows repair vs. our assisted recovery) is inference; your updater telemetry can correlate.
Incident 1 — 2026-08-04 01:14–01:26: repair/re-add of the running version
01:14:10 #603/#638/#401/#404 RegisterByPackageFullName (RepairAppRegistration) of 1.24012.11.0
→ 0x80073D02 — blocked by the running app it is repairing
01:15:16 #603/#717/#404 (x2) Remove 1.24012.11.0, first with PreserveApplicationData,RemoveForAllUsers,
then PreserveApplicationData alone → 0x80073CFA both times
("flag allowed only for packages deployed in development mode")
01:15:16 #603 Add of 1.24012.11.0 (Claude-2908984492.msix), options:
ForceApplicationShutdownOption,ForceUpdateFromAnyVersion
01:15:18 #462 Error 0x80070020: failed to create file
\\?\C:\Program Files\WindowsApps\Claude_1.24012.11.0_...\app\resources\cowork-svc.exe
01:15:18 #605 Last successful state: PreStagePackagesInUseClosed. Failed before reaching: Staged.
01:15:18 #404 → 0x80073CF9 (inner 0x80070020)
01:19:49 identical Add failure, payload Claude-279551963.msix
01:25:23 #404 Add retry → 0x80070005 (failed to open package location)
01:26:03 #603 Add of 1.24012.11.0 (same Force options) — after lingering processes/service
were stopped out-of-band
01:26:19 #646/#400 running app terminated for servicing; Add completed successfully (16 s)
Sharp edge here: the failing Adds at 01:15/01:19 did request ForceApplicationShutdownOption, yet still died on a sharing violation — same-version re-staging writes into the live package folder (#605: between PreStagePackagesInUseClosed and Staged) before the shutdown machinery terminates the service that holds cowork-svc.exe.
Incident 2 — 2026-08-04 22:08–23:12: deferred update commits into lingering processes, then churn
22:08:28–42 #603/#638/#400 Add 1.25927.0.0 (DeferRegistrationWhenPackagesAreInUse) → staged OK,
registration deferred, app still running [normal designed flow]
22:18:37–38 same deferred Add again (cached, 734 ms)
22:52:59 #638/#401/#404 deferred Register fires → 0x80073D02 — blocked by running 1.24012.11.0
22:58:48–59:19 #603/#646/#9648/#400 RegisterByPackageFamilyName (ForceApplicationShutdownOption):
app terminated, CoworkVMService terminated → Register SUCCESS (31 s)
— but no durably working app followed; churn continues:
23:06:21–22 #603/#638/#404 RegisterByPackageFullName (RepairAppRegistration) → 0x80073D02 —
blocked by the now-running 1.25927.0.0 itself
23:08:20 #400 Register SUCCESS (219 ms)
23:09:11 #603/#9648/#400 RepairAppRegistration + TerminateSingleService(CoworkVMService) →
Register SUCCESS (203 ms) — still no working app
23:10:44 #603/#717/#404(x2) Remove 1.25927.0.0 with PreserveApplicationData(,RemoveForAllUsers) →
0x80073CFA — same dev-mode-only dead end as incident 1
23:10:44–51 #603/#9648/#400 Add of OLD 1.24012.11.0 (Claude-817307799.msix, Force options) →
SUCCESS — temporary downgrade to the previous version
23:11:30–39 #603/#638/#400 Add 1.25927.0.0 fetched fresh from downloads.claude.ai (Defer...InUse)
→ staged OK, deferred (blocker: 1.24012.11.0 now running again)
23:12:13–44 #603/#646/#9648/#400 RegisterByPackageFamilyName (ForceApplicationShutdownOption):
app + CoworkVMService terminated → Register 1.25927.0.0 SUCCESS (31 s),
1.24012.11.0 moved to \WindowsApps\Deleted
The 23:12:44 result held: Get-AppxPackage now reports 1.25927.0.0, Status: Ok, CoworkVMService runs from the new package folder, app healthy. During the broken window Get-AppxPackage showed the package as Modified, NeedsRemediation (observed live during recovery, not preserved in a transcript; identical signature to #83893).
Observations
- The deferred-registration flow commits into lingering processes. The designed path (Add +
DeferRegistrationWhenPackagesAreInUse) staged fine at 22:08, but the deferred Register at 22:52:59 ran while claude.exe/cowork-svc.exe still lived → 0x80073D02. Window closed ≠ processes exited.
- Same-version repair Add races its own service at staging time, before force-shutdown applies →
0x80073CF9/0x80070020 on cowork-svc.exe (incident 1). Force flags don't help there.
- RepairAppRegistration is blocked by the app it repairs (01:14:10, 23:06:21) →
0x80073D02.
- AppX-layer "success" ≠ working app. Three registrations reported
#400 completed successfully (22:59:19, 23:08:20, 23:09:11) with no launchable app afterwards — churn continued for another ~13 minutes. Nothing verifies end-to-end health before declaring the update done.
PreserveApplicationData removal is a scripted-looking dead end that fired in both incidents (01:15:16 and 23:10:44, both times as a pair: with RemoveForAllUsers, then without). The flag is dev-mode-only, so it fails with 0x80073CFA on the store-signed package every time. Whatever issues it (updater rollback logic or recovery tooling — the log doesn't name the caller), "remove but keep user data" is not available as a rollback path for this package.
- No automatic recovery to a working state. The package sat in
Modified, NeedsRemediation until an out-of-band sequence (temporary downgrade to 1.24012.11.0, fresh payload re-download, defer-Add + force-shutdown Register) landed the update. Why the 23:12:44 attempt held while the 22:59:19 one (same options, same duration) did not is not decidable from this log — flagging for whoever owns the updater's state machine.
Suggested fix
- Before the deferred Register commits: enumerate active AUMIDs, gracefully close the GUI, stop
CoworkVMService, and wait for cowork-svc.exe/claude.exe to actually exit (no open handles into the package folder) — don't rely on window-close as a proxy.
- Treat
0x80070020 / 0x80073D02 as retryable: re-stop processes, retry registration; don't abandon the package in NeedsRemediation.
- After Register reports success, verify end-to-end (app activates, service starts from the new folder, package
Status == Ok) before considering the update finished — that's the gap behind observation 4.
- Drop
PreserveApplicationData from any removal path for the store-signed package (0x80073CFA is unconditional there); user data survives normal in-place update anyway.
- If the new version can't reach a verified-working state, roll back to the previous version automatically — the 23:10:51 downgrade shows the mechanics work.
- Start
CoworkVMService / relaunch the app only after the AppX operation has committed.
User impact
The failed update presents as an out-of-the-blue crash; afterwards the app simply never opens — no window, no error, shortcut present. Messages typed into the dead window are lost. User data survives on disk, but recovery requires AppX/service surgery far beyond a typical user. Twice in one day on this machine.
Related
Same lock/race cluster: #73694, #81756, #80502, #82494, #81267, #83893, #78873. This report adds a detailed two-incident same-day timeline from AppXDeploymentServer/Operational, the repeated dev-mode-only PreserveApplicationData rollback dead end (0x80073CFA), and the "AppX success without a working app" churn pattern.
Summary
Windows auto-update deployments run while the app (
claude.exe) and the packaged service CoworkVMService (cowork-svc.exe) are still running, and fail:0x80073CF9with inner0x80070020(ERROR_SHARING_VIOLATION) oncowork-svc.exe, or0x80073D02("the following apps must be closed"). To the user this looks like Claude suddenly crashed mid-session, after which the app never launches again (no window, no error). What follows in the log is recovery churn: register attempts that "succeed" at the AppX layer without producing a launchable app, repair attempts that race the very processes they're repairing, and — in both incidents — an identical removal attempt withPreserveApplicationData, which is dev-mode-only and guaranteed to fail with0x80073CFAon a store-signed package.This hit the same machine twice within one day (2026-08-04, ~01:14 and ~22:52 local). Both times the app was down for 10+ minutes and needed assisted recovery.
Environment
Claude_pzs8sxrjxfjjc1.24012.11.0→1.25927.0.0, payloadhttps://downloads.claude.ai/releases/win32/x64/1.25927.0/Claude-003700efafbc2ccb4b1177a5e637b14da381799e.msixAll excerpts are from
Microsoft-Windows-AppXDeploymentServer/Operational, times local. The log records operations, options and outcomes but not the initiating process, so per-attempt attribution (updater retry logic vs. Windows repair vs. our assisted recovery) is inference; your updater telemetry can correlate.Incident 1 — 2026-08-04 01:14–01:26: repair/re-add of the running version
Sharp edge here: the failing Adds at 01:15/01:19 did request
ForceApplicationShutdownOption, yet still died on a sharing violation — same-version re-staging writes into the live package folder (#605: betweenPreStagePackagesInUseClosedandStaged) before the shutdown machinery terminates the service that holdscowork-svc.exe.Incident 2 — 2026-08-04 22:08–23:12: deferred update commits into lingering processes, then churn
The 23:12:44 result held:
Get-AppxPackagenow reports1.25927.0.0,Status: Ok, CoworkVMService runs from the new package folder, app healthy. During the broken windowGet-AppxPackageshowed the package asModified, NeedsRemediation(observed live during recovery, not preserved in a transcript; identical signature to #83893).Observations
DeferRegistrationWhenPackagesAreInUse) staged fine at 22:08, but the deferred Register at 22:52:59 ran whileclaude.exe/cowork-svc.exestill lived →0x80073D02. Window closed ≠ processes exited.0x80073CF9/0x80070020oncowork-svc.exe(incident 1). Force flags don't help there.0x80073D02.#400 completed successfully(22:59:19, 23:08:20, 23:09:11) with no launchable app afterwards — churn continued for another ~13 minutes. Nothing verifies end-to-end health before declaring the update done.PreserveApplicationDataremoval is a scripted-looking dead end that fired in both incidents (01:15:16 and 23:10:44, both times as a pair: withRemoveForAllUsers, then without). The flag is dev-mode-only, so it fails with0x80073CFAon the store-signed package every time. Whatever issues it (updater rollback logic or recovery tooling — the log doesn't name the caller), "remove but keep user data" is not available as a rollback path for this package.Modified, NeedsRemediationuntil an out-of-band sequence (temporary downgrade to 1.24012.11.0, fresh payload re-download, defer-Add + force-shutdown Register) landed the update. Why the 23:12:44 attempt held while the 22:59:19 one (same options, same duration) did not is not decidable from this log — flagging for whoever owns the updater's state machine.Suggested fix
CoworkVMService, and wait forcowork-svc.exe/claude.exeto actually exit (no open handles into the package folder) — don't rely on window-close as a proxy.0x80070020/0x80073D02as retryable: re-stop processes, retry registration; don't abandon the package inNeedsRemediation.Status == Ok) before considering the update finished — that's the gap behind observation 4.PreserveApplicationDatafrom any removal path for the store-signed package (0x80073CFAis unconditional there); user data survives normal in-place update anyway.CoworkVMService/ relaunch the app only after the AppX operation has committed.User impact
The failed update presents as an out-of-the-blue crash; afterwards the app simply never opens — no window, no error, shortcut present. Messages typed into the dead window are lost. User data survives on disk, but recovery requires AppX/service surgery far beyond a typical user. Twice in one day on this machine.
Related
Same lock/race cluster: #73694, #81756, #80502, #82494, #81267, #83893, #78873. This report adds a detailed two-incident same-day timeline from
AppXDeploymentServer/Operational, the repeated dev-mode-onlyPreserveApplicationDatarollback dead end (0x80073CFA), and the "AppX success without a working app" churn pattern.