Error 0x800f0900 is Windows Update’s way of saying “I cannot read the instructions.” The update package is fine; the manifest — the XML document telling the servicing engine what the package contains and where everything goes — is corrupted. The engine fails to parse it and aborts with CBS_E_XML_PARSER_FAILURE. Because the corruption usually lives in the component store rather than the download cache, the usual quick fixes bounce off it, which is why this error has a reputation for stubbornness.
This guide goes where the corruption lives: the manifests, the component store, and the servicing metadata. Work in order from least to most invasive.
Manifests are the most underappreciated files in Windows: small XML documents that describe every component, and the servicing engine trusts them absolutely. When one is corrupted, the engine does not guess or skip — it stops, because installing from an unreadable manifest is how systems get destroyed. The error is the engine protecting you; the fix is giving it readable paperwork again.
Why this happens
- Corrupted WinSxS manifests: The XML manifests in the component store get damaged by disk errors, crashes, or cleaner tools.
- Cleaner-tool damage: Debloaters and “optimizers” that prune WinSxS delete manifests the servicing engine later needs to parse.
- Crashed servicing operations: An update interrupted mid-write leaves half-written manifest data.
- Disk errors in the store area: Bad sectors landing on manifest files produce parse failures on exactly those updates.
- Stale update metadata: Corrupted metadata in the update client’s database references manifests that no longer match.
- Failed prerequisite updates: A half-installed prerequisite leaves the store in a state whose manifests do not reconcile.
- Memory corruption during staging: Bad RAM flipping bits in manifests as they are written — rare, but real.
How to fix it
Work through these in order — diagnose first, then act.
Fix 1: Confirm the manifest diagnosis
- Check Update history for the 0x800f0900 code and note which KB triggers it — one KB or all of them matters.
- Open
C:\Windows\Logs\CBS\CBS.log, search for “0x800f0900” or “XML_PARSER,” and read the surrounding lines for the manifest path. - If every update fails with it, the store is broadly damaged; if one KB fails, the damage may be limited to its manifests.
- The log’s manifest path tells you whether you are dealing with a single file or systemic corruption.
Fix 2: Run DISM with an explicit source
- Online DISM often cannot fix manifest corruption because it uses the same damaged store as its reference — mount a Windows 11 24H2 ISO first.
- Run
DISM /Online /Cleanup-Image /RestoreHealth /Source:WIM:<drive>:\sources\install.wim:1 /LimitAccesselevated. - The explicit source gives DISM known-good manifests to compare against and restore from.
- Follow with
sfc /scannowand restart. This resolves the majority of 0x800f0900 cases. If the ISO-sourced DISM still reports unfixable corruption, note which components it names — that list becomes the evidence for the in-place upgrade decision in Fix 7, so you are not upgrading on a hunch.
Fix 3: Reset the update client metadata
- Stop wuauserv, bits, cryptSvc, msiserver; rename SoftwareDistribution and Catroot2; restart the services.
- This clears the client’s metadata database, which may reference manifests inconsistently.
- Check for updates to rebuild the metadata from scratch.
- If the troubleshooter is broken , this manual reset covers the same ground more reliably.
Fix 4: Remove the cleaner tool that caused it
- Uninstall any debloater, “privacy” script, registry cleaner, or “WinSxS cleaner” on the machine — these are the top human cause of manifest damage.
- Undo the tool’s changes if it offers a restore feature.
- Re-run the DISM-with-source repair after removal, since the tool may have deleted files DISM needs to reference.
- Never let such tools touch WinSxS again; the few gigabytes they “save” cost exactly this kind of failure.
Fix 5: Check disk and memory hardware
- Run
chkdsk C: /f /rscheduled at reboot to find and fence off bad sectors in the store area. - Run Windows Memory Diagnostic — bit-flips from bad RAM corrupt manifests during write, producing recurring 0x800f0900 on fresh repairs.
- Review SMART data for the drive.
- If hardware is implicated, no software repair holds until the component is replaced — but rule it in or out now rather than after the fourth failed repair.
Fix 6: Manually clear the offending package
- From the CBS log’s manifest path, identify the specific package failing to parse.
- Try
dism /online /remove-package /packagename:<name>for a stuck partial package — removing the half-installed state lets the fresh update stage cleanly. - Be cautious: only remove the package the log implicates, not packages at random.
- Retry the update after removal; a clean staging area often parses where a cluttered one failed.
Fix 7: In-place upgrade to rebuild the store
- If DISM-with-source, metadata resets, and package removal all fail, download the Windows 11 ISO from the official download page .
- Mount it, run setup, choose Keep personal files and apps — the upgrade rebuilds WinSxS and all manifests.
- This is the definitive fix for manifest corruption beyond the repair tools’ reach.
- Afterward, verify updates install and keep the system clean — also confirm drivers are healthy since the upgrade migrates them.
Fix 8: Harden the machine against recurrence
- Keep third-party cleaners off the machine permanently — the space they save is not worth servicing corruption.
- Maintain 20 GB free so servicing operations never fail mid-write for lack of room.
- Install updates promptly; long gaps between servicing operations let small inconsistencies compound.
- A yearly
DISM /Online /Cleanup-Image /CheckHealthis cheap preventive medicine. Microsoft documents servicing health at Windows support .
Closing
0x800f0900 means the instructions are corrupted, not the update — so repair the instructions: DISM with a real source, clean metadata, remove the tool that broke the manifests, check the hardware, rebuild the store if you must. Manifest corruption sounds exotic, but the fix is methodical, and the update installs the moment the engine can read its own paperwork again.
