HomeNewsletterCommunityMVP FeedToolsArchiveBlogToday's NewsAboutServicesQuick Links Subscribe free
← Back to Blog
Autopilot AutopilotWindows Hello for BusinessPIN resetIntuneMicrosoft Entra IDTemporary Access PassEnrollment Status PagePassportForWork

The Autopilot PIN nobody can reset: Windows Hello recovery on day two

IA
Imran Awan
21 August 2026

A Windows Autopilot deployment is usually judged on day one. The device arrives, the user signs in, the Enrollment Status Page runs, and the desktop appears. Shortly after that the machine asks the user to create a Windows Hello PIN. Everyone declares the deployment a success and moves on.

Day two is where the design gets tested. The user comes back from a weekend and stares at a PIN pad. They cannot remember the six digits they invented while a progress bar was spinning at them. On a device that has never shown them a password prompt, that PIN was effectively their only credential. What happens next depends entirely on recovery infrastructure that most projects never scheduled.

The short version

Windows Hello for Business is enabled by default on Microsoft Entra joined devices, so Autopilot hands every new user a PIN whether you planned for it or not. Recovery is a separate, opt-in build, because Microsoft documents PIN recovery as off by default. That leaves destructive PIN reset as the only path, and destructive reset deletes the whole Windows Hello container. On hybrid joined key trust devices it does not work from the lock screen at all. Deploy the PIN reset service, the Enable Pin Recovery policy and a Temporary Access Pass policy before the first Autopilot device ships.

The problem: a credential with no recovery path behind it

Start with what a user-driven Autopilot enrolment actually gives the user. They authenticate once during the out-of-box experience, which is abbreviated as OOBE. They might authenticate with a password. They might authenticate with a Temporary Access Pass, abbreviated as TAP, which is a time-limited passcode an administrator issues. Either way, that single authentication carries them through Microsoft Entra join and Intune enrolment.

Then the Enrollment Status Page, abbreviated as ESP, takes over. Microsoft documents that the ESP tracks three phases: device preparation, device setup and account setup. It tracks applications, security policies, certificate profiles and network connections. It does not track Windows Hello for Business enrolment. Hello provisioning starts after the ESP has finished with the user.

So the PIN prompt is the last thing that happens in the build. It is also the one thing nobody watched. The user picks a PIN, confirms it, and reaches the desktop.

Microsoft's provisioning documentation is explicit about what has just been created. A key pair is generated on the device. The public key is registered with the Azure Device Registration Service. The PIN is the gesture that authorises use of the private key.

That is a good credential. It is hardware-bound and phishing-resistant. It is also, on a brand new corporate device, frequently the only credential the user has ever successfully used to unlock that machine.

Context: the ESP is not a Windows Hello gate. Microsoft's ESP documentation lists security policies, certificates, network connections and apps as the tracked items. Windows Hello for Business is not in that list. If you assign a Hello configuration policy and expect the ESP to hold the desktop until it lands, you are relying on behaviour Microsoft does not document.

Now break it. The user forgets the PIN. Microsoft documents two forms of PIN reset, and the default is the destructive one. In a destructive reset the existing PIN and the underlying credentials are deleted. That includes any keys or certificates that other services added to the Windows Hello container. A new sign-in key and a new PIN are then provisioned from scratch.

Destructive reset needs no configuration, which is exactly why teams never think about it. It also has requirements the day-two user may not be able to meet. Microsoft states that on Microsoft Entra hybrid joined devices the user must have corporate network connectivity to a domain controller to complete a destructive reset. A remote user on home broadband does not have that.

Watch out: destructive PIN reset is not a PIN change. Microsoft documents that the user's existing PIN and underlying credentials, including any keys or certificates added to their Windows Hello container, are deleted from the client. The user must then re-register with any service the old credential gave them access to. That is a support call, not a self-service reset.

Why it happens: provisioning is automatic, recovery is opt-in

The gap exists because two switches that belong together live in different places and have opposite defaults.

The first switch is provisioning. Microsoft's configuration guidance states plainly that Windows Hello for Business is enabled by default for devices that are Microsoft Entra joined. You do not have to assign anything for a PIN prompt to appear. If you want to prevent it, you have to actively disable it. That is done with the Use Windows Hello for Business policy or the tenant-wide enrolment setting.

The second switch is recovery. Non-destructive PIN reset depends on the Enable Pin Recovery setting. That setting is backed by the EnablePinRecovery node in the PassportForWork configuration service provider, abbreviated as CSP. The CSP reference documents its default value as False.

Microsoft's description of the disabled state is unambiguous. When the policy is disabled or not configured, Windows does not create or store the PIN recovery secret. The user's only route to a working PIN is to delete the existing one and create a new one.

Read those two defaults together. Provisioning is on by default. Recovery is off by default. A tenant that has configured nothing at all will still hand a PIN to every Autopilot user, and will still have no non-destructive way to reset it.

What non-destructive reset actually needs

Microsoft documents the mechanism. When PIN recovery is enabled on a client, a 256-bit AES key is generated locally. That key is added to the user's Windows Hello container as the PIN reset protector. It is encrypted with a public key retrieved from the Microsoft PIN reset service and stored on the client.

At reset time the encrypted protector is sent to the service, decrypted, and returned. The returned protector is used to change the PIN that authorises the existing keys. The container survives. Nothing is re-registered.

Two things follow from that design. First, the service side must exist. Microsoft requires two applications to be registered in the tenant, named Microsoft Pin Reset Service Production and Microsoft Pin Reset Client Production. Second, the client side must be enabled. Neither happens by accident.

Gotcha: Microsoft documents the disabled behaviour of PIN recovery. It does not document whether a protector gets created retroactively on a device that already had a PIN before the policy arrived. Do not assume it does. Test on a pilot device and read CanReset from dsregcmd /status, which is the check Microsoft actually publishes for this.

The trust type changes the answer

The PIN reset comparison table in Microsoft's documentation is worth reading line by line. The destructive path is not uniformly available. For Microsoft Entra joined devices, destructive reset is supported across certificate trust, key trust and cloud Kerberos trust.

For Microsoft Entra hybrid joined devices it is narrower. Microsoft states that certificate trust and cloud Kerberos trust support destructive reset both from the Settings page and from above the lock screen. Key trust does not support destructive reset from above the lock screen. The documented reason is the sync delay between provisioning a Hello credential and being able to use it for sign-in.

That is the worst case in a hybrid key trust estate. The user has forgotten their PIN. They are sitting at a lock screen. The only reset path Microsoft ships by default does not work from there.

The Temporary Access Pass timing trap

Many Autopilot projects now use a TAP so the user never types a password during OOBE. That is a genuine security improvement, and it creates a specific day-one problem that Microsoft documents directly.

A one-time TAP has a hard constraint. Microsoft states that when a one-time pass is used to register a passwordless method, the registration must be completed within ten minutes of that sign-in. Autopilot enrolment routinely takes longer than ten minutes. So the first pass gets the device enrolled, and by the time Windows asks for a PIN the window has closed.

Microsoft's guidance offers two supported approaches. Issue two single-use passes, one for enrolment and one for Hello registration. Or enable multi-use passes so a single pass covers both steps within its validity period. Choosing neither is how a brand-new device ends up with no credential the user can complete.

Tip: Microsoft documents that on already-joined devices the user must first authenticate with another method, such as a password, smart card or FIDO2 key, before using a TAP to set up Windows Hello for Business. A TAP is a great day-one bootstrap. It is not a lock-screen rescue for a device that is already joined, unless Web sign-in is also enabled.

How to verify: prove readiness before the first device ships

There are five things worth checking, and only one of them lives in the Intune portal.

1. Read CanReset on the device

This is the authoritative client-side check, and Microsoft publishes it as such. Run dsregcmd /status and look at the User State section. The CanReset line reports DestructiveOnly when only destructive reset is available. It reports DestructiveAndNonDestructive when PIN recovery is working.

Command Prompt — in the signed-in user session
C:\> dsregcmd /status +----------------------------------------------------------------------+ | User State | +----------------------------------------------------------------------+ NgcSet : YES # YES means this user has a Windows Hello container on this device NgcKeyId : key id withheld # never paste this into a ticket or a chat channel CanReset : DestructiveOnly # THIS is the finding. DestructiveOnly means no PIN recovery in play. # Healthy looks like: CanReset : DestructiveAndNonDestructive WorkplaceJoined : NO WamDefaultSet : YES

Run this in the signed-in user session, not as SYSTEM. The User State section only exists for an interactive user with a Hello container.

2. Look at the PassportForWork policy keys

Microsoft publishes registry mappings for the Use Windows Hello for Business setting, which is the provisioning switch. Those mappings tell you which parent key a given management channel writes into. The shared parents are worth committing to memory.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Policies\PassportForWork   (CSP and Intune)
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\PassportForWork   (Group Policy)

Note that the two are not the same path with a typo. The CSP parent has Microsoft\Policies. The Group Policy parent has Policies\Microsoft. Mixing them up is a classic wasted afternoon.

Configuration sourceDocumented key path and value nameDocumented data
CSP, device scopeParent CSP key, then \<Tenant-ID>\Device\Policies, value UsePassportForWorkREG_DWORD, 1 to enable, 0 to disable
CSP, user scopeParent CSP key, then \<Tenant-ID>\UserSid\Policies, value UsePassportForWorkREG_DWORD, 1 to enable, 0 to disable
Group Policy, device scopeParent GPO key as shown above, value EnabledREG_DWORD, 1 to enable, 0 to disable
Group Policy, user scopeHKEY_USERS\<UserSID>\SOFTWARE\Policies\Microsoft\PassportForWork, value EnabledREG_DWORD, 1 to enable, 0 to disable

An important caveat applies to that table. Those four rows are the mappings Microsoft actually publishes. Microsoft does not publish a registry mapping for every Windows Hello for Business policy, and that includes EnablePinRecovery.

You will very often see an EnablePinRecovery value sitting under those same parents on a managed device, and reading it is useful. Treat it as observed evidence rather than a documented contract. Let CanReset be the deciding vote.

Registry Editor
▼ HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\PassportForWork
Enabled               REG_DWORD   0x00000001 (1)
EnablePinRecovery      REG_DWORD   0x00000000 (0)  ← the gap
RequireSecurityDevice   REG_DWORD   0x00000001 (1)
▼ PINComplexity
MinimumPINLength       REG_DWORD   0x00000006 (6)
▼ ExcludeSecurityDevices
TPM12                 REG_DWORD   0x00000000 (0)

3. Read the provisioning events

Windows records the outcome of Hello provisioning prerequisite checks in the event log. Microsoft's documented channel for the interesting parts is the User Device Registration admin log.

Event Viewer > Applications and Services Logs > Microsoft > Windows > User Device Registration > Admin
Channel name: Microsoft-Windows-User Device Registration/Admin
Event IDChannel and sourceWhat it tells you
300User Device Registration / Admin, source Microsoft Azure Device Registration ServiceDocumented as the success event. The message states that the NGC key was successfully registered. Provisioning completed and a credential now exists.
362User Device Registration / Admin, source Microsoft-Windows-User Device RegistrationDocumented warning that Hello provisioning will not be launched. The body is a yes or no checklist of every prerequisite, which is the most useful single diagnostic on the device.
107Microsoft-Windows-Kerberos/OperationalDocumented error where the Kerberos client received a KDC certificate without a matched domain name. Relevant after a destructive reset in on-premises trust models, where sign-in can fail for reasons unrelated to the PIN.

Two honest caveats about this surface. Windows also ships a Microsoft-Windows-HelloForBusiness/Operational channel, and it is genuinely useful when reading a provisioning failure. Microsoft does not publish a per-identifier catalogue for it, so treat identifiers you find there as observed rather than documented.

The second caveat is a privacy one. Event 300 contains a Windows Hello key identifier in its message body. Do not paste that into a ticket.

Event Viewer — Microsoft-Windows-User Device Registration/Admin
Warning   09:41:02   Event 362   Hello provisioning will not be launched
Information   09:43:18   Event 358   prerequisite re-evaluation, identifier not documented
Information   09:44:07   Event 300   NGC key registered, key id withheld
Error   11:12:55   Event 107   Kerberos KDC certificate domain mismatch

4. Confirm the tenant side exists

Non-destructive reset is useless without its two service principals. Check them in the Microsoft Entra admin center.

entra.microsoft.comEntra ID › ApplicationsEnterprise applications

Search the application list for Microsoft PIN. Microsoft's documented expectation is that both Microsoft Pin Reset Service Production and Microsoft Pin Reset Client Production appear. Finding only one of the two is a common half-finished state, because the consent flow involves two separate prompts and ends on a blank page.

5. Or run the companion script

The companion script bundles all of the above into one read-only report. It reads join state, the CanReset value, whatever PassportForWork values exist, and the event channels. With -CheckTenant it also queries Microsoft Graph for the two PIN reset service principals and the state of the Temporary Access Pass policy. It never prints key identifiers, container identifiers or tenant identifiers.

The fix: build the recovery path alongside the deployment

Treat PIN recovery as part of the Autopilot build, not as a follow-up ticket. There are four workstreams, and they are all small.

Step 1: register the PIN reset service applications

  1. Sign in as at least an Application Administrator.
  2. Open the Microsoft PIN Reset Service Production consent URL from Microsoft's PIN reset article.
  3. Review the requested permissions and select Accept.
  4. Open the Microsoft PIN Reset Client Production consent URL from the same article.
  5. Review the requested permissions and select Next, then Accept.
  6. Expect a blank redirect page afterwards. Microsoft documents this as known behaviour, not a failure.
  7. Verify both service principals exist under Enterprise applications, as described above.

Step 2: enable PIN recovery on the clients with Intune

The Settings Catalog is the current path, and it is a single setting.

intune.microsoft.comDevices › ConfigurationCreate › New policySettings catalog
  1. Choose platform Windows 10 and later and profile type Settings catalog.
  2. Select Add settings and search the category Windows Hello For Business.
  3. Select the setting Enable Pin Recovery and set it to True.
  4. Assign the policy to a group containing the devices or users you want configured.
  5. Confirm delivery by reading CanReset on a pilot device, not by reading the portal.

Microsoft also documents an Endpoint security route to the same outcome. That suits teams who keep identity hardening separate from device configuration.

intune.microsoft.comEndpoint securityAccount protectionCreate Policy
Microsoft Intune admin center — Settings catalog
Windows Hello For Business
1 of 1 setting selected
Enable Pin Recovery (Device)
True
Assigned to: PILOT-WHFB-Devices

If you prefer a custom profile, the CSP node is documented as a boolean with a default of False. It is available from Windows 10 version 1703 onwards.

OMA-URI : ./Device/Vendor/MSFT/PassportForWork/{TenantId}/Policies/EnablePinRecovery
Type     : Boolean
Value    : True
Gotcha: Microsoft's own pages give this node two shapes. The PIN reset article shows the OMA-URI as ./Vendor/MSFT/Policy/PassportForWork/{TenantId}/Policies/EnablePinRecovery. The PassportForWork CSP reference and the configuration article both use ./Device/Vendor/MSFT/PassportForWork/{TenantId}/Policies/EnablePinRecovery. The CSP reference is the authority for node paths. Use the Settings Catalog and you avoid the question entirely.

Step 3: enable PIN recovery with Group Policy

The Group Policy path does exist, so hybrid estates that still manage Hello through Active Directory are not stuck.

  1. Open the Group Policy Management Console and edit an object linked at the right scope.
  2. Browse to Computer Configuration then Administrative Templates then Windows Components then Windows Hello for Business.
  3. Open the setting named Use PIN Recovery.
  4. Set it to Enabled and apply.
  5. Link, security-filter or WMI-filter the object as usual.

Both channels exist for this setting. That is worth stating plainly, because it is not true of every Hello setting. Turn off smart card emulation, for example, is documented as Group Policy only with no CSP equivalent.

Watch out: do not configure Windows Hello for Business through both Group Policy and CSP. Microsoft documents that mixing them leads to unexpected results, and that conflicting CSP settings are not applied until the Group Policy settings are cleared. Microsoft is also explicit that the MDMWinsOverGP setting does not help here, because it only covers the Policy CSP and Hello lives in the PassportForWork CSP.

Step 4: give the user a fallback for the day the PIN is gone

PIN recovery still requires the user to authenticate and complete multifactor authentication. So they need a working second factor, and on a brand-new device they may not have one yet. That is what a Temporary Access Pass is for.

entra.microsoft.comEntra ID › Authentication methodsPolicies › Temporary Access Pass
  1. Sign in as at least an Authentication Policy Administrator.
  2. Open the Temporary Access Pass method and select Enable.
  3. Include the groups that will onboard through Autopilot, and exclude anything sensitive.
  4. Decide the one-time use setting deliberately. Microsoft documents the default as False, which means passes may be reused within their lifetime.
  5. If you enforce one-time use, plan to issue two passes per Autopilot build. That is because of the documented ten-minute registration window.
  6. Set lifetimes to match your build duration. Microsoft documents a default lifetime of one hour and a maximum of eight hours, both configurable between 10 minutes and 30 days.

Finally, if your tenant is federated or you run Azure Government, configure the allowed URL list for the PIN reset web sign-in flow. Microsoft documents the symptom of not doing so as an error page reading that Windows cannot open that page right now. The setting is Configure Web Sign In Allowed Urls under the Authentication category, and it takes a semicolon-delimited list of domains.

Proof it worked: what a ready device reports

Readiness is a one-line answer. CanReset reports DestructiveAndNonDestructive, and both PIN reset service principals exist in the tenant. Everything else is supporting evidence.

The companion script prints exactly that. The output below is illustrative, using a fictional device with the gap still present, so you can see what a not-ready result looks like before you fix it.

PowerShell — Get-WhfbPinRecoveryReadiness.ps1 (illustrative output)
PS C:\> .\Get-WhfbPinRecoveryReadiness.ps1 -CheckTenant ================================================================ Windows Hello for Business PIN recovery readiness (read-only) ================================================================ Generated : 2026-08-21 09:52:14 Host : REDACTED (device name withheld by design) PS edition: 5.1.26100.9168 == Device join and Windows Hello state (dsregcmd /status) AzureAdJoined YES DomainJoined YES Interpreted join model Microsoft Entra hybrid joined NgcSet (Hello container present) YES CanReset DestructiveOnly [GAP] # a ready fleet reports DestructiveAndNonDestructive here == PassportForWork policy values present in the registry GPO HKLM\SOFTWARE\Policies\Microsoft\PassportForWork Enabled = 1 EnablePinRecovery = 0 RequireSecurityDevice = 1 # provisioning on, recovery off - the exact default-shaped gap == Windows Hello for Business event log surface Channel Microsoft-Windows-User Device Registration/Admin present Channel Microsoft-Windows-HelloForBusiness/Operational present Event 300 in last 30d count=1, latest=2026-08-04 09:44:07 Event 362 in last 30d count=0, latest=none in window # event bodies are never printed - event 300 carries a key id == Tenant prerequisites (Microsoft Graph, read-only) Microsoft Pin Reset Service Production registered [GOOD] Microsoft Pin Reset Client Production not found [GAP] Temporary Access Pass policy state=disabled [GAP] == Summary [GAP] CanReset is DestructiveOnly. A forgotten PIN will delete the Hello container and its contents. [GAP] Hybrid joined plus DestructiveOnly: destructive reset needs corporate network connectivity to a domain controller, and key trust does not support destructive reset above the lock screen. [GAP] The service principal "Microsoft Pin Reset Client Production" is not present. Non-destructive PIN reset cannot work until both PIN reset applications are consented. [GAP] Temporary Access Pass is not enabled. There is no administrator-issued fallback for a user who has only a forgotten PIN. Gaps: 4 Notes: 2 This report is read-only. Nothing on this device or in the tenant was changed.

That is four gaps on a device a project would have signed off as a successful Autopilot deployment. The build worked. The recovery story did not exist.

Once the four steps above are done, the same script on the same device returns zero gaps and CanReset flips. That is the moment the deployment is actually finished. Not when the desktop appeared on day one, but when a user who forgets their PIN on day two can fix it themselves.

The planning rule worth adopting

Write it into the Autopilot design document as a dependency, not a nice-to-have. Provisioning a credential and being able to recover a credential are the same project. Microsoft's defaults deliver the first and withhold the second. The gap only becomes visible when a real person is locked out of a real laptop.

References

Community deep-dives worth reading

AuthorPostWhy it is relevant here
Rudy OomsTemporary Access Pass and the MFA during the Account ESPWalks through what a TAP does to the multifactor claim during the account setup phase of the ESP, which is exactly the window in which Hello provisioning fires.
Peter van der WoudeEnable PIN reset from the login screenThe original walkthrough of the EnablePinRecovery setting and the resulting lock-screen user experience.
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-WhfbPinRecoveryReadiness.ps1 — Reports whether this device and (optionally) this tenant have the Windows Hello for
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
Autopilot pre-provisioning: the reseal step is the part everyone…
The green success screen at the end of an Autopilot technician flow confirms enrollment,…
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
The ZTDID: The One Attribute That Proves a Device Is Really…
A device enrols, reports compliant, and still never joins your all-Autopilot dynamic…