oeltayeb.com · Intune Troubleshooting Toolkit

Checklist

Windows Hello for Business provisioning checklist

Based on the article: Windows Hello for Business provisioning errors in Intune: 0x801C03ED, Event 360 and more · 6 min read

Windows Hello for Business provisioning fails in one of two ways: the Create a PIN step stops with a hex code, or the PIN prompt never appears at all. In this post I'll match the documented 0x801C and 0x8009 codes to their causes, decode the Event ID 360 prerequisite lines, untangle conflicting policy sources, and prove the fix with dsregcmd /status.

Symptoms to confirm

  • The PIN setup wizard fails and shows one of these codes (the descriptions are Microsoft's):
0x801C03ED Multi-factor authentication is required for a 'ProvisionKey' operation, but wasn't performed.
0x801C000E Registration quota reached.
0x801C03F2 Windows Hello key registration failed.
0x801C044D Authorization token doesn't contain device ID.
0x80090035 Policy requires TPM and the device doesn't have TPM.
0x80090029 TPM isn't set up.
  • A user who already has a PIN can't sign in with it: 0xC00000BB Your PIN or this option is temporarily unavailable.
  • No PIN prompt appears after sign-in, and Applications and Services Logs › Microsoft › Windows › User Device Registration › Admin holds a warning like this one, posted by an admin on Microsoft Q&A from a PC where the user hadn't signed in with Microsoft Entra credentials:
Event ID 360
Windows Hello for Business provisioning will not be launched.
Device is AAD joined ( AADJ or DJ++ ): Not Tested
User has logged on with AAD credentials: No
Windows Hello for Business policy is enabled: Not Tested
Windows Hello for Business post-logon provisioning is enabled: Not Tested
Local computer meets Windows hello for business hardware requirements: Not Tested
User is not connected to the machine via Remote Desktop: Yes
User certificate for on premise auth policy is enabled: Not Tested
Machine is governed by none policy.
Cloud trust for on premise auth policy is enabled: Not Tested
User account has Cloud TGT: Not Tested

Likely causes

At every sign-in Windows runs a prerequisite check.

Event 360 linedsregcmd fieldUsual cause when it fails
Device is AAD joinedIsDeviceJoinedJoin incomplete
User has logged on with AAD credentialsIsUserAzureADLocal account, or no Primary Refresh Token (AzureAdPrt : NO)
Windows Hello for Business policy is enabledPolicyEnabledPolicy missing or disabled by another source
Post-logon provisioning is enabledPostLogonEnabledA policy suppresses automatic provisioning (DisablePostLogonProvisioning, "Do not start Windows Hello provisioning after sign-in" in Group Policy)
Meets hardware requirementsDeviceEligibleTPM required by policy but missing or not ready
Not connected via Remote DesktopSessionIsNotRemoteRDP session; provisioning needs the console
Cloud trust policy / Cloud TGTOnPremTGT (CloudTGT before Windows 11 23H2)Cloud Kerberos trust on, but no partial TGT for the user's domain
  • The wizard codes point to different layers:
CodeWhat it usually meansFix
0x801C03EDMFA wasn't completed, the token was missing, or the user isn't allowed to join devicesGive the user a usable MFA method (a Temporary Access Pass for new starters), allow them to join devices in Entra Device settings, sign out and in
0x801C000EThe user hit the Entra "maximum number of devices per user" limitDelete stale devices or raise the limit in Device settings
0x801C03F2Directory error; Microsoft documents a duplicate proxyAddresses valueFix the sync conflict; mail must match the primary SMTP proxy address
0x801C044DDevice identity or user token problemCheck network and credentials, sign out and in; if the token still has no device ID, Microsoft's fix is to unjoin and rejoin
0x80090035, 0x80090029Policy requires a TPM (the tenant-wide Use a Trusted Platform Module (TPM) defaults to Required) and it's absent, disabled or not set upEnable the TPM in firmware or run Prepare the TPM in tpm.msc; drop the TPM requirement only as a deliberate security decision
0xC00000BBThe domain controller can't support the sign-in method: usually a missing KDC certificate or an unreachable CRL (key and certificate trust)Fix domain controller certificates, or move to cloud Kerberos trust

Checklist

  1. 1

    Capture the evidence

    the wizard code, and the newest Event 360 in the User Device Registration Admin log.

  2. 2

    Run dsregcmd /status as the user

    (not elevated). Check AzureAdJoined, AzureAdPrt, NgcSet and the Ngc Prerequisite Check.

  3. 3

    Check the TPM

    if DeviceEligible is NO or you see a 0x8009 code: Get-Tpm should show TpmPresent and TpmReady as True. Clearing a TPM wipes its keys; make sure the BitLocker recovery key is escrowed first.

  4. 4

    Use one policy source

    Windows Hello for Business can come from the tenant-wide policy (Devices › Enrollment, Windows tab, Windows Hello for Business), from settings catalog or Endpoint security › Account protection profiles, and from Group Policy. Find stray settings with:

    powershell
    # Group Policy source (should be empty when Intune manages Windows Hello)
    reg query "HKLM\SOFTWARE\Policies\Microsoft\PassportForWork" /s
    reg query "HKCU\SOFTWARE\Policies\Microsoft\PassportForWork" /s
    # MDM source (one subkey per tenant ID)
    reg query "HKLM\SOFTWARE\Microsoft\Policies\PassportForWork" /s
    # Which GPO sets it?
    gpresult /h "$env:USERPROFILE\Desktop\gp.html"
  5. 5

    Fix the code-specific cause

    from the table above.

  6. 6

    Reset and retry

    Provisioning is evaluated at the next sign-in, so sign out and back in.

Verify

  • Before the PIN prompt, the User Device Registration log shows Event 358 (Windows Hello for Business provisioning will be launched) and dsregcmd shows PreReqResult : WillProvision.
  • After setup, dsregcmd /status shows NgcSet : YES with an NgcKeyId under User State, and AzureAdPrt : YES under SSO State. With cloud Kerberos trust, expect OnPremTgt : YES too.
  • On hybrid devices, klist after a PIN sign-in lists a krbtgt ticket for your AD realm.

Tip: 0xCAA30193 (HTTP 403) means a server, proxy or firewall refused the request. Test from a network without TLS inspection before changing policy.

Key takeaways

  • No prompt means a prerequisite failed (read Event 360); a wizard code means provisioning started (use the code table).
  • Configure Windows Hello for Business from one source and set the tenant-wide enrollment setting deliberately.
  • Pre-register MFA, clean up stale devices, and check Get-Tpm before you require a security device.

Microsoft Learn references