[BUG] Claude Desktop (Windows) crashes during self-update while sessions are active, then fails to relaunch
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 デスクトップアプリ:使用中の自動更新でクラッシュし、その後起動できなくなる
概要(日本語)
Claudeデスクトップアプリ(Windows、MSIX配布)を、複数のClaude Codeセッションを同時に開いて
(バックグラウンドの自動化ワークフローとして)使用しているところ、バックグラウンドで自動更新が
走り、実行中のアプリを強制終了しようとして失敗を繰り返し、最終的にクラッシュ。その後、
タスクバーから再起動しようとしても「このファイルはほかのプログラムで使われています」と出て
起動できない、という事象が2日連続(2026-09-02、2026-09-03)で発生しました。
- 実行中だったのは、Windowsの自動化タスク(実際の金融取引システムの一部)を担う複数の
Claude Codeセッション(6セッション程度を同時に開いて運用)でした。
- クラッシュにより、実行中だった全てのセッション・それらが起動していた子プロセスが同時に
停止しました。実運用への実害が出ています。
- タスクマネージャーで見ると、UIが消えた後も「Claude」プロセス自体は残っており、手動で
終了させる必要がありました。その後もすぐには再起動できませんでした。
知りたいこと:
- この挙動(使用中に警告なく強制終了し、後始末が中途半端なまま起動不能になる)は、
他の環境でも広く起きているものか、それとも今回の使い方(多数のセッションを同時に開く)
に起因するものか。
- 以前は更新の際に「再起動してください」という案内が出ていたと記憶しているが、
今回は無警告で強制終了された。この挙動の違いの理由。
- 使用中のアプリへの自動更新を、少なくとも一定時間(例:業務時間中)だけ止める公式な方法は
存在するか(設定画面・アプリ内には見当たらなかった)。
---
Technical details (for engineers)
Environment: Windows 11, Claude desktop app (MSIX package, SignatureKind: Developer),
package family name Claude_pzs8sxrjxfjjc. Multiple concurrent Claude Code interactive sessions
were running (approx. 6), each with its own terminal/agent loop, actively performing file I/O
and periodic tool calls, as part of a background automation workflow.
Observed version transitions (both crashes coincided with an app self-update):
- 2026-09-02:
Claude_1.40609.0.0→Claude_1.40609.1.0 - 2026-09-03:
Claude_1.40609.1.0→Claude_1.44121.2.0
Timeline reconstructed from Windows Event Log
(Microsoft-Windows-AppXDeploymentServer/Operational, Application, System) andC:\ProgramData\Claude\Logs\cowork-service.log — 2026-09-03 example:
09:15:38 [AppXDeploymentServer 603] RegisterByPackageFamilyName started for
Claude_pzs8sxrjxfjjc, option: ForceApplicationShutdownOption
09:15:38 [AppXDeploymentServer 855] updateList: Claude_1.40609.1.0 is updating
to Claude_1.44121.2.0
09:15:38 [AppXDeploymentServer 9650] Terminate of service CoworkVMService
for package Claude_1.40609.1.0 succeeded
09:15:38 [AppXDeploymentServer 9643] TerminateApplications succeeded (x4)
09:15:38 [System/SCM 7040] "Claude" service start type changed:
Automatic -> Disabled
09:15:38 [Application/CoworkVMService] "failed to disarm SCM recovery actions
for this stop ... Access is denied"
09:15:39 [Application/CoworkVMService] "Claude VM Service starting"
09:15:39 [Application/CoworkVMService] "failed to configure SCM recovery
actions ... Access is denied"
-- the same stop/reinstall/start cycle repeats at 09:18:24, 09:20:20,
09:21:12, 09:21:20, 09:21:21 --
-- each retry logs [AppXDeploymentServer 649] "ACLs repaired successfully
... Register next time should succeed" but the next attempt fails again --
09:20:16 [System/SCM 7034] ERROR: "Claude service terminated unexpectedly.
This is the 1st failure."
09:21:49–52 All 6 dependent automation processes (child processes / processes
this app had launched) stop simultaneously. (Confirmed via two
independent application-side audit logs with matching timestamps.)
09:21:52 Google Drive filesystem driver begins unmounting (unrelated app
shutdown activity, consistent with a broader shutdown starting)
09:21:54 [Application/Winsrv] "steam.exe" refused a shutdown request
09:22:03 [System/Kernel-Power 109] "Kernel Power Manager initiated shutdown
switch. Action: Power Action Reboot"
09:22:03 System shuts down
09:22:25 System boots back up
This appears to be the user manually rebooting the PC after finding the app in a broken,
unrelaunchable state (Explorer showed "This file is being used by another program" when trying
to relaunch from the taskbar icon, even after ending the "Claude" process visible in Task Manager).
2026-09-02 had the same shape (update 1.40609.0.0→1.40609.1.0 at 09:10:13, repeatedTerminateApplications retries, all dependent processes stopping at 09:11:56 — 57 seconds after
the update's first forced-termination attempt, vs. ~6 minutes on 09-03).
Key questions for Anthropic:
- Is
ForceApplicationShutdownOptionexpected to retry/fail repeatedly (5+ times over several
minutes, per the [649] "Register next time should succeed" messages) when the app has many
active windows/sessions/child processes, before eventually crashing outright (SCM 7034)? Or
is this itself unexpected/a bug?
- Why does the update path silently force-close the app in this scenario rather than showing a
"restart to update" prompt (which the user recalls seeing in the past for other updates)? Is
there a threshold (e.g., mandatory update, or no interactive foreground window found because
all open windows are background automation sessions) that switches the updater from a
"prompt" flow to a "force" flow?
- After the forced shutdown fails/crashes, the app is left unable to relaunch
("file in use") until the OS is rebooted. Is there a supported way to clear this state without
a full reboot (e.g., a specific set of processes/services to stop, or a repair command)?
- Is there any supported way to defer/pause auto-update for this app specifically (not the
general Windows Store "auto-update apps" toggle, which does not appear to control this app,
given its SignatureKind: Developer — no such per-app control was found in Windows Settings,
and no update-related toggle was found in the app's own Settings screen or its config.json)?
Impact: This crashed a real-money automated trading workflow mid-session on two consecutive
trading mornings, forcing a full stop of that day's operations both times.
Happy to provide the raw Windows Event Log export or cowork-service.log excerpts if useful.
Related but distinct: #91662 reports a superficially similar symptom (desktop app exits while
background sessions are running) but explicitly ruled out AppX/update events as the cause (no
deployment events, identical Store package version before/after). This report is the opposite
case: AppX deployment/update events are directly and repeatedly present in the log at the exact
moment of the crash, pointing to a different, update-triggered mechanism.
What Should Happen?
更新のためにアプリを強制終了する場合でも、実行中のセッションと子プロセスを安全に終了させるか、
少なくとも次回起動時に正常に立ち上がる状態を保つべきです。今回のように、無警告で強制終了を
繰り返した末にクラッシュし、その後「ファイルが使用中」で再起動もできなくなる、という状態には
なるべきではありません。
Error Messages/Logs
09:15:38 [AppXDeploymentServer 603] RegisterByPackageFamilyName started, option: ForceApplicationShutdownOption
09:15:38 [AppXDeploymentServer 855] updateList: Claude_1.40609.1.0 is updating to Claude_1.44121.2.0
09:15:38 [AppXDeploymentServer 9643] TerminateApplications succeeded (x4)
09:15:38 [System/SCM 7040] "Claude" service start type changed: Automatic -> Disabled
09:15:38 [Application/CoworkVMService] "failed to disarm SCM recovery actions ... Access is denied"
(同じ停止→再登録→開始のサイクルが 09:18:24, 09:20:20, 09:21:12, 09:21:20, 09:21:21 に繰り返される)
09:20:16 [System/SCM 7034] ERROR: "Claude service terminated unexpectedly. This is the 1st failure."
09:21:49-52 6つの依存プロセスが同時に停止
Steps to Reproduce
決まった手順では再現しません。以下の条件がそろったときに発生しました:
- Claudeデスクトップアプリで、複数(6個程度)のClaude Codeセッションを同時に開いて使用中
- その最中に、アプリ自身へのバックグラウンド自動更新が開始される
- 2026-09-02、2026-09-03の2日連続で同じ形が発生(version 1.40609.0.0→1.40609.1.0、
および 1.40609.1.0→1.44121.2.0 への更新時)
Claude Model
None
Is this a regression?
I don't know
Last Working Version
1.40609.1.0
Claude Code Version
2.1.223 (Claude Code)
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
PowerShell
Additional Information
関連するが別の問題:#91662は似た症状(アプリが消える)を報告していますが、
AppX/更新イベントの関与を明示的に否定しています。本件はその逆で、AppXの
更新イベントがクラッシュの瞬間に直接・繰り返し記録されています。
生のWindowsイベントログやcowork-service.logの抜粋が必要であれば提供できます。
3 Comments
Independent confirmation on two separate machines. Attaching the
cowork-service.logyou offered, since I have it from the same failure.Environment
Claude_1.44121.2.0_x64__pzs8sxrjxfjjc, SignatureKind DeveloperCoworkVMService, StartType Automatic, binary...\app\resources\cowork-svc.exeMy failure was on the same target version as your second transition — the locked path named in my dialog was
Claude_1.44121.2.0_....The
Access is deniedis not environment-specificCoworkVMServicelogs this on every stop and start, not only during servicing:Consistent with the service account lacking
SERVICE_CHANGE_CONFIGon its own SCM entry.Worth flagging: my machines are corporate-managed under a least-privilege policy, and yours appears not to be, yet both log the same failure. So this does not look like a locked-down-machine edge case — the service seems unable to modify its own SCM configuration under normal conditions, and the warning it emits is describing a defect that is always armed. Servicing is simply when it becomes visible.
Service returns 56 seconds after being stopped
From
C:\ProgramData\Claude\Logs\cowork-service.log(trimmed copy attached):It re-opens its named pipe and re-binds to the package directory it was just asked to release.
Repeated servicing attempts
Application event log, provider
CoworkVMService. Four full stop/start cycles in seven minutes:An earlier cluster on 2026-09-01 at 19:46 and 20:53–20:56 shows the same pattern.
Worth noting: this is not a crash
On my machine there was no fault at all:
%APPDATA%\Claude\Crashpad\reportsis empty.Claude.exein the prior 7 days.The process termination is initiated by Windows for servicing, which matches the
TerminateApplications/ForceApplicationShutdownOptionevents in your log.Orphaned child processes
While running, the app has ~14
claude.exeprocesses, all children of one Electron main process. Twelve run from the WindowsApps package directory; two run from%APPDATA%\Claude\claude-code\<version>\claude.exe, the bundled Claude Code CLI backing the Code tab.Those CLI children are what blocked Windows shutdown for me and forced the reboot. This overlaps with the orphaned-child behavior in #91662, which you already noted as related but distinct — agreed, that one has no servicing component.
This may also bear on your question about whether
ForceApplicationShutdownOptionshould have succeeded.TerminateApplicationsreports success against the package's own processes, but the CLI children run from%APPDATA%\Claude\claude-code\<version>\, outside the package. They would not be covered by package-scoped termination, and they survive.A reboot is not actually required
Killing the leftovers is enough to recover:
Then relaunch and let the update install. This avoided the reboot on the second occurrence for me.
Suggested direction
OpenServicereturningAccess is deniedas a hard condition rather than a warning — the code path already logs the exact consequence that then occurs.SERVICE_CONTROL_STOP, so a restart cannot hold the swap open.cowork-service-trimmed-20260901-onward.log
Same failure here (Windows 11 Enterprise 26100,
Claude_pzs8sxrjxfjjc, 1.40609.1 → 1.44121.2 on 2026-09-03, and 1.40609.0 → 1.40609.1 on 09-01), including theRepairAppRegistrationOption/ event 649 "Register next time should succeed" loop and SCM 7034 you describe, with the app writing nothing tomain.logon any launch attempt until a reboot.I've posted the full timeline and redacted log extracts on #89680 rather than duplicating them here — that thread has the root-cause analysis for this signature: the launch failure is AppModel-Runtime 215/208
0x80070020("error encountered converting the job"), caused by the previous version's container silo still having its registry hives mounted, not by a surviving named process. That also answers your third question: @bugale'sNtUnloadKey2force-unload of the stale\REGISTRY\WC\Silo*Claude mounts recovers it in place without a reboot, and @J3TH4CK's sign-out recipe works if the MSIX StartupTask is disabled first.One data point relevant to your second question about prompt-vs-force: on my machine the force path is taken by the app itself, not by Windows —
main.loglogs[stealth-update] Triggering stealth update after idle timeoutfollowed bybeforeQuitForUpdate, and in my case that "idle timeout" fired while a Cowork remote-tools session was still holding keep-awake. So the trigger is an app-side idle heuristic that doesn't account for active sessions or in-flight responses, which matches your experience of it firing under six live Claude Code sessions.Follow-up: recurrence on 1.52386.3.0, plus a second, separable failure mode
Short answer to your question 3 first — yes, there is a way to clear the unrelaunchable state without rebooting: sign out of Windows and sign back in. Verified here 2026-09-12 with the machine never rebooted (uptime held at 878 minutes across the whole incident). Details in section 3 below, including why a reboot has been necessary up to now and what the dialog is actually reporting. @fritzschlechter — this may save you the reboot too.
Recurred on this machine 2026-09-11 into 09-12. Two things worth adding: a much cleaner diagnostic for the original failure, and a second failure mode that wears the same dialog but is not a file lock at all. Fixing the first one did not make the app launch.
Environment
Claude_1.52386.3.0_x64__pzs8sxrjxfjjc, SignatureKind Developer1.44121.2.0CoworkVMService, StartType Automatic, binary...\app\resources\cowork-svc.exe---
1. A cleaner diagnostic: AppX Event 658
Microsoft-Windows-AppXDeploymentServer/Operationallogs this at the moment the update gets stuck:This is more useful than the service log for triage, because it names both packages explicitly — the new one waiting to register, and the old one whose surviving process is blocking it.
The update had already downloaded and staged successfully. It simply could not register. The dialog points at the new package path, which is misleading — people reasonably assume the new files are locked, when the actual blocker is a process still running out of the old package directory.
The corresponding success event, once it clears:
Suggestion: if the app detects its own update has been pending unusually long, surfacing "waiting for a previous version to exit" rather than a Windows sharing-violation dialog would save a lot of misdirected effort.
---
2. Refinements to the workaround
Three corrections to what I posted previously.
sc stop CoworkVMServicealone is sufficient. No need to kill app processes first.Do not bother trying to disable the service first. I tried:
It silently fails even when elevated —
Win32_Servicestill reportedStartMode: Autoafterward. This is presumably the same missingSERVICE_CHANGE_CONFIGright that produces theopen service: Access is deniedwarnings the service already logs. Worth flagging because it means an administrator cannot pre-emptively disarm the service by policy as a mitigation.Registration completes on AppX's own schedule, not immediately. On this occurrence the service was stopped at ~23:50 and registration completed at 23:53:52 — roughly three minutes later, unattended. Relaunching during that window just reproduces the dialog and makes it look like the fix failed. Worth stating explicitly in any docs or messaging.
---
3. Second failure mode: launch fails on container creation (
0x80070020)This is the part I think is new.
After registration completed successfully — package
Status: Ok, only1.52386.3.0registered, old version gone, service binary resolving to the new path — the app still would not launch, with the identical dialog.It is not a file lock. From
Microsoft-Windows-AppModel-Runtime/Admin:Reproduced deliberately by launching via AUMID (
shell:AppsFolder\Claude_pzs8sxrjxfjjc!Claude) with the log open:The sequence is the diagnosis:
The package files are demonstrably not locked: a process was successfully added to a container in that same directory one second before the failure.
0x80070020isERROR_SHARING_VIOLATION, but onAssignProcessToJobObjectit does not mean "file in use" — it indicates the process is already in a job object that will not accept nesting, which matches the "converting the job" wording. Windows maps the raw code to its generic file-sharing string, which is why the user-visible dialog is identical to the genuine file-lock case.Process enumeration during the failure confirmed the only package process running was
cowork-svc.exe(parentservices.exe). No orphaned app processes.Fix: signing out of Windows and signing back in clears it. A reboot is not required.
Verified 2026-09-12: new interactive logon at 00:15:41, machine not rebooted (uptime held at 878 minutes across the whole incident), app launched normally on the first attempt with a healthy 11-process Electron fan-out.
Since a session recycle is sufficient and the failure did not reappear in the fresh session, this looks like accumulated per-session job/container state rather than anything resident on the machine — plausibly a downstream consequence of servicing repeatedly creating and destroying containers during the stalled update. I'd treat that as a hypothesis rather than established; it's one observation.
---
4. Why this matters for triage
The two failures are separable and were present simultaneously:
Repairing registration did not restore launchability, and the dialog is identical for both. Anyone following the existing workaround will fix Mode A, see the same dialog, and reasonably conclude the workaround does not work.
If it's useful, a one-line distinction:
AppXDeploymentServerEvent 658 → genuine lock, stopCoworkVMService, wait.AppModel-RuntimeEvent 215/208 with0x80070020→ not a lock, sign out and back in.Happy to attach the full
cowork-service.logand the AppModel-Runtime export if either would help.