[Windows] AppX update/relaunch fails with "another program is using this file" (0x80073d02) — CoworkVMService (cowork-svc.exe) holds package file lock
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?
Summary
On Windows 11 (Claude Desktop MSIX package Claude_*_x64__pzs8sxrjxfjjc), after an
auto-update without a reboot, or after Claude crashes and is relaunched, Windows
shows "another program is using this file" pointing atC:\Program Files\WindowsApps\Claude_<version>\.... AppX/Store reportsStoreAgentInstallFailure 0x80073d02 (resource in use). Only a full reboot reliably clears it.
Root cause (diagnosed)
The packaged service CoworkVMService (app\resources\cowork-svc.exe, DisplayName
"Claude", WIN32_PACKAGED_PROCESS, AUTO_START, LocalSystem) keeps a handle on the
package's cowork-svc.exe, so AppX cannot replace/clean up the old-version files during
update. It is declared auto-start in AppxManifest.xml and also has a service trigger on\pipe\cowork-vm-service, so killing it alone doesn't help — it restarts via the manifest
auto-start + pipe trigger + AppX re-registration. Restart Manager attributes the lock tocowork-svc.exe.
Repro
- Be on version N with
CoworkVMServicerunning. - Let Claude auto-update to N+1 (or crash + relaunch) without rebooting.
- Error appears; old-version files under WindowsApps can't be removed until reboot.
Observed across versions 1.17377.1.0 → 1.18286.0.0.
Expected
The updater should stop CoworkVMService (and its child processes) before applying the
AppX update, then restart it afterward — so no reboot is needed.
Workaround
Manually (elevated) sc stop CoworkVMService + taskkill /IM claude.exe /F +taskkill /IM cowork-svc.exe /F before updating/relaunching releases the lock without a reboot.
Environment: Windows 11 Pro. Happy to attach C:\ProgramData\Claude\Logs\cowork-service.log
and AppXDeploymentServer event logs.
What Should Happen?
The Claude Desktop updater should stop the packaged service "CoworkVMService"
(cowork-svc.exe) and its child processes BEFORE applying the MSIX/AppX update,
then restart it afterward. Updating (or relaunching after a crash) should complete
without the "another program is using this file" error (AppX 0x80073d02) and
WITHOUT requiring a full Windows reboot.
Error Messages/Logs
Steps to Reproduce
Environment: Windows 11 Pro. Claude Desktop MSIX package
"Claude_<version>_x64__pzs8sxrjxfjjc" (observed 1.17377.1.0 and 1.18286.0.0),
which bundles Claude Code.
- Have Claude Desktop installed and running. Confirm the packaged service is up:
sc.exe queryex CoworkVMService -> STATE: RUNNING (cowork-svc.exe)
sc.exe qc CoworkVMService -> START_TYPE: AUTO_START, LocalSystem,
BINARY: ...\app\resources\cowork-svc.exe
sc.exe qtriggerinfo CoworkVMService -> trigger on \pipe\cowork-vm-service
- Let Claude auto-update to a newer version (or force-crash Claude and relaunch)
WITHOUT rebooting Windows.
- AppX tries to replace / clean up files under
C:\Program Files\WindowsApps\Claude_<oldversion>\..., but cowork-svc.exe still
holds a handle on ...\app\resources\cowork-svc.exe.
- Result: dialog "another program is using this file" (Chinese UI: 另一程序正在使用此文件),
and Store logs StoreAgentInstallFailure with 0x80073d02 (ERROR_INSTALL_RESOLVE_HCNS...
/ resource in use). Old-version files cannot be removed.
- Killing cowork-svc.exe alone does NOT fix it — the service restarts via manifest
auto-start + the \pipe\cowork-vm-service trigger + AppX re-registration. Only a full
Windows reboot reliably releases the lock.
Workaround that avoids the reboot (elevated):
taskkill /IM claude.exe /F
sc.exe stop CoworkVMService
taskkill /IM cowork-svc.exe /F
-> then update / relaunch works with no reboot.
Claude Model
Opus
Is this a regression?
Yes, this worked in a previous version
Last Working Version
_No response_
Claude Code Version
claude --version = 2.1.198 (Claude Code) desktop version= 1.18286.0.0
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
Other
Additional Information
Root cause: the packaged Windows service CoworkVMService (host controller for Claude's
Cowork/HCS-backed VM) holds a file handle on the MSIX package's cowork-svc.exe, blocking
AppX from replacing/cleaning up package files during update. Restart Manager attributes
the lock to cowork-svc.exe.
Relevant evidence:
- AppxManifest.xml declares the service: Category="windows.service",
Executable="app\resources\cowork-svc.exe", Name="CoworkVMService",
StartupType="auto", StartAccount="localSystem",
trigger DataItem Value="\pipe\cowork-vm-service".
- System log / Service Control Manager: 7045 (service installed, auto-start, LocalSystem),
7040 (start type changed), 7034 (terminated unexpectedly).
- AppXDeploymentServer/Operational: RegisterByPackageFullName + "TerminateSingleService
for update ... CoworkVMService"; WER StoreAgentInstallFailure1 with 0x80073d02.
- Service log: C:\ProgramData\Claude\Logs\cowork-service.log
("Starting CoworkVMService as Windows service", "Listening on \\.\pipe\cowork-vm-service").
Happy to attach cowork-service.log and the AppXDeploymentServer event export.
Suggested fix: have the auto-updater (or an MSIX update task) stop CoworkVMService and
terminate cowork-svc.exe/claude.exe before the package swap, then restart the service.
Showing cached comments. Read the full discussion on GitHub ↗
5 Comments
From my claude when looking into the same issue:
Confirming + adding diagnostics (Windows 11 26200, Claude 1.20186.9.0):
The culprit is the packaged Windows service CoworkVMService (DisplayName "Claude"), binary inside the package:
…\WindowsApps\Claude_1.20186.9.0_x64__pzs8sxrjxfjjc\app\resources\cowork-svc.exe, running as LocalSystem, AUTO_START, depends on staterepository.
Ending all claude.exe processes in Task Manager does not stop this service, so the MSIX update can't replace cowork-svc.exe (in use) → file lock → reboot required.
One correction to the thread: sc qc / sc qfailure show TYPE: 210 WIN32_PACKAGED_PROCESS with no failure/recovery actions (RESET_PERIOD 0, no actions). So it isn't a "recovery: restart" setting — it's a packaged service, which Windows won't let you sc config/disable, and which the running app appears to respawn. That's why it resists being stopped.
Suggested fix: the updater must stop (and ideally the app should shut down) CoworkVMService before Add-AppxPackage, since a packaged service running from inside the package folder structurally self-blocks its own update. Also consider DelayedAutoStart/on-demand start, or terminating the service on app close / when an update is pending.
thanks
---- Replied Message ----
| From | Jack W. @.*> |
| Date | 07/14/2026 18:47 |
| To | @.*> |
| Cc | @.>@.> |
| Subject | Re: [anthropics/claude-code] [Windows] AppX update/relaunch fails with "another program is using this file" (0x80073d02) — CoworkVMService (cowork-svc.exe) holds package file lock (Issue #73694) |
jackwjensen left a comment (anthropics/claude-code#73694)
From my claude when looking into the same issue:
Confirming + adding diagnostics (Windows 11 26200, Claude 1.20186.9.0):
The culprit is the packaged Windows service CoworkVMService (DisplayName "Claude"), binary inside the package:
…\WindowsApps\Claude_1.20186.9.0_x64__pzs8sxrjxfjjc\app\resources\cowork-svc.exe, running as LocalSystem, AUTO_START, depends on staterepository.
Ending all claude.exe processes in Task Manager does not stop this service, so the MSIX update can't replace cowork-svc.exe (in use) → file lock → reboot required.
One correction to the thread: sc qc / sc qfailure show TYPE: 210 WIN32_PACKAGED_PROCESS with no failure/recovery actions (RESET_PERIOD 0, no actions). So it isn't a "recovery: restart" setting — it's a packaged service, which Windows won't let you sc config/disable, and which the running app appears to respawn. That's why it resists being stopped.
Suggested fix: the updater must stop (and ideally the app should shut down) CoworkVMService before Add-AppxPackage, since a packaged service running from inside the package folder structurally self-blocks its own update. Also consider DelayedAutoStart/on-demand start, or terminating the service on app close / when an update is pending.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>
Confirmed on Windows 10 Pro (19045), v1.24012.9 — caught the lock live: the update's Add step fails with
0x80070020creatingapp\resources\cowork-svc.exe, leaving the packageModified, NeedsRemediationand the app unregistered (gone from the Start menu). Full details + a no-reboot recovery (kill package-dir processes incl.cowork-svc.exe, thenAdd-AppxPackage -Registerthe staged package) posted in #76357.Adding corroborating event-log forensics from another machine (Windows 11 Home 26200, app 1.24012.9.0 — current as of today — bundled CLI 2.1.219). Same root cause as described here and in #81756, with one variant note: on this machine the service is still registered in the SCM (
Get-Service CoworkVMService→ Running, StartType Automatic) — the auto-restart variant rather than the SCM-orphan variant in #81756. Three data points that may help the fix:**1. The service re-blocks servicing within a single Repair pass.** Settings → Repair re-downloads the MSIX and runs Add + Register. The platform force-terminated the service ~30 s before the Register step — yet by the time Register ran, something in the package was active again and the repair's Register failed (
AppXDeploymentServer/Operational, 2026-07-27):An identical repair cycle with the same failed Register step (
0x80073D02, same #638/#9641 events) ran at 14:34:49 the same day — two Repair cycles ~8 minutes apart, both failing their Register step, both followed by a successful launch anyway. So from the user's chair "Repair fixes it", but the register step never actually succeeds while the package's service/processes are alive; the fix is incidental.2. The force-shutdown remediation is what users experience as "the app crashed". The 14:41:09
ForceTargetApplicationShutdownregister terminated the live app mid-session (all windows gone). Combined with (1) this is self-sustaining: hang → remediation force-kills app → service comes back → next servicing blocked → user repairs again.3. No crash telemetry for the app's own deaths. Both app deaths that day left no WER record, and the Crashpad directory (
%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\Crashpad) contains onlysettings.dat— matches the "terminated externally, does not crash" observation in #81756. Historical Application-log entries on this machine:MoAppHangfor claude.exe on 2026-06-14 and 2026-06-28,RADAR_PRE_LEAK_64for claude.exe 2.1.187.0.Minor related defect: after restart the new instance logs
[Chrome Extension MCP] Failed to copy native host binary: EBUSY— the previouschrome-native-host.exe(parented by the browser, not the app) survives app restarts and holds the destination binary; the failure is only logged.Non-elevated workaround (no reboot, no re-download): this is the same Register + force-shutdown operation the platform itself ran successfully at 14:41:09, so the deployment service does the terminating and it should not need elevation:
Happy to attach the full filtered AppXDeploymentServer export if useful.
🤖 Generated with Claude Code
Another confirmed case on Windows 10 Pro (19045), package
Claude_1.24012.9.0_x64__pzs8sxrjxfjjc— with a worse failure mode than "reboot required": the failed update cycle left the package deregistered, so the app appeared to have uninstalled itself (Start-menu entry gone, service would not start). The user had to manually reinstall — twice in one morning, because the updater retried and hit the same lock.Timeline from
Microsoft-Windows-AppXDeploymentServer/Operational(2026-07-30, all within ~25 minutes):| Time | Event |
|---|---|
| 10:00:15 | Register fails
0x80073D02— "apps need to be closed" || 10:04:50 | Register succeeds (after manual reinstall) |
| 10:06:37 | Remove fails
0x80073CFA— "PreserveApplicationData flag can only be used on a package that was deployed in development mode" || 10:06:45 | Add of
Claude-866493742.msixsucceeds || 10:09–10:10 | Register fails
0x80073D02twice more || 10:14:13 | Add of
Claude-857647155.msixfails0x80070020— sharing violation "Creating file...\app\resources\cowork-svc.exefailed" || 10:25:26 | Remove fails
0x80073CFAagain || 10:25:33 | Add of
Claude-3333753079.msixfinally succeeds;cowork-svc.exerestarts same second |Two data points beyond the original report:
0x80073CFAon the remove leg: the updater's Remove call apparently passesPreserveApplicationData, which Windows rejects for non-development-mode packages. Combined with the lockedcowork-svc.exeon the Add leg, a half-completed remove-then-add cycle can leave the machine with no registered package at all — not just stale files awaiting reboot. That's the "app uninstalled itself" symptom.CoworkVMServicewas confirmed as the lock holder:Win32_Serviceshows itRunning/AutowithPathNameinside the package folder, and itscowork-svc.exeprocess restarted at the exact second the final Add succeeded (manifest auto-start re-registration, as described in the OP).Same expected fix as the OP: the updater must stop
CoworkVMService(and suppress its pipe-trigger/auto-start restart) before the AppX remove/add, and restart it after. Note for anyone else recovering from the "uninstalled" state: user data in%APPDATA%\Claudesurvives these cycles, and the downloaded installer is still in%LOCALAPPDATA%\Temp\Claude-*.msix— elevatedStop-Service CoworkVMService, quit Claude fully, thenAdd-AppxPackagethat file.