Summary
The Windows desktop app's stealth auto-update leaves orphaned child processes that keep the OLD version's Desktop AppX container alive. Every launch of the NEW version then fails with 0x80070020 ("error encountered converting the job") until the machine is rebooted. The app appears simply dead to the user: clicking the icon does nothing.
This machine has hit the "update leaves Claude unlaunchable until reboot" state repeatedly across multiple update cycles (an earlier episode instead showed a "Another program is currently using this file" installer dialog while popped-out session processes were still running).
Environment
- Windows 11 Home 10.0.26200
- Claude desktop app (MSIX, package family
Claude_pzs8sxrjxfjjc) updating 1.34493.1.0 -> 1.37937.0.0
- Multiple Claude Code sessions / popout panes typically open at update time
Timeline (from Windows event logs, 2026-08-25, all times local)
- 13:37 - AppXDeploymentServer: Add operation for 1.37937 with
DeferRegistrationWhenPackagesAreInUse; event 658 "Marking package for deferred registration because Claude_1.34493.1.0 is still running". Normal.
- 19:57:18 -
RegisterByPackageFamilyName with ForceApplicationShutdownOption. Old version's container destroyed, registration finished successfully at 19:57:51 (event 400).
- 19:57:51 onward - every relaunch of the new version logs (AppModel-Runtime/Admin):
- event 211 "Added process to Desktop AppX container ..." (main process starts)
- then repeated event 215
0x80070020: Cannot create the Desktop AppX container for package Claude_1.37937.0.0 because an error was encountered converting the job.
- then event 208
0x80070020: Cannot create the process ... error encountered while configuring runtime. [LaunchProcess]
The app dies silently. This repeats identically at 20:01:31, 20:01:32, 20:01:51, 20:02:11, 20:02:38 (including two automatic re-register/repair passes, both of which "finished successfully" per event 400 yet launches kept failing).
- At this point no process named claude.exe existed (verified by an external kill script that logged
taskkill /IM claude.exe -> "process not found"). Something else - an orphaned child (conhost/node/shell) without package identity - was evidently still a member of the old container's job: at 20:03:02, during shutdown, the system logged event 217 destroying a Desktop AppX container for the old package 1.34493.1.0 that had been alive the whole time.
- Reboot at 20:03:22; first launch at 20:03:47 succeeded instantly.
Analysis
beforeQuitForUpdate / stealth update takes down the main app, but child processes spawned by Claude Code sessions (shells, MCP servers, console hosts) can outlive it. They hold membership in the old version's AppX container job.
- The new version's container creation then fails at job conversion with
0x80070020 until that job is gone. Since these survivors have no package identity and are not named claude.exe, neither Task Manager's "Claude" group nor tasklist /apps surfaces them; a reboot is the only user-discoverable cure.
- Suggested fix: before (or after)
quitForUpdate, enumerate and terminate all processes in the app's own container/job (the app owns the job handle, so it can do this reliably), or make the post-update launcher detect 0x80070020 and clean up the stale container instead of dying silently.
Repro conditions
Not 100% deterministic, but has occurred repeatedly on this machine: several Claude Code sessions with popout panes + background child processes open, stealth update fires after idle timeout, swap succeeds, relaunch fails until reboot.
Summary
The Windows desktop app's stealth auto-update leaves orphaned child processes that keep the OLD version's Desktop AppX container alive. Every launch of the NEW version then fails with
0x80070020("error encountered converting the job") until the machine is rebooted. The app appears simply dead to the user: clicking the icon does nothing.This machine has hit the "update leaves Claude unlaunchable until reboot" state repeatedly across multiple update cycles (an earlier episode instead showed a "Another program is currently using this file" installer dialog while popped-out session processes were still running).
Environment
Claude_pzs8sxrjxfjjc) updating 1.34493.1.0 -> 1.37937.0.0Timeline (from Windows event logs, 2026-08-25, all times local)
DeferRegistrationWhenPackagesAreInUse; event 658 "Marking package for deferred registration because Claude_1.34493.1.0 is still running". Normal.RegisterByPackageFamilyNamewithForceApplicationShutdownOption. Old version's container destroyed, registration finished successfully at 19:57:51 (event 400).0x80070020: Cannot create the Desktop AppX container for package Claude_1.37937.0.0 because an error was encountered converting the job.0x80070020: Cannot create the process ... error encountered while configuring runtime. [LaunchProcess]The app dies silently. This repeats identically at 20:01:31, 20:01:32, 20:01:51, 20:02:11, 20:02:38 (including two automatic re-register/repair passes, both of which "finished successfully" per event 400 yet launches kept failing).
taskkill /IM claude.exe-> "process not found"). Something else - an orphaned child (conhost/node/shell) without package identity - was evidently still a member of the old container's job: at 20:03:02, during shutdown, the system logged event 217 destroying a Desktop AppX container for the old package 1.34493.1.0 that had been alive the whole time.Analysis
beforeQuitForUpdate/ stealth update takes down the main app, but child processes spawned by Claude Code sessions (shells, MCP servers, console hosts) can outlive it. They hold membership in the old version's AppX container job.0x80070020until that job is gone. Since these survivors have no package identity and are not named claude.exe, neither Task Manager's "Claude" group nortasklist /appssurfaces them; a reboot is the only user-discoverable cure.quitForUpdate, enumerate and terminate all processes in the app's own container/job (the app owns the job handle, so it can do this reliably), or make the post-update launcher detect0x80070020and clean up the stale container instead of dying silently.Repro conditions
Not 100% deterministic, but has occurred repeatedly on this machine: several Claude Code sessions with popout panes + background child processes open, stealth update fires after idle timeout, swap succeeds, relaunch fails until reboot.