[BUG] Claude Desktop Windows ARM64 — in-app update fails with 'Another program is currently using this file'; stale AppContainer Job leaked by AppInfo service blocks update + launch
Summary
Claude Desktop on Windows 11 ARM64 fails to update via the in-app updater with the dialog "Another program is currently using this file" pointing at C:\Program Files\WindowsApps\Claude_<version>_arm64__pzs8sxrjxfjjc\. After dismissing the dialog, Claude Desktop also refuses to launch — the same error reappears. The dialog is misleading: extensive handle.exe scanning shows no file handles are open on the install folder. The real blocker is a kernel-level AppContainer Job object for the previous Claude Desktop version that the Windows Application Information (AppInfo / UAC) service refuses to release without a reboot.
A secondary contributor is the CoworkVMService Windows service shipped with Claude Desktop — it auto-starts on boot, loads DLLs from the install folder, and re-acquires its handles within seconds of being stopped, so manual Stop-Service is not a stable workaround.
Environment
| Field | Value |
|---|---|
| OS | Windows 11 Pro 10.0.26200 (ARM64) |
| Hardware | Surface Pro 11, Qualcomm Snapdragon |
| Claude Desktop (registered) | Claude_1.8555.2.0_arm64__pzs8sxrjxfjjc — Status: Ok |
| Claude Desktop (leaked container) | Claude_1.8555.1.0_arm64__pzs8sxrjxfjjc (previous version, no longer registered) |
| Also installed | claude.ai-18877962_1.0.0.1_neutral__4k56vfyhbf6dg (old Electron build, neutral arch) |
| Date observed | 2026-05-23 |
Steps to reproduce
- Run Claude Desktop ARM64 build 1.8555.1.0 for some time; at least one launch is elevated/UAC-triggered (e.g. a feature that prompts UAC).
- Accept the in-app "Update available" prompt that offers 1.8555.2.0.
- The updater downloads + registers the new package successfully (event log confirms
Deployment Register operation ... finished successfullyforClaude_1.8555.2.0_arm64__pzs8sxrjxfjjc). - Mid-finalization, dialog appears:
C:\Program Files\WindowsApps\Claude_1.8555.2.0_ar... — Another program is currently using this file. - Click OK to dismiss. The app appears to exit.
- Try to launch Claude Desktop from Start Menu → same dialog reappears, app never opens.
Actual behavior
- In-app update dialog reports file is in use, but no usermode handle exists on the install folder.
- AppX package status is
OkandAdd-AppxPackage -Registeragainst the manifest succeeds, but launch still fails. - Microsoft Store has no "Claude Desktop" entry (MSIX is sideloaded direct from Anthropic), so the standard "Get updates" path is unavailable.
Diagnostic findings (elevated handle.exe scan)
svchost.exe pid: 12684 type: Job NT AUTHORITY\SYSTEM
\Container_Claude_1.8555.1.0_arm64__pzs8sxrjxfjjc-S-1-5-21-<SID>
cowork-svc.exe pid: 47644 type: File NT AUTHORITY\SYSTEM
C:\ProgramData\Claude\Logs\cowork-service.log
(handle scan for 'Program Files\WindowsApps\Claude' = "No matching handles found")
Service identification:
svchost.exe PID 12684→ service:Appinfo(Application Information — the UAC elevation broker). This service holds the Job object forContainer_Claude_1.8555.1.0_arm64__.... Note this references the previous version even though 1.8555.2.0 is the only registered package.Appinfocannot be safely stopped without breaking UAC for the entire session.cowork-svc.exe PID 47644→ service:CoworkVMService(display nameClaude, StartModeAuto), running fromC:\Program Files\WindowsApps\Claude_1.8555.2.0_arm64__pzs8sxrjxfjjc\app\resources\cowork-svc.exe.Stop-Service CoworkVMServicereleases its handles, but the service auto-restarts within ~30 seconds.
Suspected root cause
When Claude Desktop 1.8555.1.0 was previously launched in a context that touched UAC (any in-app action that triggered an elevation broker call), Windows' Appinfo service opened a handle to the AppContainer's Job object and never released it after the app exited. When the in-app updater later upgraded the registration to 1.8555.2.0, the package metadata flipped but the kernel still has a live Job named with the old version string (Container_Claude_1.8555.1.0_...). AppX deployment finalization and subsequent launch attempts hit a naming/ACL conflict on the container and surface as a generic "file in use" error pointing at the install folder.
Additional pressure from CoworkVMService auto-starting from the install folder while the updater is mid-flight likely worsens the timing window.
Workarounds tried (none stable)
| Attempt | Result |
|---|---|
| Re-register: Add-AppxPackage -Register <AppxManifest.xml> -ForceApplicationShutdown | Returns success, but launch still fails with same error |
| Stop CoworkVMService | Service stops cleanly but auto-restarts; AppInfo's Job remnant still present |
| Launch from Start Menu | Same dialog reappears |
| Manual re-install from claude.ai/download | Not attempted yet; would likely need reboot first anyway |
The only confirmed fix is a full reboot to clear the AppInfo-held Job object reference.
Suggested fixes
- Updater pre-flight check: before initiating AppX deployment, the in-app updater should call
OpenJobObject/ enumerate\BaseNamedObjects\Container_Claude_*and warn the user if a stale-version Job exists, recommending a reboot. - Set
CoworkVMServiceStartMode toManualso it does not auto-acquire DLL handles immediately after boot (start it on first Claude Desktop launch instead). - Surface a better error message than "Another program is currently using this file" — at minimum include the package full name and the HRESULT, since the actual lock holder is not a usermode process.
- Investigate why AppInfo retains the Job ref — possibly a missing
CloseHandlein an elevation-broker code path when the AppContainer'd app exits.
Logs / artifacts available
Microsoft-Windows-AppXDeploymentServer/Operationalevent log: shows successful registration of 1.8555.2.0 alongside (unrelated) Clipchamp deletion errors.- Full
handle64a.exe -a -u Claude_1.8555elevated scan output (sanitized): available on request. Get-AppxPackageoutput confirming Status=Ok for both packages.
Happy to provide more diagnostics; the machine is in the broken state right now (pre-reboot).
6 Comments
Significant update — actual root cause identified, plus Anthropic's own installer hits the same wall
After ~90 minutes of further diagnosis, I found the real blocker. This is not (just) a stale AppContainer Job leak. It is a permanent service-permission deadlock that even Anthropic's own signed installer cannot escape.
Confirmed root cause:
CoworkVMServicehas a custom DACL that locks out even elevated adminsDecoded:
S-1-5-80-...(a sibling Anthropic-owned packaged service) → full control including DELETE / WriteDAC / WriteOwner.Result:
sc.exe delete CoworkVMServicefrom an elevated admin shell returnsOpenService FAILED 5: Access is denied. So doesSet-Service -StartupType Manual. The service cannot be removed, reconfigured, or even permanently disabled from any normal admin path.Service is
WIN32_PACKAGED_PROCESS— bound to the AppX package lifecycleBecause it is a packaged-process service, its only legitimate removal path is uninstalling the AppX package. But:
Remove-AppxPackagefails with0x80073CFAwhile the service is aliveWhen the service is running (which it nearly always is — see auto-restart loop below) the package removal fails with
HRESULT 0x80073CFA("Windows cannot remove ... because the PreserveApplicationData flag can only be used on a package that ..."). This is reproducible from bothRemove-AppxPackageand Anthropic's own setup binary.Anthropic's signed Claude Setup.exe hits the same lockout
I downloaded the latest official installer from
https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect(signature: Anthropic, PBC via DigiCert, Valid) and ran it elevated. Its log fileC:\Users\…\AppData\Local\Temp\ClaudeSetup.logshows the installer's own pre-flight reaching the same dead end:So the installer pivots to a plain
AddPackagewhen it can't do the Remove-then-Add upgrade path — but every subsequent launch attempt still fails with the "Another program is currently using this file" dialog, because the running CoworkVMService keeps a lock on the install folder that Windows trips over during AppX activation.The chicken-and-egg
START_TYPE: AUTO_STARTand auto-restarts within ~30 s of anyStop-Service.Set-Service -StartupType Manualeven when elevated, so we can't even disable the auto-restart.Only an offline path (e.g., reboot before services start, or running from TrustedInstaller / safe mode) can break the loop. From a running user session there is no clean escape.
Userland mitigations that did NOT help
| Attempt | Result |
|---|---|
| Closed leaked AppContainer Job handle (
handle64a.exe -c 6EC -p <appinfo pid>) | Job cleared; launch still fails ||
Stop-Service CoworkVMService| Stops, auto-restarts within 30 s ||
Set-Service CoworkVMService -StartupType Manual(elevated) |Access is denied(DACL) ||
sc.exe delete CoworkVMService(elevated) |OpenService FAILED 5: Access is denied||
Add-AppxPackage -Register <manifest> -ForceApplicationShutdown(elevated) | Returns success; launch still fails ||
Remove-AppxPackage Claude_1.8555.2.0_arm64__pzs8sxrjxfjjc(elevated) |0x80073CFA|| Re-install via Anthropic's own signed setup (elevated) | Setup completes with exit 0, but Remove step fails with
0x80073CFA; install pivots to AddPackage; launch still fails with the same dialog immediately on click |Suggested fixes (revised)
CoworkVMServiceis too restrictive. It should at minimum grantDELETE | WRITE_DAC | WRITE_OWNER | SERVICE_CHANGE_CONFIGtoBUILTIN\AdministratorsandNT AUTHORITY\SYSTEM, otherwise the installer's own remove-then-add path is unusable, and the user has no recovery path from a corrupted intermediate update state.CoworkVMService, since pivoting to plainAddPackageproduces a half-upgraded state where the new AppX is registered but the old service install state is preserved — which is exactly what triggers the recurring "Another program is currently using this file" dialog on launch.Claude-Repair.exethat runs from a TrustedInstaller context (e.g., the way Windows servicing tools do) so users can recover without resorting to safe-mode reboot.Environment (same as opening report)
Surface Pro 11 (Snapdragon, ARM64), Windows 11 Pro 10.0.26200, Claude
1.8555.2.0_arm64__pzs8sxrjxfjjc. The previous-version Job leak (Container_Claude_1.8555.1.0_…held byAppinfoPID 12684) described in the opening report has now been cleared viahandle.exe -c, and the launch still fails — confirming it was not the root cause.I hit what appears to be the same failure mode on Windows x64, not ARM64.
Environment:
Claude_1.11187.4.0_x64__pzs8sxrjxfjjcC:\Program Files\WindowsApps\Claude_1.11187.4.0_x64__pzs8sxrjxfjjcClaude_1.11187.2.0_x64__pzs8sxrjxfjjcUser-visible symptom:
Another program is currently using this file.C:\Program Files\WindowsApps\Claude_1.11187.4.0...package path.Relevant event log findings:
From
Microsoft-Windows-AppModel-Runtime/Admin:Same issue.
Closing for now — inactive for too long. Please open a new issue if this is still relevant.
Root cause found via first-party logs: silent "stealth update" self-triggers, then fails to relaunch — no user action involved at all
Windows 11 x64, Claude Desktop 1.44121.4.0 (MSIX,
Claude_pzs8sxrjxfjjc). This is a distinct trigger from what's described elsewhere in this thread — not a click on "Restart to update" or an in-app prompt. The app was sitting idle (I was away from the keyboard) and updated/quit itself entirely on its own, then never came back.Sequence, reconstructed from
main.log(%LOCALAPPDATA%\Claude\logs\main.log) andcowork-service.log(C:\ProgramData\Claude\Logs\), same machine, correlated timestamps:CoworkVMService then cycles stop→restart 5 times over the next 10 minutes (05:28:47, 05:33:06, 05:33:26, 05:35:11, 05:38:33), each restart logging the same "Access is denied" recovery-config warning (this specific warning is chronic and present on literally every service start going back to when this log began — unrelated to this incident, but worth noting as a standing bug of its own: the packaged service's DACL doesn't grant itself permission to configure its own SCM failure-recovery policy).
The critical failure:
main.loghas zero entries after 05:28:47. The app's own self-relaunch-after-update path (stealth-relaunch) never completed. I did not touch the keyboard between the quit and discovering the problem — the "Another program is currently using this file" dialog pointing atClaude_1.44121.4.0_...was already on screen, unprompted, when I next looked at the machine. This was Desktop's own automatic post-update relaunch failing silently in the background, not a manual launch attempt colliding with anything.Confirmed non-destructive recovery: sign-out/sign-in (not a full reboot) reliably clears it. Full details of the diagnostic process (Procmon captures, Reliability Monitor, Appinfo service isolation via System Informer) available if useful — kept this comment to the log evidence to stay actionable.
Suggested fix direction: the stealth-update path should verify the app actually came back up after
beforeQuitForUpdate, and retry or at least surface a notification if the relaunch didn't happen — right now a failed silent update just leaves the app dead with no visible symptom until the user manually tries to open it and hits a confusing generic Windows file-lock dialog.Same issue on x64, Intune-managed corporate laptop — occurring almost daily
Adding an x64 data point to the ARM64 reports above, with matching event log evidence.
Environment
Symptoms
C:\Program Files\WindowsApps\Claude_<version>...— "Another program is currently using this file."(1.49585.0.0 → 1.52386.0.0 → 2.110.1.0 and others).
What does NOT help (tried repeatedly)
cowork-svc.exeand allClaude.exeprocesses in Task ManagerStop-Service CoworkVMService -Force(service shows Stopped; relaunching Claude restarts it and the same dialog reappears)What DOES help
Event log — matches the stale AppContainer Job diagnosis
Microsoft-Windows-AppModel-Runtime/Admin, both logged at the moment of a failed launch (2026-09-17 11:18:36):0x80070020: Cannot create the Desktop AppX container for package Claude_2.110.1.0_x64__pzs8sxrjxfjjc because an error was encountered converting the job.0x80070020: Cannot create the process for package Claude_2.110.1.0_x64__pzs8sxrjxfjjc because an error was encountered while configuring runtime. [LaunchProcess]This reproduces the kernel Job-object failure described in the OP on x64, not just ARM64. On a fleet of managed corporate machines a daily reboot-to-update is a real productivity cost, so a fix in the updater (stop
CoworkVMServiceand helper processes, verify the old container Job is gone before applying the MSIX) would be much appreciated.