Fix it now
0x800F0922 is CBS_E_INSTALLERS_FAILED: an advanced installer inside the update package failed, and the code itself says nothing about why. The servicing log names which one, so read that before you change anything on disk.
DISM.exe /Online /Cleanup-image /Restorehealth
sfc /scannow
Dism /english /online /get-packages /format:table | findstr /i "Staged"
- Open %SystemRoot%\Logs\CBS\CBS.log and search back for the first failure rather than the last. CBS.persist.log holds the older entries once the current log has rolled.
- Search that log for ERROR_FILE_NOT_FOUND and for SecureBootEncodeUEFI, which is the failing task Microsoft documents most often behind this code.
- Check the Task Scheduler Operational log for Event ID 146, which is what that broken task writes.
- Count the files in C:\Windows\Temp. Microsoft documents this code appearing once that folder passes roughly 65,000 files, and the fix is simply to empty it.
- If the get-packages output lists staged packages from earlier failed attempts, remove them as shown in the reference section, then retry the update.
Restart before retrying. Servicing will not begin a new transaction while an earlier one is still pending, and a retry in that state fails without telling you why.
If the update installs and survives the restart, you are done. If it fails again, the next section covers each cause Microsoft documents for this code and how to tell them apart.
Why it happens
A cumulative update is not only files. Alongside the components it replaces, it carries advanced installers and generic commands: small pieces of work that run during servicing to reconfigure something the new files depend on. 0x800F0922 is the servicing stack reporting that one of those failed. That is all it says. It does not name the installer, and it says nothing about your disk, your network or your machine’s capacity.
This matters because the code has attracted a large body of advice that treats it as a disk space error. Microsoft has three separate pages covering it and not one attributes it to a full system partition or to a VPN. What they do attribute it to is a corrupted scheduled task, a permissions problem on the folder holding licence tokens, and a Windows Temp directory with more files in it than servicing can work through. Those are the causes to work, and the servicing log tells you which.
The three codes that travel with this one are the genuine capacity codes, which gives you a clean test. 0x8007000E means not enough storage is available, 0x80070027 means the disk is full, and 0x80070718 means a quota has been exhausted. If any appear alongside, capacity really is the problem. If 0x800F0922 appears on its own, it is an installer failure and freeing space will not touch it.
The SecureBootEncodeUEFI scheduled task is corrupted
You have this one if CBS.log shows ERROR_FILE_NOT_FOUND near the failure, and the Task Scheduler Operational log has Event ID 146.
- Search CBS.log for SecureBootEncodeUEFI and confirm it appears around the failure point.
- Remove any packages left in the Staged state by earlier attempts, using the commands in the reference section.
- Delete the task’s registry entries, listed in the reference section, so Windows can recreate the task, then restart and retry.
This is the cause Microsoft documents specifically for this code during update installation, so work it before anything more invasive.
Servicing cannot write the licence tokens
You have this one if CBS.log shows updates rolling back at the point where licence and product key tokens are being updated.
- Open the properties of C:\Windows\System32\spp and check its permissions.
- Grant write access to the User and Network Service accounts, which is the resolution Microsoft documents for this pattern.
- Retry the update, then restart when it completes.
The Windows Temp directory has too many files in it
You have this one if C:\Windows\Temp holds an unusually large number of files, and other servicing operations such as removing a role or feature also fail.
- Check how many files are in C:\Windows\Temp. Microsoft documents this failing past roughly 65,000.
- Delete the contents of that folder. It is a temporary directory and nothing in it needs preserving.
- Retry the update or the role change that was failing.
The volume genuinely has no room
You have this one if 0x8007000E, 0x80070027 or 0x80070718 appear alongside the main code, rather than it appearing on its own.
- Check the free space you actually have:
fsutil volume diskfree c: - Free space from the storage page at ms-settings:storagesense, then reclaim superseded components with
Dism.exe /online /Cleanup-Image /StartComponentCleanup. - Move user data, virtual machine files or backups off the system volume rather than shaving a gigabyte at a time, then retry with a comfortable margin.
Full reference
Why the code is so quiet about its cause
CBS_E_INSTALLERS_FAILED is raised at the layer that runs advanced installers, not inside the installer that failed. By the time the error surfaces, the specific failure has already been written to the log and the stack is reporting only that the batch did not succeed. This is also why the same code appears when installing an update, when uninstalling a server role and when enabling a feature: all three run advanced installers, and any of them can fail for a reason particular to itself. Reading the log is not a more diligent version of guessing; it is the only way to tell these cases apart.
Clearing packages left staged by failed attempts
Dism /english /online /get-packages /format:table | findstr /i "Staged"
Dism /online /remove-package /PackageName:Package_for_RollupFix~31bf3856ad364e35~amd64~~14393XXXX
Substitute the exact package name from the first command’s output. The example above shows the shape of the name, not a name to type.
Repairing the SecureBootEncodeUEFI task
The task is identified by a GUID held in the registry. Read the GUID first, then remove the four entries that describe the task so that Windows can recreate it.
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Microsoft\Windows\PI\SecureBootEncodeUEFI" /v ID
reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Maintenance\{GUID}" /f
reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Plain\{GUID}" /f
reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks\{GUID}" /f
reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Microsoft\Windows\PI\SecureBootEncodeUEFI" /f
Back up the TaskCache key before deleting anything under it, and substitute the GUID the first command returns. Deleting entries for a different task removes that task.
About the reserved partition
A great deal of advice for this code sends you into the EFI system or System Reserved partition to delete language font files after assigning it a drive letter. That procedure appears nowhere in Microsoft’s documentation, it is offered as the fix for a cause Microsoft does not attribute to this code, and it operates on the partition that makes the machine bootable. It is not in this article for those reasons.
A reserved partition genuinely too small to service is a real condition, and Windows has its own distinct message for it when it happens during an upgrade. If that is what you are seeing, you are looking at a different problem from this code, and the honest answer is that extending that partition means moving the partition next to it, which the built-in tooling will not do. On a managed fleet the practical route is redeployment with a current image, which produces a correctly sized layout. On a single machine, image it before anyone attempts partition surgery.
Logs, and what to search them for
| Location | What to look for |
|---|---|
| %SystemRoot%\Logs\CBS\CBS.log | The failing advanced installer; search for ERROR_FILE_NOT_FOUND and SecureBootEncodeUEFI |
| %SystemRoot%\Logs\CBS\CBS.persist.log | Earlier entries after the current log has rolled; often holds the first failure |
| Task Scheduler Operational log | Event ID 146, written when the SecureBootEncodeUEFI task is broken |
| Windows Update history | Whether the same update is failing repeatedly or a different one each month |
If none of the documented causes apply
- Repair the component store first with RestoreHealth and then the file checker, in that order, because a damaged store produces servicing failures of its own that look like this one.
- Check whether the same update fails on more than one machine. A single machine points at local state; a fleet points at the package or at a policy applied to all of them.
- Try the update as a standalone package from the Microsoft Update Catalog, which changes how it is delivered and sometimes produces a more specific error.
- Keep the CBS.log excerpt around the first failure. It is the one thing that turns this from a generic code into a specific defect anyone can act on.
Every code this article covers
| Code | What it points at | Source |
|---|---|---|
0x800F0922 |
CBS_E_INSTALLERS_FAILED: processing advanced installers and generic commands failed; the servicing log names which one | Microsoft Learn |
0x80070718 |
ERROR_NOT_ENOUGH_QUOTA: not enough quota is available to process this command | Microsoft Learn |
0x8007000E |
ERROR_OUTOFMEMORY: not enough storage is available to complete this operation | Microsoft Learn |
0x80070027 |
ERROR_HANDLE_DISK_FULL: the disk is full | Microsoft Learn |
Confirm the fix worked
- Retry the update and confirm it installs and survives the restart.
- Check Windows Update history and confirm the entry shows as successfully installed rather than retried.
- Search CBS.log after the successful run and confirm no new advanced installer failures were written.
- If you removed staged packages, confirm get-packages no longer lists anything in the Staged state.
- Confirm the following month’s update installs without intervention.
Questions people ask about this
Does fixing this cost anything?
No. Every step is free and uses tools already on the machine. Nothing about this code indicates a licensing problem, and no licence changes the outcome.
Everyone says this is the system reserved partition being full. Why does this article disagree?
Because Microsoft’s own pages for this code do not say that. They document a corrupted scheduled task, a permissions problem on the licence token folder, and too many files in the Windows Temp directory. A too-small reserved partition is a real condition with its own distinct message, and conflating the two sends you into boot partition surgery for a fault that is not there.
What about disconnecting the VPN first?
That advice is everywhere and nothing published supports it for this code. If the machine cannot reach the update source, that produces its own connectivity errors rather than this one. Spend the first attempt on the servicing log instead.
How much free space does the system partition need?
There is no published figure for this code, because free space is not what this code reports. If you are also seeing 0x8007000E, 0x80070027 or 0x80070718, then capacity is genuinely involved and the answer is to leave a comfortable margin rather than clearing exactly enough for one month.
Why does the error mention nothing about what failed?
Because it is raised by the layer that runs advanced installers, not by the installer that failed. The specific reason is written to CBS.log, and reading it is the fastest way to tell these causes apart without guessing.
