[BUG] Claude Desktop (Windows x64) — stale AppContainer Job leaked by AppInfo service blocks relaunch after ordinary crash (no update in progress)
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 crashed and would not relaunch, showing "Another program is currently using this file" pointing at C:\Program Files\WindowsApps\Claude_1.37937.0.0_x64__pzs8sxrjxfjjc\.... No in-app update was in progress at the time. An elevated handle.exe scan found the actual lock is a kernel-level AppContainer Job object, held by the Windows AppInfo (UAC) service, referencing an old, no-longer-registered Claude version — not the currently installed one. This matches the mechanism reported in anthropics/claude-code#61635, but with a different trigger context (see Additional Information).
Confirmed via troubleshooting: ending the full claude.exe process tree did not resolve it; a custom kill script confirmed neither a running process nor the Electron lockfile was the blocker; Stop-Service CoworkVMService -Force succeeded and stayed stopped with no effect on the launch failure; Set-Service CoworkVMService -StartupType Disabled failed with Access Denied (protected service ACL, consistent with #57371).
Same as #61635's theory: the Windows AppInfo (UAC elevation broker) service opened a handle to an AppContainer Job object for a Claude Desktop version that has since been superseded, and never released it. The stale handle blocks the currently-registered version from launching, surfacing as a generic "file in use" error that does not point at the real holder.
What Should Happen?
Claude Desktop should launch normally against the currently-registered package version. A stale Job object referencing a superseded, no-longer-installed version should not be able to block the current version from starting — and if the launcher/updater detects a generic "file in use" failure, it should identify the actual lock holder (service + object type) rather than surfacing an unspecific dialog that points at the install path itself.
Error Messages/Logs
Initial scan targeting the file path found nothing:
handle -a "WindowsApps\Claude_"
No matching handles found.
Broadened scan (elevated) targeting the AppContainer naming pattern from #61635 found the actual holder:
handle -a -u "Container_Claude"
svchost.exe pid: 6452 type: Job NT AUTHORITY\SYSTEM
\Container_Claude_1.34493.1.0_x64__pzs8sxrjxfjjc-S-1-5-21-3600484967-2995034899-2738637813-1002
Confirmed the owning service:
tasklist /svc /fi "PID eq 6452"
svchost.exe 6452 Appinfo
Steps to Reproduce
Steps to reproduce
Not reliably reproducible on demand. Observed as: app became unresponsive/crashed during ordinary use (no update prompt visible), and subsequent launch attempts — from Start Menu, and after fully terminating all claude.exe processes — consistently returned the file-in-use dialog.
Claude Model
Not sure / Multiple models
Is this a regression?
Yes, this worked in a previous version
Last Working Version
About 3 months ago, whatever version was used then.
Claude Code Version
Version 1.37937.0 (61bfd4)
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
Other
Additional Information
Claude Desktop app (Windows), not invoked from a terminal
Environment: Windows 11 Pro, Version 25H2 (OS Build 26200.9168), x64. Claude Desktop currently registered as Claude_1.37937.0.0_x64__pzs8sxrjxfjjc; leaked Job object references the superseded Claude_1.34493.1.0_x64__pzs8sxrjxfjjc. Diagnostic tool: Nthandle v5.0 (Sysinternals Suite, Microsoft Store/MSIX distribution). Not yet rebooted at time of filing — deliberately held off to capture diagnostics first. (Update, post-filing: a full reboot did resolve the launch failure, confirming the diagnosis.)
Differences from #61635, worth noting and not yet explained:
- Architecture: this report is x64; #61635 was ARM64.
- Trigger context: #61635 was observed during an in-app update and theorized the leak originated from a prior UAC-elevated action within Claude Desktop. Here, no update was in progress, and the reporter states they never use any UAC-elevated feature of Claude Desktop — the acquisition mechanism is therefore unconfirmed and may not match #61635's theory, or may indicate AppInfo can acquire/leak this handle without an explicit in-app elevation action.
- CoworkVMService respawn behavior: #61635 states the service "re-acquires its handles within seconds" of being stopped. Here,
Stop-Service CoworkVMService -Forcestayed stopped while the app remained closed — it appears to restart only when Claude Desktop itself launches, not independently.
Workarounds tried (none resolved short of the reboot): ending the process tree via Task Manager; the custom kill script; Stop-Service/Set-Service on CoworkVMService (see What's Wrong). Reboot is the only thing that resolved it.
Suggested fixes:
- Updater/launcher pre-flight check for stale
Container_Claude_*Job objects before relying on a generic "file in use" error. - Investigate why AppInfo retains the Job reference after the owning app version is superseded/exits — possible missing handle release in an elevation-broker code path.
- Surface a more specific error message identifying the actual lock holder.
- If confirmed this can occur without any user-initiated elevation, that broadens the scope of #61635's fixes — the leak may not require a UAC-triggered feature to occur.
Unrelated context: reporter has separately investigated a longer-running, distinct instability issue (intermittent "freeze-then-vanish" crashes with no forensic trace) — filed as a separate report; not confirmed to share a root cause with this issue.
3 Comments
Same failure, Windows 11 x64, Claude_1.46388.1.0_x64__pzs8sxrjxfjjc superseding 1.44121.4.0. Adds two data points beyond what's here and in #61635:
Given #59934 documents a working non-destructive recovery (Add-AppxPackage -Register against the current manifest, no reboot), it'd be useful to know whether that only works for the pre-Job-formation failure mode (208 without a leaked Job) versus this one (Job confirmed present, empty, unreleasable) — in my case it did not help once the Job had already formed. Happy to share the full NtJob/QueryInformationJobObject PowerShell repro if useful for triage.
Recurrence, 2026-09-04, Windows 11 x64. Independently confirms both of @aleozlx's points above, plus one correlation and one piece of tooling worth sharing.
Currently registered: Claude 1.46388.2.0 (Get-AppxPackage; full package string assumed Claude_1.46388.2.0_x64__pzs8sxrjxfjjc based on the consistent family ID below, not returned verbatim by that command). Elevated
handle -a -u "Container_Claude"found: svchost.exe (PID 2136), type Job, owner NT AUTHORITY\SYSTEM, holding Container_Claude_1.44121.4.0_x64__pzs8sxrjxfjjc — the same superseded version @aleozlx reports, despite our two machines landing on different current versions (1.46388.1.0 vs 1.46388.2.0). The identical leaked-version string across two independent machines suggests something specific to 1.44121.4.0 (or its update path), not a purely random per-machine leak.tasklist /svcconfirmed PID 2136 = Appinfo, matching this report and #61635.Additional data points from this machine's history with this bug (not all re-tested tonight specifically):
New tonight: added an automated preflight check to that recovery script. Before running any of the steps in (2), it does an elevated
handle -a -u "Container_Claude"scan, compares the leaked version againstGet-AppxPackage's current version, and if they differ, reports the mismatch (leaked version, current version, holding PID/service) and exits rather than running steps already known not to help. This is a working implementation of Suggested Fix #1 from the original #61635 report ("updater pre-flight check for stale Job objects"). It correctly detected tonight's leak, matching the manual scan exactly. Happy to share the PowerShell function if it's useful for anyone triaging this.The only fix that has ever worked on this machine is a full reboot — confirmed for the original occurrence (8/25); reboot for tonight's is pending as of this comment. This is a confirmed recurrence across two different version pairs on my own machine (1.34493.1.0 → 1.37937.0.0 originally, now 1.44121.4.0 → 1.46388.2.0), and matches @aleozlx's independent report on a third pairing (1.44121.4.0 → 1.46388.1.0) — not a one-time event.
If you'd like a copy of the script, which also holds another, untested option (remarked out), let me know. I start it with a .bat file that is elevated.
Independent reproduction of this issue on a newer Claude Desktop build.
Environment
Claude_1.46388.4.0_x64__pzs8sxrjxfjjcOkSymptoms
Claude Desktop suddenly exited during use and could not be relaunched. Subsequent launch attempts produced the Windows dialog:
AppModel Runtime consistently logged:
I worked through process/service elimination before rebooting:
Claude.exeremained running.CoworkVMServicesuccessfully and confirmedcowork-svc.exeexited. No change.chrome-native-host.exe. No change.git.exe/fsmonitor process was present.Get-AppxPackagecontinued to reportStatus: Ok.I then used Sysinternals Handle 5.0:
The owning service is definitively AppInfo:
WMI independently confirms:
The significant point is that the currently registered Claude package is 1.46388.4.0, while AppInfo is retaining a
Container_ClaudeJob for the superseded 1.46388.1.0 version.This appears to independently reproduce the core mechanism described in this issue on the current 1.46388 release line.
I also attempted:
but Windows refused the service stop. I did not force-kill the AppInfo
svchost.exeor usehandle -cagainst the Job because of the potential for system instability.I have not yet rebooted because I have a long-running development session active and wanted to preserve the failure state for diagnosis.
As a preventive measure, I have now applied Anthropic's documented policy:
The recurring nature of this failure and the fact that the stale Job references an older Claude build raise the question of whether the Desktop MSIX update lifecycle can leave an AppInfo-held Job behind when transitioning versions.
I have retained the full AppModel Runtime logs and PowerShell/Sysinternals diagnostic output if they would be useful to the Desktop engineering team.