Claude Desktop repeatedly enters "Modified, NeedsRemediation" state and fails to launch — persists even after full OS reinstall (Windows MSIX)
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 repeatedly breaks into a "Modified, NeedsRemediation"
state on Windows and refuses to launch, showing "You'll need to go to
advanced options for Claude and select Repair. If you're still having
issues with it, reinstall this app or contact your administrator."
This happens even after a complete uninstall, LocalAppData wipe,
DISM/SFC repair, and full Windows OS reinstall — the app works
briefly after a fresh install, then spontaneously breaks into this
same state again with no user action taken.
What Should Happen?
Claude Desktop should launch normally and remain in a working,
"Ok" registration state after installation — not spontaneously
degrade into "Modified, NeedsRemediation" during normal use, and
a clean reinstall (or even a full OS reinstall) should reliably
restore it to a working state rather than reproducing the same
failure.
Error Messages/Logs
UI error dialog:
"You'll need to go to advanced options for Claude and select Repair.
If you're still having issues with it, reinstall this app or contact
your administrator."
PowerShell:
PS> Get-AppxPackage -Name "*Claude*"
Status : Modified, NeedsRemediation
PS> Remove-AppxPackage -Package "Claude_1.24012.9.0_x64__pzs8sxrjxfjjc"
(completes with no error)
PS> sc.exe start CoworkVMService
[SC] StartService FAILED 87:
The parameter is incorrect.
sc.exe qc CoworkVMService:
SERVICE_NAME: CoworkVMService
TYPE : 210 WIN32_PACKAGED_PROCESS
START_TYPE : 2 AUTO_START
ERROR_CONTROL : 0 IGNORE
BINARY_PATH_NAME : "C:\Program Files\WindowsApps\Claude_1.24012.9.0_x64__pzs8sxrjxfjjc\app\resources\cowork-svc.exe"
DEPENDENCIES : staterepository
SERVICE_START_NAME : LocalSystem
Get-AppPackageLog (Deployment Register operation):
"Deployment Register operation with target volume C: on Package
Claude_1.24012.9.0_x64__pzs8sxrjxfjjc from: (AppxManifest.xml)
finished successfully."
"Finished servicing singleton package Claude_1.24012.9.0_x64__pzs8sxrjxfjjc.
Setting the singleton package state to enabled returned with 0x0."
Get-AppxPackage -AllUsers | Where-Object {$_.Status -ne "Ok"}:
Name Status
---- ------
Claude Modified, NeedsRemediation
Steps to Reproduce
- Install Claude Desktop on Windows from claude.ai/download.
- Use the app normally for a period of time (in my case it worked
fine initially, then broke on its own with no manual changes made
to the install).
- Claude Desktop stops launching. Windows shows:
"You'll need to go to advanced options for Claude and select
Repair. If you're still having issues with it, reinstall this
app or contact your administrator."
- Run
Get-AppxPackage -Name "*Claude*"— Status shows
"Modified, NeedsRemediation".
- Attempt standard recovery:
a. Get-AppxPackage -AllUsers -Name "Claude" | Remove-AppxPackage -AllUsers
b. Remove-Item "$env:LOCALAPPDATA\AnthropicClaude" -Recurse -Force
c. Remove-Item "$env:LOCALAPPDATA\Packages\Claude" -Recurse -Force
d. Reboot
e. Reinstall Claude Desktop fresh from claude.ai/download
- Get-AppxPackage -Name "Claude" immediately shows
"Modified, NeedsRemediation" again, and the app still fails to
launch with the same repair dialog.
- Ran DISM /Online /Cleanup-Image /RestoreHealth and sfc /scannow
to rule out Windows component-store corruption — no change in
behavior.
- Confirmed no other UWP/MSIX package on the system is affected
(Get-AppxPackage -AllUsers | Where-Object {$_.Status -ne "Ok"}
returns only Claude), ruling out a system-wide AppX issue.
- Performed a full Windows reset and clean OS reinstall.
- Installed Claude Desktop fresh on the new OS — worked correctly
for a period of time, then spontaneously broke into the exact
same "Modified, NeedsRemediation" / repair-dialog state again,
with no manual package changes made.
This confirms the issue is not caused by local machine, user profile,
or OS-level corruption, since it recurs even on a freshly reinstalled
Windows system. It points to something in Claude Desktop's own
install/update process (possibly the auto-updater or the
CoworkVMService packaged-service registration) leaving the MSIX
package in a broken state during normal use.
Claude Model
None
Is this a regression?
Yes, this worked in a previous version
Last Working Version
_No response_
Claude Code Version
It's crashed now but installed today only
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
Windows Terminal
Additional Information
Note: This report is filed under Claude Code's issue template, but
the actual bug is in Claude Desktop for Windows (MSIX packaging),
not the Claude Code CLI. Several unrelated form fields above
(Terminal/Shell, Claude Code Version, Platform) don't apply and were
left as N/A — the details in "Steps to Reproduce" and "Error
Messages/Logs" are the accurate, complete account of the issue.
Related open issue: #25162 (Squirrel-based Claude Desktop users
unable to upgrade to MSIX, error 0x80073CFA) — this may be the same
root cause resurfacing post-migration, now also breaking spontaneously
during normal use rather than only during upgrade.
Happy to provide additional logs (e.g. %LOCALAPPDATA%\AnthropicClaude
logs, or full AppXDeploymentServer operational log export) if useful
for diagnosis.
Showing cached comments. Read the full discussion on GitHub ↗
4 Comments
Same issue here on Windows 11 x64, also with package version 1.24012.x.
The app crashed on its own while Claude Code sessions were running, then refused to relaunch with the same repair dialog (Spanish UI: "No se puede abrir esta página. Deberás volver a opciones avanzadas para Claude y seleccionar Reparar").
Repair in Windows Settings fails. Standard uninstall + reinstall from claude.ai/download does NOT fix it — the app installs but still shows the same dialog on launch.
What worked for me:
Without step 3 the reinstall fails with:
"App installation failed with error message: An internal error occurred with error 0x80073D05."
It then broke again the same day, requiring the full sequence a second time.
Notes matching your report: sfc /scannow shows no integrity violations, and my username path is ASCII-only, so this isn't the non-ASCII path issue from #35366.
Additional impact worth flagging: the Claude Code window/tab layout is lost on every recovery, since it lives inside the MSIX package data folder that has to be removed. Sessions themselves survive in ~/.claude and can be recovered with
claude --resume, but the workspace arrangement has to be rebuilt by hand each time.I'm experiencing the exact same issue. Confirmed reproducible on two
different PCs using the same Microsoft account, which further rules
out local machine/profile corruption. Also observed:
returns False even after manually clearing the StateChange registry key
Disclosure: the investigation and this write-up were done by Claude, working on my machine under my direction. The failures, the system, and the calls about what to test are mine.
Environment: Windows 11 build 26200 x64, personal (non-Intune), same package
Claude_1.24012.9.0_x64__pzs8sxrjxfjjc, 7 forced reinstalls over four days. Like yours: installs clean, verifiesOk, runs fine for tens of minutes, then degrades in place with no user action. OnlyRemove-AppxPackageplus a clean reinstall recovers it; re-registration never holds.The payload is provably unchanged when the package is declared
ModifiedStatus: Ok.Ok: byte-identical, 2182 of 2182.LastWriteTimelater than the install timestamp.Nothing on disk changed. Whatever sets the
Modifiedbit is setting a flag, not reacting to a modified payload.The transition is never logged, and no deployment operation was running
AppModel-Runtime/AdminId 68 records status transitions. Relative to the install:| time | Id 68 status |
|---|---|
| T+0 |
0x0→0x80000(install) || T+1s |
0x80000→0x0(healthy) || (never logged) |
0x0→0x2|| T+45m |
0x2→0x80002(removal begins) |At removal the log reports
previous status = 0x2, but no event ever recorded the package entering it. (Get-AppxPackagesaidModifiedat that point, which is how I'm reading0x2— that mapping is inferred.) For the same window: no transition event inAppModel-Runtime/Admin, zero Claude events at all inAppXDeploymentServer/Operationalbetween install and removal, and nothing inAppXDeployment/Operational.This is the key difference from the update-collision reports in this cluster (#63722, #81180, #49655, #73694, #76357). Those all show a deployment operation colliding with the service holding handles —
0x80073D02, events 404/638/9641/9648/9650. Here no deployment operation was running at all and the package still wentModified. So the service holding handles intoWindowsAppsisn't only an update blocker; something flags the package outside deployment entirely.Not a crash
The AppX container created at T+4m was destroyed only at T+45m, by the uninstall — no Id 217 in between. Zero Crashpad dumps, zero WER reports in 14 days, zero
Application Errorevents across 45 days.A reproducible trigger, and a control
%LOCALAPPDATA%\npm-cache\_logs\records one log per npm invocation with exact argv (logs-maxdefaults to 10, so it evicts fast — snapshot it). Three consecutive app sessions:| session | child processes | outcome |
|---|---|---|
| A | npm script starting 6 concurrent Vite dev servers | app dies ~100s later,
0x3CFC|| B | none | orderly
beforeQuit, package stayedOk|| C | same 6-server script | package
Modified~13 min later |Both corruption events follow long-running child processes spawned from inside the app (via its Bash tool). The session in between, with no child processes, quit normally and did not corrupt.
Control: the identical workload started from a separate external PowerShell window, app running normally — 6 Vite servers, 14 node processes, 848 MB total RSS — ran clean for 14.4 minutes, past both failure points. Package stayed
Ok, free RAM flat at 3.1–3.3 GB. Same load, different launcher, no failure. That rules out resource exhaustion and points at the spawning path rather than the workload.This is a trigger, not the cause — #63722 is ~1,000 Intune devices failing at boot with no such processes. But it's a reproducible one, which I don't think anyone else in this cluster has, so it may be the cheapest path to a repro.
Unproven mechanism, offered only because it's the one candidate that fits "no file changed": processes spawned by the app become children inside its AppX container and hold handles into
WindowsAppsfor their lifetime, so tearing the container down with children still live may leave the package flagged with no disk change. If that's right, detaching long-running Bash-tool children from the container would be the fix.Ruled out here, with evidence
| Hypothesis | Evidence against |
|---|---|
| Payload modified, files added or removed | 2182 SHA256 identical; file count identical; no post-install
LastWriteTime|| Antivirus | Defender active (productState 397568), zero detections, zero relevant events |
| Auto-update collision | No deployment events in the failure window at all |
| The bundled VM / VHDX | VM disks live in
LocalCache\...\claudevm.bundle\; the in-packagesmol-bin.x64.vhdxis only a template.VHDMP-Operationalshows the VM wasn't running during the window || Resource exhaustion | Control test above |
| System file corruption |
DISM /RestoreHealthrepaired 1501 items,sfc /scannowclean; broke again anyway || Re-registration as a fix | Auto-remediation ran 4× (Id 400, Remove/StageUserData/Register all "finished successfully");
StatusstayedModified|| Reboot, or Settings → Repair | Neither has ever helped |
One open lead
AppXDeploymentServer/OperationalId 1230 fires on every install reporting hardlinks with no package in the repository.fsutil hardlink liston the named files returns six paths each, spanningMicrosoft.M365Companionsand four orphaned Claude version directories still sitting unregistered inWindowsApps. All four predate my first failure by 3–10 days, so they aren't debris from the reinstall cycle — they look like ordinary per-version auto-update residue. Whether an integrity check can be tripped via a sibling package's hardlinked path isn't something I could test.Note for anyone else gathering data on this
Every reinstall wipes
LocalCache, including the app's ownmain.logand the user's MCP configuration. The recovery destroys the evidence for the incident that caused it, which is likely part of why this cluster has so many reports and so little forensic detail. Preservingmain.logoutside the package before recovering is worth doing.---
Net of all of it: the package can reach
Modifiedwith no deployment operation in flight and not one byte changed on disk. Whatever sets that bit does so without logging it anywhere I could find, and at least one reproducible trigger is long-running child processes spawned inside the app's own container.Independent corroboration of @Katinkabeat's child-process trigger, from a different workload.
Environment: Windows 11 x64, same package Claude_1.24012.9.0_x64__pzs8sxrjxfjjc, ASCII-only user path, ~8 forced reinstalls over four days. Same signature: installs clean, verifies Ok, runs fine, then degrades in place with no user action; only Remove-AppxPackage plus clean reinstall recovers it.
Timeline that matches the trigger:
My workflow runs 6 concurrent Claude Code sessions, and had done so for weeks with zero problems. The failures began within a day of adding a pipeline step that spawns long-running Python child processes from inside the app via the Bash tool (image processing, ~30s of CPU per invocation, run in batches). Nothing else about the workload changed. Same 6 sessions, same volume, same machine — the only new variable was long-running children spawned inside the container.
Consistent with the control test:
I moved session launching out of Claude Desktop entirely and now run Claude Code from VS Code's integrated terminal. Identical workload, identical 6 concurrent sessions, identical Python child processes. No failures since. That's the same "same load, different launcher" result reported above, from a different workload and a different launcher.
Ruled out on my side, with evidence:
One difference from the report above worth noting:
My main.log ends every failure with an explicit GPU process crash, same exit code each time:
"GPU process gone: { type: 'GPU', reason: 'crashed', exitCode: 101457950 }"
In two of three captured failures this is preceded within seconds by "[Preview] Created browser preview" / "[Preview] Created session preview context", and by a jump in Electron process count (10 → 26 in one case) as sessions start. @Katinkabeat reports zero crash artifacts, so this may be a second path to the same end state, or the GPU process death may be a symptom of container teardown rather than a cause. I can't distinguish those with what I have.
Seconding the note about evidence destruction: every reinstall wipes LocalCache including main.log. I only captured these because I started copying main.log out of the package before each recovery. Anyone else hitting this — copy %LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\logs\main.log somewhere safe BEFORE recovering.
Happy to provide the three full main.log captures if useful.