HomeNewsletterCommunityMVP FeedToolsArchiveBlogToday's NewsAboutServicesQuick Links Subscribe free
← Back to Blog
Autopilot AutopilotEnrollment Status PageESPWindows Update for BusinessWindows Update client policiesUpdate ringsPolicy CSPIntuneProvisioningPowerShell

Your Update Deferral Policy And The Quality Update Autopilot Installs During OOBE Meet Inside The ESP

IA
Imran Awan
21 August 2026

A brand new laptop finishes Windows Autopilot provisioning, reaches the desktop, and immediately puts a restart prompt in front of the user. Another laptop from the same batch reaches the desktop looking clean, then stays a month behind on patches for a fortnight. Neither outcome was chosen by anybody. Both are the same collision. The out-of-box experience (OOBE) wants to install this month's monthly security update release. Your Windows Update deferral policy wants to hold it back. They meet inside the Enrollment Status Page (ESP), and the order in which they meet decides what the user sees.

The short version

Windows OOBE now installs monthly security update releases during Autopilot, controlled by the ESP setting Install Windows quality updates (might restart the device). Microsoft documents that your Update ring deferrals and pauses are honoured, and that the ESP does not exit until the ring settings have synced. So an aggressive quality deferral does not break provisioning. It simply makes the OOBE update stage find nothing. The real failure mode is setting Block device use until all apps and profiles are installed to No, because the device can then leave the ESP before either the ring policy or the updates land. Verify the outcome by reading PolicyManager\current\device\Update, which holds the resolved policy, not PolicyManager\default\Update, which holds only metadata.

The problem: the device patched itself, or refused to, and nobody decided which

For years a device that came out of Autopilot was a device on whatever build the factory image shipped with. Patching was somebody else's problem, handled later by Windows Update for Business. That has changed. Microsoft now documents that the Windows out-of-box experience installs the latest available monthly security update releases by default, so devices are secure and up to date from day one.

Microsoft's wording on the new control is worth quoting, because it sets expectations correctly: "Windows OOBE is used by Intune and by Windows Autopilot scenarios through the Intune enrollment status page (ESP) configurations." This is not a separate Autopilot feature. It is Windows OOBE behaviour, gated by an Intune ESP setting.

That produces three symptoms in the field. All three look like bugs when you do not know the mechanism.

The first symptom is provisioning that takes far longer than your fleet baseline. Microsoft states that installing the quality updates during OOBE adds 20 to 40 minutes to the provisioning process. The documented default ESP time limit is 60 minutes. If you never raised that limit, you have now asked one hour to cover both your application payload and a cumulative update.

The second symptom is a freshly provisioned device that wants to restart. Microsoft documents that a restart might be required, and that if a restart occurs, the user is not automatically signed in to Windows. On a self-deploying or kiosk device that relies on autologon this is not cosmetic. Microsoft says restarts "can break some autologon provisioning scenarios".

The third symptom is the opposite, and it generates the angriest tickets. An administrator turns the setting on, watches a provisioning run, and sees no update screen at all. The device reaches the desktop on the same build it started on. Nothing failed. The Windows Update scan ran, obeyed a 30-day quality deferral, found that the current monthly release was 11 days old, and correctly offered nothing.

Context: Windows Update for Business (WUfB) has been renamed. Microsoft's current documentation calls it Windows Update client policies, and notes "This feature was formerly known as Windows Update for Business." The Intune object is still called an Update ring, and the underlying configuration service provider (CSP) node names have not changed, so both names appear in the same tenant.

Why it happens: two update regimes meet inside the ESP

The mechanism is a sequence, and the sequence is documented. Understanding it removes almost all the surprise.

Step one: the ESP setting decides whether a scan happens at all

The setting is Install Windows quality updates (might restart the device). Microsoft describes what each value does. Set to Yes, "at the end of OOBE, the device checks Windows Updates for any missing and applicable monthly security update releases", and a page shows the update progress if updates are found. Set to No, monthly security update releases are not installed and the device continues to the desktop as usual.

Two documented details about the default trip people up. On new ESP profiles the setting defaults to Yes. On existing ESP profiles it defaults to No until you edit the profile. So a tenant with a five-year-old ESP profile behaves differently from a tenant that created one last week, with no visible difference until you open the blade.

intune.microsoft.comDevices › Device onboarding › EnrollmentWindows tab › Windows AutopilotEnrollment Status Page

The documented click path to change it is:

  1. Sign in to the Microsoft Intune admin center.
  2. Select Devices, expand Device onboarding, then select Enrollment.
  3. On the Windows tab, under Windows Autopilot, select Enrollment Status Page.
  4. Select the profile that applies to your provisioning devices, then select Properties.
  5. In the Settings section, select Edit.
  6. Set Install Windows quality updates (might restart the device) to Yes or No deliberately, then select Review + save.
Gotcha: Microsoft documents that this setting "doesn't support user-targeted ESP profiles". The device uses the highest priority device-targeted profile, which is typically the default ESP profile. If your carefully built ESP profile is assigned to a user group, the value you configured in it is not the one being read. Worse, if the ESP page is disabled, quality updates will not install at all.

Step two: the ring policy has to arrive before the scan

This is the part that answers the deferral question directly. Microsoft's documentation says: "Update rings settings, such as monthly security update release deferrals and pauses, are honored. The ESP page doesn't exit until ring settings are synced. This process ensures sure that the right settings are used when Windows Update scan occurs."

So the two intentions are not actually racing. The ESP is designed to sequence them. Elsewhere in the same article Microsoft is explicit about the order: "ESP applies any Update rings policies and then applies the quality updates. So, your organization policy is honored."

That is the good news. The bad news is that this ordering guarantee depends on a second setting entirely.

Watch out: Microsoft documents that to ensure monthly security update releases are installed you must set Block device use until all apps and profiles are installed to Yes. When it is set to No, "the device might exit ESP before the following items are applied: Windows Update for Business (WUfB) policies, Monthly security update releases." A non-blocking ESP is the documented way to break the sequencing guarantee, and the result is neither your ring policy nor your updates.

Step three: the deferral does exactly what deferrals do

Once the ring policy is on the device, the OOBE scan is governed by it. The relevant node is DeferQualityUpdatesPeriodInDays, documented in the Policy CSP with an allowed range of 0 to 30 days and a default of 0. Microsoft's description of the matching Intune setting is unambiguous about the arithmetic: "Specify the number of days from 0 to 30 for which quality updates are deferred."

Play that forward on a real calendar. Monthly security update releases publish on the second Tuesday of each month. Suppose you set a 14-day quality deferral, which is a completely reasonable production value, and you provision a device on the 16th. The current release is four days old. The scan runs, the deferral holds it, and nothing installs. The device reaches the desktop on the factory build. That is your policy working, not the feature failing.

A pause behaves the same way but harder. PauseQualityUpdatesStartTime takes a date string, and Microsoft documents the pause period as 35 days from the specified start date. While the pause holds, provisioning devices get nothing, which is usually exactly what you want during an incident.

Tip: Microsoft recommends using the ring rather than the ESP as your emergency brake. "By using Update Rings to manage updates, administrators don't need to go to both the ESP and Update Rings to pause an update. Pausing an update via Update Rings pauses the update on both devices being provisioned, for example running Windows Autopilot, and devices that are already enrolled." One pause, both populations.

Step four: where the assignment can quietly miss

Microsoft lists the supported configurations. The device must run a currently supported version of Windows 11, and be assigned an ESP profile with the setting configured to Yes. It must also be either registered for Windows Autopilot, or, if it is not registered, assigned using the All Devices assignment. The same article adds that for a device not registered as a Windows Autopilot device, All Devices assignments must be used for both the Update Rings and the ESP profile settings.

Two scenarios are documented as unsupported outright. Windows Autopilot device preparation does not use the ESP, so the setting is not applicable and monthly security update releases cannot install during OOBE. And in Windows Autopilot for pre-provisioned deployment, the updates are not installed during the Technician Flow, though the setting is honoured during the User Flow.

How to verify: read the policy the device actually resolved

Console reporting tells you what you assigned. It does not tell you what the device resolved. For that you read the registry, and this is where a lot of published guidance goes wrong.

Shared parent key: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\current\device\Update

Microsoft's Update ring troubleshooting article states it directly: "If Intune successfully deploys the Windows Update ring policies to the target device, those settings appear in the Registry Editor under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\current\device\Update." The same article repeats the path when describing how to monitor the Windows Update source keys.

There are three registry surfaces involved, and they are easy to confuse.

Registry surfaceWhat actually lives thereRead it to answer
PolicyManager\current\device\UpdateThe resolved value for each Update policy node, written by the Policy CSP for the winning providerWhat is this device enforcing right now
PolicyManager\default\Update\<NodeName>Per-node metadata in a subkey: the shipped default, the allowed low and high range, the merge algorithm, and the name of the blocking Group Policy valueWhat Windows ships with, and what range is legal
SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate and its AU subkeyValues written by Group Policy or ADMX ingestion, including anything left behind by a stale Group Policy object or a Configuration Manager clientWhether a second source is also configuring Windows Update
Gotcha: the default path is a trap because it looks authoritative. On a live Windows 11 device, default\Update\DeferQualityUpdatesPeriodInDays is a subkey holding value, lowrange, highrange, mergealgorithm, policytype and GPBlockingRegKeyPath. Its value is the Windows default of 0, regardless of what your Update ring says. Read it and you will conclude there is no deferral on a device that has a 14-day deferral in force.

Here is the read, on the correct key.

PowerShell — on the device (run elevated)
$resolved = 'HKLM:\SOFTWARE\Microsoft\PolicyManager\current\device\Update' # The RESOLVED policy. This is the path Microsoft documents for verifying Update rings. Get-ItemProperty $resolved | Select-Object DeferQualityUpdatesPeriodInDays, DeferFeatureUpdatesPeriodInDays, PauseQualityUpdatesStartTime, AllowAutoUpdate # Healthy provisioning ring: DeferQualityUpdatesPeriodInDays is 0 and no pause date. # A non-zero value here is exactly why the OOBE update stage found nothing. $default = 'HKLM:\SOFTWARE\Microsoft\PolicyManager\default\Update' # Contrast: the default path holds metadata subkeys, not the effective value. Get-ItemProperty (Join-Path $default 'DeferQualityUpdatesPeriodInDays') | Select-Object value, lowrange, highrange, GPBlockingRegKeyPath # value = 0 here on every device, even one with a 14 day deferral applied. Do not # report this number as the deferral in effect.

The same values in Registry Editor, so you know what a correct read looks like on a device that has both an MDM deferral and a Group Policy leftover.

Registry Editor
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\current\device\Update
NameTypeData
DeferQualityUpdatesPeriodInDaysREG_DWORD0x0000000e (14)
DeferFeatureUpdatesPeriodInDaysREG_DWORD0x00000000 (0)
PauseQualityUpdatesStartTimeREG_SZ(value not set)
AllowAutoUpdateREG_DWORD0x00000002 (2)
ConfigureDeadlineForQualityUpdatesREG_DWORD0x00000007 (7)
Illustrative. The 14-day quality deferral highlighted above is why a device provisioned four days after Patch Tuesday installs nothing during OOBE.

Every node worth checking after a provisioning run, all under that same parent key.

Value namePolicy CSP node, documented rangeWhy it matters during OOBE
DeferQualityUpdatesPeriodInDaysint, range 0 to 30, default 0The single value that decides whether the OOBE scan has anything to offer
PauseQualityUpdatesStartTimestring, yyyy-mm-dd, 35-day pause windowA live pause means provisioning devices install nothing, by design
DeferFeatureUpdatesPeriodInDaysint, range 0 to 365, default 0Not part of the OOBE quality update, but explains a device staying on its factory version
PauseFeatureUpdatesStartTimestring, yyyy-mm-ddThe same, for feature updates
BranchReadinessLevelint, default 16A prerelease channel on a provisioning ring is almost never intended
TargetReleaseVersion with TargetReleaseVersionInfoPins the device to a specific Windows versionA stale pin blocks the version you thought you were shipping
AllowAutoUpdateint, range 0 to 5, default 2Decides download, install and restart behaviour right after first sign-in
ActiveHoursStart and ActiveHoursEndint, range 0 to 23, defaults 8 and 17Governs when a post-provisioning restart is allowed to happen
ConfigureDeadlineForQualityUpdatesint, 2 to 30 daysHow long a device that skipped the OOBE update can stay unpatched
ConfigureDeadlineGracePeriodint, 0 to 7 daysHow long after the deadline before a restart is forced
ConfigureDeadlineNoAutoRebootWhether the device may reboot outside active hours before the deadlineBlock that and you postpone the restart, you do not remove it
ExcludeWUDriversInQualityUpdateWhether Windows Update drivers are includedExplains a device that patched but picked up no drivers

Then check the diagnostic surface. Microsoft's troubleshooting guidance points at two channels. Policy delivery shows up under Applications and Services Logs, then Microsoft, then Windows, then DeviceManagement-Enterprise-Diagnostics-Provider, then Admin. Update client behaviour shows up under WindowsUpdateClient, then Operational.

Channel: Microsoft-Windows-WindowsUpdateClient/Operational
Event IDDocumented messageWhat it tells you after provisioning
17Installation ready: updates downloaded and ready, an administrator should log onBits landed, but the install is waiting on a sign-in
18Installation ready: updates downloaded, scheduled to install at a stated timeThe OOBE stage handed the install to the scheduler instead
19Installation successful: Windows successfully installed the following updateThe clean signal. The OOBE update stage did its job
20Installation failure: Windows failed to install the following update with errorThe update was offered and failed. Take the error code from the event
21Reboot required: until restarted, Windows cannot search for or download new updatesExactly the restart prompt your day-one user is complaining about
22Restart required: the computer will be restarted within a stated number of minutesAn automatic restart is already scheduled on a device just handed over
25Automatic Updates Agent failed to check for updates with errorThe scan itself failed, so no deferral decision was ever reached
26Automatic Updates Agent successfully found a stated number of updatesFound zero on a supported build is the deferral signature
31Windows Update failed to download an updateOffered and accepted, but the payload never arrived
41An update was downloadedConfirms the scan produced something the policy allowed
Event Viewer
Microsoft-Windows-WindowsUpdateClient/Operational
LevelEvent IDSummary
Information26Windows Update successfully found 1 updates.
Information41An update was downloaded.
Information19Installation successful.
Warning21Reboot required to complete installation.
Error25Failed to check for updates with error.
Illustrative. A device that installed during OOBE shows 26, then 41, then 19. A 21 immediately afterwards is the restart your user meets on day one.

The fix: design rings that cooperate with provisioning

The goal is not to pick a side. It is to make the sequence deliberate. Six changes do it.

1. Make the ESP blocking, or the sequencing guarantee does not apply

Set Block device use until all apps and profiles are installed to Yes in the ESP profile your provisioning devices actually receive. This is the documented prerequisite for the Windows Update client policies and the monthly security update releases both being applied before the device reaches the desktop.

2. Give the ESP a time limit that can absorb an update

The documented default is 60 minutes, set through Show an error when installation takes longer than specified number of minutes. Microsoft documents that the OOBE quality update adds 20 to 40 minutes. Add that to your measured application install time and set the limit from evidence, not habit.

3. Assign the Update ring to the same population as the ESP profile

The documented path for the ring policy:

intune.microsoft.comDevices › WindowsUpdate rings for Windows 10 and later
  1. Select Devices, then Windows, then Update rings for Windows 10 and later.
  2. Open, or create, the ring that provisioning devices will receive.
  3. Under Update settings, set Quality update deferral period (days) to the value you actually intend for a day-zero device.
  4. Under User experience settings, review Automatic update behavior, Active hours start and Active hours end, because these govern the first restart.
  5. In Assignments, target the same devices your ESP profile targets. For devices not registered for Windows Autopilot, Microsoft documents that All Devices must be used for both the ring and the ESP profile.
  6. Confirm delivery on the ring's View report, then verify on a device using the registry read above.

4. Decide the provisioning deferral on purpose

A dedicated provisioning ring with Quality update deferral period (days) set to 0 means a device leaves OOBE current. Your production rings can keep whatever deferral your change process requires, because they apply to devices already in service. If instead you want new hardware to arrive on the tested build, keep the deferral and accept that the OOBE update stage will usually find nothing. Both designs are valid. What is not valid is inheriting a 30-day deferral by accident and then filing a bug against the ESP setting.

5. Handle the autologon and pre-provisioning cases explicitly

For self-deploying, kiosk and Teams Rooms style devices that depend on autologon, Microsoft's recommendation is direct: in these scenarios, set Install Windows quality updates to No. For Windows Autopilot device preparation, and for the Technician Flow of a pre-provisioned deployment, the setting is not honoured at all, so plan the first patch cycle for after provisioning rather than during it.

6. Cover the Group Policy path, and know when it applies

The same deferral exists in Group Policy, and the Policy CSP documents the mapping. The Group Policy path is:

Computer ConfigurationAdministrative Templates › Windows Components › Windows UpdateManage updates offered from Windows UpdateSelect when Quality Updates are received

The feature update equivalent is Select when Preview Builds and Feature Updates are received, in the same folder. Both come from WindowsUpdate.admx, and both write into HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate. On a Microsoft Entra joined Autopilot device there is no domain Group Policy in play during OOBE, so this path matters in two situations. The first is a Microsoft Entra hybrid joined deployment, where policy arrives once the device can reach a domain controller. The second is a co-managed estate where an old object is still writing values. Microsoft also lists a limitation worth remembering as a known issue: "ESP doesn't apply to a Windows device that was enrolled with Group Policy (GPO)."

Context: if you manage updates with Windows Autopatch, the guidance differs, because Autopatch groups do not support assigning to All Devices. Microsoft documents two supported alternatives. Use Update ring policies from the Devices | Windows Updates screen with All Devices assigned, or use groups of devices registered with Windows Autopilot inside Autopatch groups. Expedited updates are documented as not part of the OOBE installation, and will start sometime after OOBE completes.

Proof it worked: a boring first boot

A correctly designed provisioning path produces an unremarkable device. The companion script reads the resolved policy, the competing Group Policy surface, the build, the pending reboot markers and the Windows Update client events, then gives you a single verdict.

PowerShell — Get-OobeUpdatePolicyState.ps1 output
============================================================================== Resolved Windows Update policy (what the device is enforcing) ============================================================================== Source: HKLM:\SOFTWARE\Microsoft\PolicyManager\current\device\Update Offering controls: these decide what a Windows Update scan is allowed to offer. DeferQualityUpdatesPeriodInDays 7 # quality updates held for 7 day(s) DeferFeatureUpdatesPeriodInDays 0 PauseQualityUpdatesStartTime (not set) Observed (not documented by Microsoft): 19 _WinningProvider value(s) Distinct winning provider ids: 2 More than one means two policy sources are writing Update nodes on this device. ============================================================================== Verdict ============================================================================== Verdict : REVIEW Signals : - Quality updates are deferred by 7 day(s). A provisioning scan will skip any release younger than that. - Group Policy or ADMX values are present under the WindowsUpdate key. Two sources are configuring Windows Update on this device. # Real output from a managed test device, with hostname and identifiers removed. # This is the "why did OOBE install nothing" signature: a deferral plus a stale GPO.

Run it as a Microsoft Intune Remediations detection script, as a Win32 app detection script, or as a one-off sweep across a build batch. Add -JsonPath for an inventory pipeline, -EventLookbackDays 3 immediately after a provisioning run, and -SkipEventLog when the session is not elevated. It is read-only, and it aborts rather than reporting an empty policy set, because "no deferral configured" and "could not read the key" are very different conclusions.

Then close the loop in the console and confirm the two settings agree with each other.

Microsoft Intune admin center — Enrollment Status Page profile
Device assigned
ProfilePROV-ESP-BLOCKING
Install Windows quality updatesYes
Block device use until all apps and profiles are installedYes
Show an error when installation takes longer than120 minutes
AssignmentDevice group, not user group
Illustrative. The blocking setting and the raised time limit are the two documented prerequisites for the update stage completing.

A good outcome looks like this. The ESP profile is device-assigned and blocking. The resolved DeferQualityUpdatesPeriodInDays matches the ring you intended for day-zero hardware. No pause date is set unless you set it. No values sit under the Group Policy WindowsUpdate key. The Operational channel shows 26, then 41, then 19, and any event 21 is followed by a restart that happened inside provisioning rather than in front of the user. When that is true across a whole build batch, your deferral policy and your provisioning process have stopped arguing, because you decided the order instead of discovering it.

References

Microsoft MVP community deep-dives

AuthorArticleWhy it is relevant
Rudy Ooms (call4cloud)Windows Autopilot: Installing Windows Updates during setup (OOBE)Walks the exact feature this post covers, and reaches the same conclusion on rings. The ESP toggle decides whether the check happens, the Update ring decides what it may install.
Ben Whitmore (MSEndpointMgr)Deep Dive: Troubleshooting Windows Update Scan SourceTraces how Group Policy, the settings catalog and Configuration Manager all write into the same Windows Update surfaces, including PolicyManager\current\device\Update.
Peter van der WoudeEasily configuring Windows Update for Business via Windows 10 MDMThe long-standing reference for the resolved MDM Update policy living under PolicyManager\current\device\Update, with the deferral ranges spelled out.
PowerShell — companion script

Download it from Imran76Awan/Windows-Autopilot-Scripts — no sign-in required. It is read-only: it reports and never changes a device or anything in Intune. Validate it in your own environment before relying on the output.

Get-OobeUpdatePolicyState.ps1 — Reports the Windows Update policy actually in effect, the build, and the pending-reboot state
View all scripts on GitHub
Was this post helpful?
React below — no account needed
Share this post
LinkedIn X / Twitter Reddit Bluesky

More from EndpointWeekly

Autopilot
The ESP Hit Its Time Limit, The User Clicked Continue Anyway,…
The Enrollment Status Page time limit is not a patience setting. It is the moment Windows…
Autopilot
Which apps actually block the Enrollment Status Page (and why…
You set the ESP to block until your required apps install, it cleared in four minutes,…
Autopilot
Enrollment Configuration Priority: Why Your Second ESP Profile…
Device configuration profiles merge. Device enrollment configurations do not. Exactly one…