HomeNewsletterCommunityMVP FeedToolsArchiveBlogToday's NewsAboutServicesQuick Links Subscribe free
← Back to Blog

Temporary Access Pass: The Passwordless Bootstrap Nobody Talks About

IA
Imran Awan
30 July 2026

A new hire's laptop arrives on day one. They've never signed in before, have no password of their own yet, and need to enroll in Windows Hello for Business before they can do anything else. Or the opposite scenario: an existing user's phone with their only registered authentication method is lost, stolen, or simply reset, and now they can't sign in to register a replacement — the classic passwordless chicken-and-egg problem. Both situations have the same answer, and it's a feature most tenants have sitting unconfigured: a Temporary Access Pass.

Watch this post — YouTube walkthrough

Watch on YouTube · Subscribe at @EndpointWeekly

The problem — passwordless recovery needs something that isn't a password

A Temporary Access Pass (TAP) is a time-limited passcode Entra ID issues to a specific user, letting them sign in and register a real authentication method — Windows Hello for Business, a FIDO2 security key, phone sign-in via Microsoft Authenticator — without ever touching a password. Microsoft's own documentation is direct about the two situations it exists for: helping users bootstrap passwordless methods when they don't have one yet, and making recovery easier when someone loses or forgets their strong authentication method.

Without TAP, both scenarios usually collapse back into a password: a temporary one set by a helpdesk agent, emailed or read aloud over the phone, that the user then uses to sign in and register their real credential. That's the exact pattern security teams have spent years trying to eliminate — a password, transmitted in the clear, as the weak link in an otherwise passwordless chain. TAP exists specifically to remove that weak link.

📋 Note: A TAP is not a permanent authentication method and doesn't replace a user's password. Per Microsoft Learn: "Users can also continue to sign in by using their password; a TAP doesn't replace a user's password." It's a bootstrap and recovery mechanism only, scoped to a defined time window.

Why it happens — nobody enables the policy until they need it in an emergency

TAP has existed as a generally available Entra ID feature for years, yet it's routinely still disabled by default in tenants that would benefit from it the most. The reason is almost always the same: the feature only becomes visible as a need during an actual incident — a locked-out user calling the helpdesk in a panic — at which point enabling and configuring the policy correctly, under pressure, is exactly the wrong time to be reading documentation for the first time.

Configuring the TAP Authentication methods policy requires the Authentication Policy Administrator role. Here's exactly what that looks like in the portal, step by step:

Step 1 — enable the method and choose who it applies to
Temporary Access Pass
Authentication method state
Enabled
Target
All users, or specific Include / Exclude groups
Step 2 (optional) — Configure the default settings, then Update
SettingDefaultAllowed range
Minimum lifetime1 hour10 – 43,200 minutes (30 days)
Maximum lifetime8 hours10 – 43,200 minutes (30 days)
Default lifetime1 hourIndividual passes can override, within min/max
One-time useFalseTrue/False — if enforced, ALL passes in the tenant become one-time use
Length8 characters8–48 characters

Select Save and the policy is live. Note that "8 hours" for maximum lifetime is only the starting default — every one of these settings can be set anywhere within its allowed range, so a maximum lifetime of several days, or up to the full 30-day ceiling, is entirely valid if that suits how your organisation uses TAP.

The one-time-use setting is where most of the real decision-making happens, because Microsoft's own guidance describes a genuine gotcha in how it interacts with device enrollment timing.

⚠ Gotcha: when a one-time-use TAP is used to register a passwordless method, the registration must complete within 10 minutes of signing in with that TAP — this 10-minute MFA-registration window applies consistently across all new authentication method registrations, not just TAP. If your organisation enforces one-time-use TAPs and the overall device enrollment process (Autopilot, WHfB provisioning, etc.) takes longer than 10 minutes end-to-end, the user needs a second single-use TAP just to complete the WHfB registration step once enrollment finally reaches it. A multi-use TAP avoids this entirely — the same pass can be entered again later, and the 10-minute MFA window simply restarts when the user begins registering the new method.

How to verify — check the policy state and one user's TAP status before deploying broadly

Confirm whether TAP is currently enabled, and for which users or groups, before assuming it's available. If it's already enabled, spot-check one real user's TAP status in the portal before building anything larger — no PowerShell needed for this part:

Entra admin center — a user's Authentication methods list
Microsoft Authenticator
Registered
Active
Temporary Access Pass
Created 22 May 2026, one-time use
Expired

Notice the one thing the portal never shows here: the actual TAP code itself. Microsoft's documentation is explicit that the pass value can only be viewed once, at the moment of creation — after you close that dialog, it is gone permanently. There's no "look it up again later" for a TAP, by design. (If you'd rather check this via PowerShell instead of the portal, Get-MgUserAuthenticationTemporaryAccessPassMethod does the same thing — see the References section at the end of this post.)

The fix — create, use, and correctly scope a Temporary Access Pass

Creating one for a user takes three clicks in the portal. Note the exact role requirements first, because they're stricter and more specific than most authentication method operations: Privileged Authentication Administrators can create, delete, and view a TAP for admins and members (except themselves); Authentication Administrators can do the same for members only (except themselves).

Add authentication method — Temporary Access Pass
MethodTemporary Access Pass
Custom activation time03 Aug 2026, 06:00
One-time useYes
⚠ Gotcha: the moment you select Add, the portal shows the actual pass value once — for example, a code like TAPRocks! — in a dialog that will not appear again. That is the only time this code is ever shown. Give it to the user securely right then; it cannot be retrieved again afterwards, from the portal or via Graph.

The user then goes to mysignins.microsoft.com/security-info, enters their UPN, and is prompted for the TAP instead of a password. From there they register whatever real method they need — a WHfB PIN and biometric, a FIDO2 key, or Microsoft Authenticator. (Prefer to automate this for many users at once? New-MgUserAuthenticationTemporaryAccessPassMethod does the same thing via PowerShell — see References.)

Windows device enrollment — TAP usage by join type
Device stateHow TAP is used
Microsoft Entra joined (new device)During Entra join setup, the user authenticates with a TAP directly (no password required) to join the device and register WHfB in one flow
Microsoft Entra joined (already-joined device)User must first authenticate another way (password, smartcard, FIDO2), then uses TAP to set up WHfB
Hybrid joinedUser must first authenticate another way; TAP alone cannot drive the initial hybrid join
⚠ Warning: A TAP cannot be added to an external guest account — attempting it returns the exact error Temporary Access Pass cannot be added to an external guest user. It CAN be added to an internal guest (a user object with UserType set to Guest that has authentication methods registered directly in your tenant). If you're troubleshooting this error, check which type of guest you're dealing with before assuming the feature is broken.
✅ Tip: Each user can only have one TAP at a time. If a still-valid TAP needs replacing, simply create a new one — it overrides the existing valid pass automatically. There's no need to manually delete the old one first, and Microsoft's own guidance confirms this is the supported way to reissue a pass to the same user.

Troubleshooting the Intune side of TAP-based enrollment

A TAP itself is an Entra ID authentication method, not an Intune policy — Intune never configures or reads it directly. But the moment a device joins using a TAP, Intune's own configuration profiles (which push settings, including the WHfB policy the user is about to register against) and compliance policies (which only evaluate and report a pass/fail state, never configure anything) both come into play through the Enrollment Status Page. Understanding that handoff explains one of the more confusing TAP failure modes.

📋 Note: Microsoft's own troubleshooting guidance confirms a Conditional Access policy using "Require device to be marked as compliant," applied broadly to All Cloud apps, can stall a device during the Enrollment Status Page before initial sign-in even completes — because compliance can't be evaluated in time. If your organisation enforces one-time-use TAPs and this stall pushes the overall enrollment process past 10 minutes, the user's single-use TAP expires before they ever reach the WHfB registration step described earlier in this post — not because TAP failed, but because the Intune policy handoff in front of it timed out.

When a TAP-based enrollment stalls or a user reports their TAP "stopped working" mid-setup, check the Intune side before assuming the TAP itself is at fault:

Intune admin center — built-in Troubleshoot pane
  1. Troubleshooting + support > Troubleshoot › select the user, then the newly-enrolled device
  2. Confirm Managed shows MDM and Microsoft Entra join Type shows the expected join state — Not Registered here usually means the join itself didn't complete, independent of anything TAP-related
  3. Check Device Compliance and Device Configuration lists for a Pending or Conflict status on any policy required before ESP can complete

For the registry-level detail, the same two hives matter here as in any enrollment troubleshooting: SOFTWARE\Microsoft\Enrollments (the enrollment record created the moment the TAP-based join completes) and PolicyManager\current\device (where configuration profile results land once policy actually reaches the device). This site's own local Intune policy export script reads both in one pass rather than opening Registry Editor manually.

Registry Editor — the two hives that matter for TAP-based enrollment
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Enrollments\{GUID}
DeviceEnrollmentType REG_DWORD 0x00000006
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\current\device
← per-area subkeys, populated once configuration profiles actually reach the device
📋 Note: The enrollment itself is logged in Event Viewer under Applications and Services Logs > Microsoft > Windows > DeviceManagement-Enterprise-Diagnostics-Provider > Admin — look for Event ID 76 (enrollment failed, with an error code) or Event ID 75 (enrollment succeeded).
⚠ Gotcha: none of the events above will ever mention "Temporary Access Pass" by name — TAP sign-in itself is logged on the Entra ID side (sign-in logs), not in this Windows-side event log. Use the Entra ID sign-in logs to confirm the TAP sign-in itself succeeded, and this event log to confirm the subsequent Intune enrollment and policy delivery succeeded. A failure can genuinely be in either half, and they're diagnosed in two completely different places.

Proof it worked — Get-TapAuditReport.ps1

Once TAP is in regular use for onboarding and recovery, the real ongoing risk isn't the feature itself — it's a TAP created during an incident and then forgotten about, sitting active longer than intended, especially on a privileged account. This script audits every user in the tenant with a currently active or recently created TAP, and separately flags any privileged role holder with one, since that's the combination worth a human looking at immediately rather than during a routine review. It also accepts an optional list of specific UPNs via -UserPrincipalName, added after testing this against a large tenant made clear that checking a handful of accounts (a new hire, a recovery incident) shouldn't require enumerating every user in the directory first.

Download the script — GitHub

Get-TapAuditReport.ps1 is free and open source. It's a genuinely read-only check — it never creates, deletes, or modifies a TAP, it only reports on existing ones.

Get-TapAuditReport.ps1 View full repo →
This is a real run, not a simulation. The output below is genuine output from testing this script against a live tenant while validating this post, scoped to a small set of test accounts with -UserPrincipalName. The only thing changed is redacting the tenant ID and the one real username found.
Get-TapAuditReport.ps1 — real output from a live test run
== Connecting to Microsoft Graph == Connected. Tenant: [redacted] == Resolving currently active privileged role assignments == Insufficient privileges (RoleManagement.Read.Directory not granted) - skipped gracefully == Checking Temporary Access Pass methods for 3 specified user(s) == Checked 3 user(s). Found 1 with a Temporary Access Pass on record. ============================================================ TEMPORARY ACCESS PASS AUDIT REPORT ============================================================ [EXPIRED] [user]@yourcompany.com One-time: No Expired: 0 day(s) ago ------------------------------------------------------------ Total users with a TAP on record : 1 Currently active : 0 Expired (not yet cleaned up) : 1 Active AND privileged role holder : 0 ------------------------------------------------------------ This script performed read-only Graph queries only. No TAPs were created, deleted, or modified.
⚠ Gotcha: notice the script didn't just silently skip the privileged-role check when it hit a permissions error — it printed exactly why ("RoleManagement.Read.Directory not granted") and kept going with the rest of the audit. If your own run ever shows "Active AND privileged role holder: 0" with no such warning above it, that's a genuine zero. If it shows the warning, treat that count as unknown, not zero — the script literally could not check.

References

Share this post
LinkedIn X / Twitter Reddit Bluesky

More from EndpointWeekly

Entra ID
Passkeys Are Now the Default in Entra ID
What to do before the February 2027 deadline.
Technical Guide
Automating WHfB Enrollment with PowerShell and Intune
The other half of a smooth day-one enrollment flow.
Windows
Windows Hello for Business Doesn't Work Over RDP
The other WHfB edge case worth knowing before it surprises you.