MC1507808: Microsoft Turns On ‘Require Risk Remediation for High-Risk Users’ in Your Tenant – What to Check Before October 28

On October 14, 2026, Microsoft published MC1507808 in the Microsoft 365 Message Center: “Reminder: Microsoft-managed CA policy will be enforced soon – Require risk remediation for high-risk users”. Microsoft has already created a Conditional Access policy and a matching security group in your tenant. The policy has been running in Report-only for 30 days, and if you do nothing, it switches to On the week of October 28, 2026.

That is less than two weeks away. And it lands only four weeks after the legacy user risk and sign-in risk policies in Entra ID Protection were retired on October 1, 2026, so a lot of tenants are going into this with no user risk policy in force at all, without anyone having noticed.

The questions are always the same when Microsoft switches something on in a tenant: What exactly happens, and to whom? Will someone be locked out? Should we let it happen or take control ourselves? This post is the practical version: what the policy actually does, what your users will experience (with examples), how to find out who is affected, and the steps to take before October 28.

Everything below is based on the Message Center post and Microsoft Learn documentation as of October 15, 2026.

MC1507808 at a glance

Message Center IDMC1507808, published October 14, 2026
Policy name“Require risk remediation for high-risk users” in MC1507808, listed as “Require remediation for high-risk users” on Microsoft Learn. Check the exact name in your tenant
Current stateReport-only, 30-day evaluation period ending
EnforcementWeek of October 28, 2026. Automatically set to On unless you set it to On or Off yourself
Who is in scopeTenants with Microsoft Entra ID P2 (included in Microsoft 365 E5 and EMS E5)
ConditionUser risk = High (Entra ID Protection)
Grant controlRequire risk remediation (adaptive risk remediation)
ScopeA new security group created by Microsoft together with the policy
Not coveredSign-in risk. Guests and external users are not supported by the control. Your existing CA policies and exclusions are not changed

Why Microsoft is doing this

User risk is Entra ID Protection’s estimate of how likely it is that an account is compromised: leaked credentials found on the dark web, password spray hits, anomalous tokens, threat intelligence matches. A high user risk without a policy attached to it is just a line in a report that nobody reads until after the incident.

For years, the standard answer was a user risk policy with Require password change. That has two problems in 2026:

  1. The legacy risk policies configured inside ID Protection are retired as of October 1, 2026. If you never migrated them to Conditional Access, don’t count on them protecting you anymore.
  2. Require password change does nothing useful for a user who signs in with a passkey or Windows Hello for Business. There is no password to change, and the risk often isn’t about a password in the first place.

The Microsoft-managed policy closes both gaps: it puts a user risk policy into every eligible tenant, and it uses the newer Require risk remediation control, which works for password and passwordless users alike.

The timeline: dates you need in your calendar

DateWhat happens
October 1, 2026Legacy user risk and sign-in risk policies in ID Protection are retired
Start of the 30-day evaluationMicrosoft creates the policy + security group in Report-only (check the creation date in your own tenant, see Step 1)
October 14, 2026MC1507808 reminder published
Week of October 28, 2026Policy switches to On if still in Report-only

What actually changes in your tenant

When the policy is On, a user in the scoping group who reaches high user risk is interrupted at sign-in and has to remediate. What “remediate” means depends on how the user signs in and on the threat observed. That is the “adaptive” part:

ScenarioWhat ID Protection does
Password user with an active risk detection such as leaked credentials, password spray or session history involving a compromised passwordUser does MFA, then a secure password change. Previous sessions are revoked.
Passwordless user with an active risk detection that doesn’t involve a compromised password, such as anomalous token, impossible travel or unfamiliar sign-in propertiesUser’s sessions are revoked and the user must sign in again. Risk is remediated after the successful sign-in.
Attacker-added device (flagged by Microsoft threat intelligence)The Entra device object is disabled, sessions are revoked, and the user must sign in again.

Note for password users: Microsoft documents that token theft related detections (anomalous token, attacker in the middle, verified threat actor IP and similar) require a secure password change plus MFA to clear the risk. Don’t expect a password user to get away with “just sign in again”.

Two controls are added to the policy automatically: Require authentication strength and Sign-in frequency – Every time. That is what forces a strong reauthentication right after the session revocation.

What it does not do:

  • It remediates user risk, not sign-in risk. Sign-in risk is covered by a different managed policy (Multifactor authentication and reauthentication for risky sign-ins) or your own.
  • Require risk remediation is not supported for guests and external users, because Entra ID can’t revoke their sessions. Check that the Microsoft-created group contains no guests.
  • It does not change your existing Conditional Access policies or their exclusions.

Examples: what your users will actually experience

Tables are nice, but helpdesk tickets come from people. Here is how this plays out for five typical accounts once the policy is On.

Example 1: Anna, password user, leaked credentials
Anna’s username and password show up in a credential dump. ID Protection raises her user risk to High. Next time she opens Outlook, she gets an MFA prompt, then a “Password change is required” screen. She sets a new password, her old sessions on her phone and laptop are revoked, and she signs in again. Risk state: Remediated. No ticket, if Anna is registered for MFA.

Example 2: Peter, passkey user, anomalous token
Peter signs in with a passkey and never uses a password. ID Protection detects an anomalous token for his account. The old Require password change control would have been pointless here. With Require risk remediation, Peter’s sessions are revoked and he is asked to sign in again with a method that meets the authentication strength. He might say “I had to sign in twice”. That is by design: if an at-risk user has just signed in, they are prompted again, and the risk is remediated after the second sign-in.

Example 3: Maria, high risk, no MFA registered
Maria is in the scoping group, but has never registered an MFA method. She can’t do MFA, so she can’t do a secure password change. Result: Maria is blocked, and only an admin can get her back in. This is the scenario that creates Monday morning tickets, and it is the main reason to do Step 2 below.

Example 4: svc-scan, a service account that signs in interactively
A scanner account with a password in a config file gets flagged as high risk. It can’t do MFA or change its own password. Result: blocked, and the scan-to-mail workflow stops. Exclude it now, and put it on the list of accounts that need a proper fix.

Example 5: Jonas, MSP technician from another tenant
Jonas works in your tenant as a guest, and Require risk remediation is not supported for guests. But Microsoft documents the “high risk technician” scenario: if Jonas’s credentials leak and he becomes high risk in his home tenant, he is blocked from signing in to other tenants, and he can only self-remediate if his home tenant has the right risk policies. Otherwise an admin in his home tenant has to remediate. If you are the MSP, make sure your own tenant has self-remediation policies, or your technicians get blocked everywhere they work.

Step 1: Find the policy and check its state

In the portal:

  1. Sign in to the Microsoft Entra admin center as at least Conditional Access Administrator.
  2. Browse to Entra ID > Conditional Access > Policies.
  3. Look for the policy with remediation for high-risk users in the name. The Created by column says Microsoft, and the name starts with Microsoft-managed:. (MC1507808 calls it “Require risk remediation for high-risk users”, Microsoft Learn calls it “Require remediation for high-risk users”, so search for “remediation”.)
Microsoft Entra Conditional Access Policies list with two policies Created by Microsoft and five created by the user
Microsoft-managed policies show MICROSOFT in the Created by column. My own tenant has two of them (MFA for admins and MFA for per-user MFA users), but the MC1507808 risk remediation policy has not arrived here yet.

Or with Microsoft Graph PowerShell, which also shows you every other Microsoft-managed policy in the tenant:

Connect-MgGraph -Scopes "Policy.Read.All"

Get-MgIdentityConditionalAccessPolicy -All |
    Where-Object { $_.DisplayName -like "Microsoft-managed*" } |
    Select-Object DisplayName, State, CreatedDateTime |
    Sort-Object DisplayName |
    Format-Table -AutoSize

enabledForReportingButNotEnforced means Report-only. enabled means On, disabled means Off.

If the policy isn’t there, your tenant isn’t in scope (yet). Community trackers report that this reminder has so far only been seen in education tenants, which may be licensing or a staged rollout. Check again next week rather than assuming you are skipped.

Step 2: Find out who is actually affected

Option A: The Policy impact tab

Open the policy and select Policy impact. This shows what the policy would have done during the Report-only period, even though it hasn’t enforced anything. It is the fastest way to answer “would this have hit anyone last month?”.

Option B: The Risky users report

Browse to ID Protection > Risky users and filter on Risk level: High and Risk state: At risk. These are the people who will be interrupted the moment the policy turns on.

Microsoft Entra ID Protection Risky users report with risk level chart and filters
ID Protection > Risky users. Filter on Risk level High and Risk state At risk to see exactly who the policy will interrupt.

Option C: Microsoft Graph PowerShell, if you want the full picture

This script lists the high-risk users and checks whether they are registered for MFA, which is exactly the difference between Example 1 (self-remediates) and Example 3 (blocked):

Connect-MgGraph -Scopes "IdentityRiskyUser.Read.All", "AuditLog.Read.All"

# Users that are high risk right now
$highRisk = Get-MgRiskyUser -All -Filter "riskLevel eq 'high' and riskState eq 'atRisk'"

# MFA registration status for each of them
$result = foreach ($u in $highRisk) {
    $reg = Get-MgReportAuthenticationMethodUserRegistrationDetail -UserRegistrationDetailsId $u.Id -ErrorAction SilentlyContinue
    [PSCustomObject]@{
        UserPrincipalName = $u.UserPrincipalName
        RiskLastUpdated   = $u.RiskLastUpdatedDateTime
        MfaRegistered     = $reg.IsMfaRegistered
        Methods           = ($reg.MethodsRegistered -join ", ")
    }
}

$result | Sort-Object MfaRegistered | Format-Table -AutoSize

Anyone with MfaRegistered = False on that list will be blocked, not remediated. Either get them registered this week, or remediate their risk manually now (see Step 6).

Also look at the members of the security group Microsoft created for the policy. Group membership is what defines the scope, and you are allowed to change it.

Step 3: Check your exclusions

Microsoft states that your existing exclusions are preserved. That is about your existing policies. Open this policy, go to Excluded identities, and verify:

  • Break-glass / emergency access accounts are excluded. Don’t assume, look.
  • Service accounts and shared accounts that sign in interactively are excluded (Example 4), and added to your list of accounts to replace with managed identities or workload identities.
Connect-MgGraph -Scopes "Policy.Read.All", "User.ReadBasic.All", "GroupMember.Read.All"

$p = Get-MgIdentityConditionalAccessPolicy -All |
    Where-Object { $_.DisplayName -like "Microsoft-managed*remediation*" }

$p.Conditions.Users.IncludeGroups |
    ForEach-Object { (Get-MgGroup -GroupId $_).DisplayName }

$p.Conditions.Users.ExcludeUsers |
    ForEach-Object { (Get-MgUser -UserId $_).UserPrincipalName }

$p.Conditions.Users.ExcludeGroups |
    ForEach-Object { (Get-MgGroup -GroupId $_).DisplayName }

Step 4: Check for conflicting risk policies

If a user is targeted by more than one user risk policy, precedence applies:

  • Block overrides everything.
  • Require risk remediation overrides Require password change.

So if Microsoft-managed: Block access for high-risk users (or your own block policy) is On for the same users, the block wins and the self-remediation never happens. Microsoft recommends assigning each user to only one of these policies. List every policy that uses user risk:

The Prefer header matters: riskRemediation is a newer enum value, and without the header Graph returns it as unknownFutureValue.

Get-MgIdentityConditionalAccessPolicy -All -Headers @{ Prefer = "include-unknown-enum-members" } |
    Where-Object { $_.Conditions.UserRiskLevels } |
    Select-Object DisplayName, State,
        @{n = "UserRisk"; e = { $_.Conditions.UserRiskLevels -join "," }},
        @{n = "Grant";    e = { $_.GrantControls.BuiltInControls -join "," }} |
    Format-Table -AutoSize

If you already have your own user risk policy with Require password change, this is a good moment to move it to Require risk remediation, especially if you have passwordless users (Example 2).

Step 5: Decide: let it turn on, own it, or turn it off

Option 1: Let it turn on

Fine if you have no user risk policy today and the result of Step 2 is clean. Even then, I would switch it to On yourself, on a day you choose, after telling the helpdesk. That way the change happens on your schedule, not in “the week of October 28”.

Option 2: Duplicate it and own it (my recommendation for most)

If you have a Conditional Access framework with naming standards and persona groups, a Microsoft-named policy scoped to a Microsoft-created group doesn’t belong in it. Use Duplicate, rename the copy to your standard, scope it to your own groups, keep Require risk remediation as the grant control, put it through your change process, and then set the Microsoft-managed original to Off.

You keep the protection, and the policy follows your rules. Microsoft-managed policies can’t be renamed or deleted, so Off is the end state for the original.

Option 3: Set it to Off

Only if you already have an equivalent or stronger user risk policy covering the same users. Document why, and what covers the risk instead. “It was new, so we turned it off” is not a security decision.

Step 6: Clean up current risk and tell the helpdesk

Before enforcement, deal with the users from Step 2 that are high risk today. In ID Protection > Risky users, per user:

  • Reset password (temporary password) if the risk is real and the user can’t self-remediate.
  • Confirm user compromised if your investigation says so, then revoke sessions and disable any suspicious devices.
  • Dismiss user risk if it is a false positive. Note that dismissing doesn’t change the password, so still talk to the user.

Then give the helpdesk three sentences:

  1. A high-risk user will be asked to change their password, or simply to sign in again, sometimes twice. That is expected.
  2. A user who can’t do MFA will be blocked and needs an admin to remediate the risk in ID Protection.
  3. Guests and external users are not supported by this control, so a guest with a risk problem is handled in their home tenant.

Hybrid identities: what to check

For synced users, Microsoft’s documentation notes that eligible hybrid tenants have password hash sync enabled, so users can self-remediate with a secure password change after MFA. Verify that:

  • Password hash sync is actually running.
  • Password writeback is enabled. Microsoft’s risk policy guidance requires it for hybrid users, so a password changed in the cloud lands on-premises too.
  • If users change passwords on-premises (Ctrl-Alt-Delete), consider ID Protection > Settings > Allow on-premises password change to reset user risk. It is opt-in and requires password hash sync.

After enforcement: monitoring

Sign-in logs. In the sign-in log, open a sign-in and select the Conditional Access tab to see whether the policy applied. If you send sign-in logs to Log Analytics or Sentinel, this gives you the trend:

SigninLogs
| where TimeGenerated > ago(30d)
| mv-expand CAP = ConditionalAccessPolicies
| where tostring(CAP.displayName) has "remediation for high-risk"
| summarize Count = count() by Result = tostring(CAP.result), bin(TimeGenerated, 1d)
| order by TimeGenerated asc

During Report-only, look for reportOnlyInterrupted and reportOnlyFailure. After enforcement, failure means someone was stopped.

The remediation flow AppId. During remediation, Entra ID uses a dedicated flow for session revocation that is allowed through regardless of other Conditional Access policies (AppId 93625bc8-bfe2-437a-97e0-3d0060024faa in the public cloud). If you see it in the logs and wonder why your block policy didn’t catch it: that is why. Don’t try to block it.

Changes Microsoft makes to the policy. Microsoft can update managed policies, for example by adding newly eligible users. Those changes are logged with Microsoft Managed Policy Manager as the initiator:

https://graph.microsoft.com/v1.0/auditLogs/directoryAudits?$filter=initiatedBy/app/displayName eq 'Microsoft Managed Policy Manager' and category eq 'Policy'

MC1507808 checklist

  • ☐ Policy found and current state noted (Step 1)
  • ☐ Policy impact reviewed (Step 2, Option A)
  • ☐ High-risk users listed and MFA registration checked (Step 2, Option C)
  • ☐ Members of the Microsoft-created security group reviewed
  • ☐ Break-glass accounts excluded and verified (Step 3)
  • ☐ Interactive service accounts excluded and listed for replacement
  • ☐ No conflicting Block policy on the same users (Step 4)
  • ☐ Decision made: On / Duplicate and own / Off (Step 5)
  • ☐ Current high-risk users remediated or dismissed (Step 6)
  • ☐ Helpdesk informed
  • ☐ Hybrid: password hash sync + writeback verified

Quick answers to the questions everyone asks

Will users be locked out?
Only users who can’t complete MFA, and accounts that can’t do interactive sign-in. Everyone else self-remediates. That is why the MFA check in Step 2 matters more than anything else in this post.

Does it affect guests?
Require risk remediation is not supported for external and guest users, because Entra ID can’t revoke their sessions. Make sure the Microsoft-created group contains no guests.

Does it change my existing Conditional Access policies?
No. Microsoft states that existing CA settings and exclusions, including break-glass exclusions, are not changed.

Can I delete or rename the policy?
No. You can change the state and the exclusions. Use Duplicate if you need more control.

We already have a user risk policy with Require password change. Do we need this?
Not necessarily, but compare: Require risk remediation handles passwordless users and attacker-added devices; Require password change doesn’t. And watch precedence: if both apply to the same user, Require risk remediation wins.

What about sign-in risk?
Not covered by this policy. Use Multifactor authentication and reauthentication for risky sign-ins or your own sign-in risk policy.

We don’t see the policy. Are we safe?
You are not in scope yet. Check your licensing (Entra ID P2, for example through Microsoft 365 E5 or EMS E5) and check again. And if you had legacy ID Protection risk policies, remember they were retired on October 1, 2026, so the gap may already be there.

My recommended plan, condensed

  • Today: Find the policy (Step 1). Run the high-risk + MFA script (Step 2). Verify break-glass exclusions (Step 3).
  • This week: Check for conflicting block policies (Step 4). Clean up the users that are high risk today (Step 6). Decide: On, Duplicate and own, or Off.
  • Before October 28: Brief the helpdesk. If you are letting it turn on, switch it to On yourself on a day you choose.
  • After: Watch the sign-in logs for a couple of weeks and keep an eye on the audit log for changes made by Microsoft Managed Policy Manager.

References

Wrapping up

MC1507808 is a good change. Adaptive risk remediation is the right control for a world where more and more users never type a password, and tenants that never migrated their legacy ID Protection policies may have lost their user risk coverage on October 1 without noticing.

But “Microsoft turns on a policy in your tenant” should never happen without someone having looked at it first. Spend an hour before October 28: find the policy, check who is high risk and whether they can do MFA, verify your exclusions, and then make the decision yourself instead of letting the calendar make it for you.

If you want help reviewing your Conditional Access and ID Protection setup, from a quick check of this one policy to a full CA framework, you know where to find me.

Microsoft Is Retiring SMS and Voice MFA in Entra ID: Your Migration Playbook (and How to Buy More Time)

On July 13, 2026, Microsoft announced one of the biggest changes to authentication in Microsoft Entra ID in years: Microsoft-provided SMS and voice call authentication is being retired, and passkeys become the default authentication experience for everyone. If you still have users approving MFA with a text message or a phone call, this change lands in your tenant automatically – starting September 1, 2026, and finishing with a hard cutoff on February 1, 2027.

I have spent the last two weeks walking customers through what this actually means for them, and the same questions come up every time: What exactly happens to my tenant, and when? How do I find out who is affected? How do I get my users onto passkeys without melting the help desk? And – the question behind the question – what if I am not ready? Can I buy more time, and can I stop Microsoft from prompting my users to register new methods while I work out my plan?

This post is the playbook I wish I could just hand to every IT admin right now. We will cover:

  • The full retirement timeline and what changes automatically in your tenant
  • How to find every user who still relies on SMS or voice
  • How to move them to passkeys (or the Authenticator app) in a controlled way
  • How to extend the period if you need more time – the temporary opt-out and the customer-managed telecom provider option
  • How to suppress the registration prompts so your users are not nudged before you are ready
  • Lessons learned from real migrations, so you can skip the mistakes I have already made for you

Everything below is based on Microsoft’s official announcement and documentation as of late July 2026, plus hands-on testing in my own tenant. Where Microsoft has said “details coming later” I will say so explicitly, because a few important pieces (the opt-out API and the Security Store telecom catalog) are not published yet at the time of writing.

Why Microsoft is doing this

The short version: SMS and voice are the weakest links in the MFA chain, and attackers know it. Phone-based factors are vulnerable to SIM swapping, SS7 interception, social engineering of telecom support desks, and – increasingly – AI-assisted phishing that walks a user through approving a fraudulent prompt in real time. Microsoft’s own numbers have long shown that SMS is roughly 40% less effective at preventing compromise than the Authenticator app, and neither of them holds up against a well-built adversary-in-the-middle (AiTM) phishing kit. Passkeys do, because the credential is cryptographically bound to the site it was registered for – there is nothing for the user to type or approve on a fake page.

Microsoft has been signaling this direction for years: system-preferred MFA, the passkey registration campaign feature, mandatory MFA for Azure management, and the Secure Future Initiative. The July announcement is the point where the signaling stops and enforcement begins. SMS and voice are no longer positioned as secure authentication methods in Entra ID, and Microsoft will simply stop delivering them natively.

It is worth being clear about the scope: only Microsoft-provided SMS and voice delivery is being retired. Microsoft Authenticator (push and TOTP), hardware OATH tokens, FIDO2 security keys, Windows Hello for Business, certificate-based authentication, and external/third-party MFA methods are all unaffected. And SMS/voice as a concept does not disappear entirely – organizations with a genuine regulatory or operational need can keep it by bringing their own telecom provider through the Microsoft Security Store (more on that below).

The timeline – dates you need in your calendar

Here is the full sequence of events. I recommend literally putting these in your team calendar today.

Date What happens
August 1, 2026 API support and documentation for the temporary opt-out becomes available. This lets you delay the September changes while you finish your migration (details below).
September 1, 2026 Users enabled for SMS or voice in the Authentication Methods Policy (or legacy per-user MFA settings) are automatically enabled for passkeys. Your registration campaign is set to Microsoft managed, targeting passkeys, and these users are pulled into scope. On their next MFA sign-in they are nudged to register a passkey (skippable, with unlimited snoozes by default).
September 7, 2026 (Related change) Self-service password reset only accepts authentication methods the user has actually registered.
September 18, 2026 Microsoft publishes the telecom provider options, terms, and pricing information in the Microsoft Security Store.
October 30, 2026 You can select and configure a customer-managed telecom provider through the Security Store if you need to keep SMS or voice.
February 1, 2027 Microsoft-provided SMS and voice delivery is retired. Users whose only MFA method is SMS or voice get a blocking passkey registration prompt at sign-in – no more skipping. There is no opt-out from this milestone. It applies to all tenants in the public cloud.

Two things stand out. First, the September 1 changes are automatic – if you do nothing, Microsoft changes your authentication methods policy and your registration campaign settings for you. Second, February 1, 2027 is a hard wall. The temporary opt-out only postpones the nudging, not the retirement itself. Every plan you make should work backwards from February 1.

Note that this timeline applies to the public cloud. Sovereign and government cloud environments follow a later schedule that Microsoft will communicate separately.

What actually changes in your tenant on September 1

This is the part most summaries gloss over, so let us be precise. If you have users enabled for SMS or voice on September 1, 2026, Microsoft will:

  1. Auto-enable passkeys (FIDO2) in your Authentication Methods Policy for those users, placed in a passkey profile that allows all passkey types – synced passkeys (iCloud Keychain, Google Password Manager) as well as device-bound passkeys (Microsoft Authenticator, Entra passkey on Windows, hardware security keys).
  2. Set your registration campaign to “Microsoft managed”, targeting passkeys. Under Microsoft managed, the snooze duration becomes one day, snoozes are unlimited, and targeting expands to MFA-capable users. In practice: every time an affected user completes MFA (at most once per day), they see a “set up a passkey” interrupt they can skip.
  3. Nudge users at their next MFA sign-in. The nudge is evaluated per device-and-browser combination – a user with Windows Hello for Business will not be nudged on their Windows PC in Chrome or Edge, but the same user may be nudged when signing in from a Mac or a phone, because that credential does not travel with them.

If that is exactly what you want – great, you can lean back and let Microsoft drive registration for you. But in most organizations you will want to control the pacing, the communication, and the target method yourself. Everything below shows you how.

Step 1: Find out who is actually affected

Before you plan anything, get the numbers. “We use the Authenticator app” is what every IT manager tells me; the registration report almost always tells a different story – old accounts that registered a phone number in 2019, frontline workers, service-adjacent accounts, board members, external consultants.

Entra admin center Authentication methods Policies blade showing SMS and Voice call enabled for All users
Entra ID > Authentication methods > Policies – SMS and Voice call still enabled for All users.

Option A: Microsoft’s official analyzer script

Microsoft published a dedicated PowerShell script for exactly this purpose: the Entra SMS and Voice Usage Analyzer on GitHub. Run it with Global Reader, Security Reader, or Authentication Policy Administrator, and it reports which users are enabled for and actively using SMS or voice. Any non-zero result means your tenant is in scope for this whole exercise.

Option B: The user registration details report

In the portal: Entra ID > Authentication methods > User registration details. Filter on the registered methods column for Phone / Alternate phone / Office phone, and pay special attention to users whose default MFA method is a phone-based one. Note that this report requires a Microsoft Entra ID P1 license – in an unlicensed tenant the blade returns a 401, so fall back to the analyzer script or Graph below.

Option C: Microsoft Graph PowerShell, if you want it scriptable

Connect-MgGraph -Scopes "AuditLog.Read.All","UserAuthenticationMethod.Read.All"

# Pull registration details for all users
$details = Get-MgReportAuthenticationMethodUserRegistrationDetail -All

# Users with any phone-based method registered
$phoneUsers = $details | Where-Object {
    $_.MethodsRegistered -match 'mobilePhone|alternateMobilePhone|officePhone'
}

# The high-risk subset: phone is their DEFAULT (or only) MFA method
$phoneDefault = $phoneUsers | Where-Object {
    $_.DefaultMfaMethod -in @('mobilePhone','voiceMobile','voiceAlternateMobile','voiceOffice','sms')
}

$phoneOnly = $phoneUsers | Where-Object {
    -not ($_.MethodsRegistered -match 'microsoftAuthenticator|passKey|windowsHelloForBusiness|fido2|softwareOneTimePasscode|hardwareOneTimePasscode')
}

$phoneUsers    | Export-Csv .\phone-users-all.csv -NoTypeInformation
$phoneOnly     | Export-Csv .\phone-users-ONLY-phone.csv -NoTypeInformation

"Any phone method: {0}  |  Phone as default: {1}  |  Phone as ONLY method: {2}" -f `
    $phoneUsers.Count, $phoneDefault.Count, $phoneOnly.Count

The three buckets matter because they need different treatment:

  • Phone registered, but stronger methods too: lowest risk. These users just need their default flipped (system-preferred MFA usually handles this already) and eventually a passkey.
  • Phone as default: will notice the change. Needs communication.
  • Phone as the ONLY method: these are the users who hit the blocking registration prompt on February 1, 2027. This list is your migration backlog, sorted by priority.

While you are here, create a security group (for example SG-MFA-PhoneOnly-Migration) and fill it with the affected users. You will reuse it for the registration campaign scoping, for Conditional Access pilots, and for targeted communication.

Step 2: Decide where each user segment lands

Do not try to move everyone to the same method. In every migration I have run, the population splits into three or four segments:

  1. Knowledge workers with a Windows PC or Mac: passkeys, full stop. Windows Hello for Business already covers the primary device for many; add a synced or Authenticator-based passkey for the phone and browser scenarios. No license cost, phishing-resistant, and it satisfies the February 2027 requirement.
  2. Mobile-first users who already have Authenticator: passkey in Microsoft Authenticator. The app they already have becomes a device-bound passkey store. This is usually the smoothest single upgrade in the whole project.
  3. Frontline and shared-device users: this is where you slow down and think. FIDO2 hardware keys work brilliantly for shared-PC scenarios. For users with no corporate phone and no personal-phone policy, hardware OATH tokens remain supported (they are not part of this retirement) – just remember they are not phishing-resistant, so treat them as transitional.
  4. The genuinely stuck: regulated out-of-band SMS requirements, alarm and dispatch numbers, environments where smartphones are banned. This small segment is what the customer-managed telecom provider option exists for. Document the requirement (which regulation, which scenario) – you will want that paper trail anyway.

Synced versus device-bound passkeys deserves a sentence: synced passkeys (iCloud Keychain, Google Password Manager) are the most user-friendly and survive device loss, but the private key follows a consumer cloud account. Device-bound passkeys (Authenticator, security keys, Entra passkey on Windows) keep the credential on hardware you can reason about. Microsoft’s September auto-enablement allows all types; if your security team wants device-bound only, configure that in the passkey (FIDO2) policy yourself – and note that a restricted passkey profile changes the nudge behavior (see the suppression section below).

Step 3: Enable and configure passkeys properly

If you let the September 1 auto-enablement do this for you, passkeys arrive with an open, allow-everything profile. Doing it yourself first means you choose the settings – and you take the change out of Microsoft’s hands.

In the Entra admin center: Entra ID > Authentication methods > Policies > Passkey (FIDO2).

Passkey FIDO2 settings blade with Enable toggle, All users target and the default passkey profile
Passkey (FIDO2) settings – Enable and target with the default passkey profile.

The settings that matter:

  • Enable the method, targeting either all users or your migration group to start with.
  • Allow self-service set up: must be Yes, both for users to register from My Security Info and for the registration campaign nudge to work at all.
  • Enforce attestation: only if you have a real requirement – attestation-enforced profiles suppress the registration nudge, which may be exactly what you do not want during a migration.
  • Key restrictions / AAGUIDs: same caveat. If you restrict to specific security key models, the Microsoft managed campaign will not switch to passkey targeting automatically, and nudge behavior changes. Restrict deliberately, not by inherited habit.

For the enterprise-grade rollout, follow Microsoft’s phishing-resistant passwordless deployment guide – it covers the persona-based approach in far more depth than I can here.

Step 4: Run the registration campaign on your terms

The registration campaign (“nudge”) is the engine Microsoft will use in September – but you can start it earlier, scope it tighter, and pace it yourself. A campaign you run in August against a pilot group beats a Microsoft managed campaign that hits everyone in September.

In the portal: Entra ID > Authentication methods > Registration campaign.

Registration campaign blade set to Microsoft managed targeting Passkey FIDO2 with 1 day snooze and unlimited snoozes
Registration campaign – this tenant is already on Microsoft managed, targeting Passkey (FIDO2) with a 1-day snooze and unlimited snoozes.

Configuration that has worked well for me:

  • State: Enabled (not Microsoft managed – Enabled gives you control of every knob).
  • Target method: Passkey (FIDO2). Note you can only run one campaign at a time – passkeys or Authenticator, not both.
  • Include targets: your pilot group first, then the SG-MFA-PhoneOnly-Migration group in waves. Do not start with All users.
  • Days allowed to snooze: 3 or 7 during the soft phase. This is tenant-wide, not per group.
  • Limited number of snoozes: Disabled (unlimited) during the pilot; switch to Enabled (three skips, then required) when you move to enforcement mode. The snooze counter is tracked per user and survives configuration changes.

The same policy via Graph, if you prefer infrastructure-as-code (permissions: Policy.ReadWrite.AuthenticationMethod):

PATCH https://graph.microsoft.com/v1.0/policies/authenticationMethodsPolicy

{
  "registrationEnforcement": {
    "authenticationMethodsRegistrationCampaign": {
      "state": "enabled",
      "snoozeDurationInDays": 3,
      "enforceRegistrationAfterAllowedSnoozes": false,
      "excludeTargets": [],
      "includeTargets": [
        {
          "id": "<objectId of SG-MFA-PhoneOnly-Migration>",
          "targetType": "group",
          "targetedAuthenticationMethod": "fido2"
        }
      ]
    }
  }
}

A few behaviors worth knowing before your help desk finds out for you:

  • The nudge only appears after a successful interactive MFA – users inside an existing SSO session are not interrupted.
  • Conditional Access policies scoped to Register security information are evaluated first. If you restrict security info registration to compliant devices or trusted networks (and since July 6, 2026 these policies are enforced during Windows Hello for Business and macOS Platform SSO enrollment too), users outside those conditions silently do not get nudged. Plan for how those users will ever register.
  • Closing the browser counts as a snooze.
  • The passkey nudge checks whether the user has a local passkey for the current device-and-browser combination. Expect users to report “it keeps asking me even though I already did it” when they switch between PC, Mac, and phone. That is by design; put it in your FAQ.

Step 5: Communicate like the sign-in experience depends on it (it does)

Coordinated communication is the single biggest predictor of a smooth rollout – Microsoft says the same thing in their deployment guidance, and my experience agrees. The pattern that works:

  1. Awareness (now to August): “SMS and phone-call MFA is being retired by Microsoft. Here is why, and here is what will replace it.” Scope it to the affected group – blasting the whole company about a change that only touches 15% of users creates noise and ticket volume for nothing.
  2. Action (September onwards): step-by-step registration guides per device type – Windows Hello, iPhone/iCloud, Android/Google, Authenticator. Microsoft has ready-made end-user templates at aka.ms/mfatemplates that you can rebrand.
  3. Reminder (November-January): targeted mails to the shrinking list of users who still have no phishing-resistant method, with a hard date. Pull the list from the same Graph report you used in step 1 and watch it trend toward zero.

Give the help desk a one-pager: what the nudge screen looks like, how to register each passkey type, what “Skip for now” does, and – critically – what changes on February 1, 2027, when skipping stops being an option.

Need more time? Your two extension options

Now for the part many of you scrolled here for. There are two legitimate ways to buy time, and they solve different problems. Neither of them moves the February 1, 2027 wall.

Option 1: The temporary opt-out (September 2026 to February 2027)

Microsoft is providing a temporary, tenant-level opt-out from the September 1 changes – the passkey auto-enablement and the automatic registration campaign switch. This is aimed at organizations that have a different plan (for example, migrating to a customer-managed telecom provider, rolling out hardware keys on their own schedule, or moving users to another method) and do not want Microsoft touching their authentication methods policy in the meantime.

What we know as of late July 2026:

  • The opt-out is exercised via API, and Microsoft publishes the API details and documentation on August 1, 2026. Keep an eye on the official retirement page – that is where it will land.
  • It delays the September 1 auto-enablement and nudging while you complete your transition activities.
  • It is temporary by design: it covers the September 1, 2026 through February 1, 2027 window. On February 1, enforcement applies to all tenants, opted out or not. Users whose only method is SMS or voice will face the blocking passkey registration prompt unless you have configured a telecom provider.

My advice: even if you plan to opt out, do it as a scheduling decision, not an avoidance decision. Opting out without a dated migration plan just moves your crunch from September to January.

Option 2: Keep SMS/voice with a customer-managed telecom provider

If you have a genuine regulatory or operational requirement for a telephony factor – out-of-band SMS mandated by a compliance regime, users in environments where nothing else works – you can continue using SMS and voice past February 2027 by contracting with a telecom provider through the Microsoft Security Store:

  • September 18, 2026: Microsoft publishes the provider catalog, terms, and pricing in the Security Store. Evaluate providers against your regional and compliance requirements.
  • October 30, 2026: configuration opens. You select a provider, stand up the contract through the marketplace flow, and wire it into your tenant.
  • Costs: this is the part to socialize with management early. Unlike today, where SMS delivery is bundled into your licensing, the customer-managed model is your contract with the carrier – typically per-message pricing that varies by provider, volume, and geography. Migrating users to passkeys costs nothing; keeping SMS becomes a line item.

Treat this as a scoped exception, not a tenant-wide strategy: identify the specific user segments with the documented need, put them on the customer-managed channel, and default everyone else to passkeys. Between the carrier cost, the audit questions, and the fact that SMS remains phishable, the economics push the same direction as the security argument.

One more planning note: test the provider flow with a pilot group well before February. You do not want to discover carrier delivery quirks in specific countries during the enforcement week.

Suppressing the registration prompts while you work out your plan

Maybe you are mid-negotiation with a telecom provider. Maybe your change advisory board meets quarterly. Maybe you simply do not want users seeing Microsoft-branded prompts before your communication has landed. Whatever the reason, here is how you keep the nudges away from your users – deliberately and reversibly.

The clean way: take your users out of scope before September 1

The September auto-enablement only targets users enabled for SMS or voice in the Authentication Methods Policy or legacy per-user MFA settings. If you migrate users to other methods and disable SMS/voice for them before September 1, there is nothing for Microsoft to auto-enable and nobody gets pulled into the Microsoft managed campaign. This is the option Microsoft itself points to, and it has the advantage of actually solving the problem rather than postponing it.

SMS settings blade with Enable toggle, target scoping and Use for sign-in option
SMS settings – Enable and Target with group scoping and the Use for sign-in option.

The control way: set the registration campaign yourself

The registration campaign is a tenant setting, and your configuration is the control surface. To stop nudging entirely:

Portal: Entra ID > Authentication methods > Registration campaign > set State to Disabled > Save.

Graph:

PATCH https://graph.microsoft.com/v1.0/policies/authenticationMethodsPolicy

{
  "registrationEnforcement": {
    "authenticationMethodsRegistrationCampaign": {
      "state": "disabled",
      "snoozeDurationInDays": 1,
      "enforceRegistrationAfterAllowedSnoozes": true,
      "excludeTargets": [],
      "includeTargets": []
    }
  }
}

If you want the campaign running but need to shield specific populations – VIPs mid-quarter-close, a factory site with no phones, a business unit in the middle of a divestiture – use exclude targets instead of disabling the whole thing:

{
  "registrationEnforcement": {
    "authenticationMethodsRegistrationCampaign": {
      "state": "enabled",
      "snoozeDurationInDays": 7,
      "enforceRegistrationAfterAllowedSnoozes": false,
      "excludeTargets": [
        { "id": "<objectId of SG-MFA-Nudge-Excluded>", "targetType": "group" }
      ],
      "includeTargets": [
        { "id": "all_users", "targetType": "group",
          "targetedAuthenticationMethod": "fido2" }
      ]
    }
  }
}

Exclusion wins over inclusion – a user in both lists is excluded. And remember the softer levers before you reach for Disabled: a long snooze duration (up to 14 days) with unlimited snoozes is a much gentler campaign than the Microsoft managed default of daily prompts.

Registration campaign State dropdown open showing Enabled, Disabled and Microsoft managed options
The State dropdown is your control surface: Enabled, Disabled, or Microsoft managed.

What suppression does NOT do

Three honest caveats, because I have seen all three misunderstood already:

  1. Disabling the campaign today does not prevent the September 1 change. Microsoft sets the campaign to Microsoft managed as part of the rollout. Expect to re-assert your configuration after September 1, or use the official opt-out API from August 1 – that is the supported mechanism for exactly this scenario.
  2. Other setup prompts still exist. Security defaults, SSPR combined registration enforcement, and Conditional Access policies requiring MFA registration are separate mechanisms. The registration campaign switch only controls the passkey/Authenticator nudge.
  3. Nothing suppresses February 1, 2027. The blocking prompt for SMS/voice-only users is enforced for all tenants. Microsoft has been unusually explicit: there is no opt-out from that milestone. Suppression buys you communication time; it does not buy your users a future with SMS codes.

Lock in the gains with authentication strengths

Once a user segment has registered passkeys, close the door behind them. A Conditional Access authentication strength policy requiring Phishing-resistant MFA for your most sensitive applications (or for privileged roles) ensures that a registered passkey is not just an option sitting next to a weaker method – it becomes the method that actually gets used. The built-in strengths cover the common cases:

  • Phishing-resistant MFA: passkeys (FIDO2), Windows Hello for Business, certificate-based authentication. This is the end state.
  • Passwordless MFA: the above plus Authenticator passwordless sign-in. A good intermediate target.
  • MFA: the classic list, including SMS and voice – which is exactly why you want to move off it.

Sequence matters here: roll out authentication strengths after registration in each wave, not before. If you require phishing-resistant MFA from users who have not registered a passkey yet, and they cannot satisfy the security info registration CA policy either, you have built a deadlock the service desk gets to untangle with Temporary Access Passes, one ticket at a time. Pilot group, registration wave, comms, then the strength policy – in that order, per wave.

This is also the answer to a question I get a lot: “if SMS stops working in February, does that not just mean attackers move to phishing our Authenticator prompts?” Yes – retiring SMS is necessary, not sufficient. Authentication strengths are how you convert the passkey rollout from a registration statistic into an actual reduction of attack surface.

Quick answers to the questions everyone asks

Does this affect Microsoft 365 personal or family accounts? No – this timeline is about Microsoft Entra ID (work and school accounts) in the public cloud. Consumer accounts and sovereign clouds run on their own schedules.

Are Authenticator push notifications and TOTP codes going away too? No. Only Microsoft-provided SMS and voice delivery is retired. Authenticator, TOTP, hardware OATH tokens, FIDO2 keys, Windows Hello for Business, and certificate-based authentication all continue.

Will my users get locked out on February 1, 2027? Not locked out – blocked-until-registered. A user whose only method is SMS or voice will be required to register a passkey during sign-in before they can continue. That is a support-heavy morning if it hits hundreds of users at once, which is the entire argument for doing this on your own schedule.

We use a third-party MFA provider through external authentication methods – are we affected? External MFA methods are not being retired. But if some of your users are also enabled for Entra SMS or voice, those users are in scope for the September auto-enablement, so clean up the policy targeting.

Can I keep using SMS for SSPR only? Only through a customer-managed telecom provider. The retirement covers SSPR as well as MFA.

Do not forget SSPR

The retirement applies across Entra, including self-service password reset. If your SSPR policy leans on phone-based verification, those methods stop working on the same February 2027 date unless a customer-managed provider is in place. Combine that with the September 7, 2026 change (SSPR only accepts methods the user has registered) and the message is clear: your SSPR method policy needs the same review as your MFA policy. Microsoft has said that password change support for passwordless users is coming, but if passwords are still part of your world, make sure every user has at least two non-phone methods registered – Authenticator plus email, or Authenticator plus security questions – before you switch off phone options.

Lessons learned from the field

These are the things the documentation will not tell you, collected from migrations I have run or rescued:

1. The registration report always contains surprises. Every tenant I have analyzed had phone-only users nobody expected: meeting room accounts someone MFA-enabled in a panic, a CFO whose Authenticator broke in 2023 and “temporarily” fell back to SMS, external bookkeepers, that one integration account a vendor set up with a real mobile number. Run the report before you estimate the project, not after.

2. Check your break-glass accounts first, not last. If your emergency access accounts use voice call as a factor (it was a common recommendation a decade ago), fix that this week. FIDO2 hardware keys stored in physically separate locations is the pattern. You do not want to discover this dependency during an incident in March 2027.

3. Per-user MFA settings are still lurking in older tenants. Users enabled through the legacy per-user MFA portal are in scope for the September auto-enablement too. If you never finished the migration to the Authentication Methods Policy, this is the forcing function – converged authentication methods migration first, then the passkey rollout. Doing them simultaneously multiplies the confusion.

4. The nudge’s per-device evaluation generates tickets. Users who registered a passkey on their PC get nudged again on their phone and conclude “it didn’t work”. Pre-empt it in your comms: one passkey per platform is normal, and Windows Hello for Business does not follow you to your iPhone.

5. Conditional Access and the nudge interact silently. A CA policy that locks security info registration to compliant devices will quietly prevent nudges for users on unmanaged devices – which, in a BYOD-heavy organization, can be most of the affected population. Decide on a registration path for those users (Temporary Access Pass issued by the service desk works well) before you turn on enforcement.

6. Watch out for shared phone numbers. Shops, wards, and warehouses where one number backs ten accounts break in interesting ways when those accounts each need an individual passkey. FIDO2 keys on a lanyard have solved this everywhere I have tried them.

7. Guests are in scope, and passkey support for B2B is not fully there yet. Microsoft says passkey support for B2B and internal guests lands by end of 2026 – which is cutting it close to February 2027. Inventory your guest users with phone-based MFA now, and consider whether external MFA trust settings (accepting the home tenant’s MFA claim) can take them out of the equation entirely.

8. Do not let “temporary” become permanent. Every extension mechanism in this post – the opt-out, the telecom provider, long snoozes, exclusion groups – is a bridge. Put an expiry date and an owner on each one the day you create it. The tenants that struggle in January 2027 will be the ones that treated September’s opt-out as a solution.

9. Sell the upside, not just the deadline. Passkeys are genuinely faster – no more typing codes, no more “open the app on your other phone”. Users who experience a passkey sign-in once rarely want to go back. Frame the change as an upgrade with a deadline, not a compliance chore, and your registration numbers will show the difference.

My recommended plan, condensed

  1. Now: run the analyzer script and the registration report. Build the affected-users group. Check break-glass accounts.
  2. August: decide per segment: passkey, Authenticator bridge, hardware key, or (rarely) telecom provider. If the September auto-changes conflict with your plan, grab the opt-out API details on August 1 and file the change request. Configure the passkey policy yourself before Microsoft does it for you.
  3. September-October: pilot the registration campaign against IT, then wave by wave. Send awareness and action comms. Evaluate the Security Store catalog (from September 18) if you have a telephony requirement, and configure the provider from October 30.
  4. November-December: flip the campaign to limited snoozes for the stragglers. Chase the phone-only list down toward zero. Fix SSPR methods.
  5. January 2027: buffer month. Nothing new – just verification, reporting, and the final targeted reminders before the February 1 enforcement.

References and further reading

Wrapping up

Microsoft retiring SMS and voice MFA is not a surprise direction – it is the industry direction with a date on it. The organizations that will sail through this are the ones that treat September 1, 2026 as their deadline for having a plan, not February 1, 2027 as their deadline for panicking. Run the report today, segment your users, take control of the registration campaign before Microsoft’s defaults do it for you, and use the extension mechanisms for what they are: bridges with an expiry date.

If you want help assessing your tenant – from a quick phone-method inventory to a full passkey rollout – you know where to find me.

PIM Tray: Activate Microsoft Entra ID PIM Roles From the Windows Tray

Entra ID PIM activation - PIM Tray Windows tray app

Entra ID PIM activation is a daily ritual for anyone who operates Microsoft Entra ID. If you operate Microsoft Entra ID for a living, you know the dance. Open the portal. Sign in. PIM. My roles. Activate. Type a reason. Pick a duration. Confirm. Repeat for every role, every shift, every customer.

Honestly, I do this on most days. So does every other IT pro I know.

This week, however, I finally decided I was done with it – so I built PIM Tray, a tiny Windows tray app that activates one or more Entra ID PIM roles in a single dialog. It is free, open source under MIT, code-signed, and on GitHub at github.com/ThomasMarcussen/PIMTray.

Entra ID PIM Activation in 30 Seconds: What PIM Tray Does

  • Sits in the Windows system tray as a shield icon.
  • Left-click opens a small window listing every role you are eligible for. Right-click shows the same list as a context menu, plus sign-in / sign-out / about.
  • Tick one or more roles, hit Activate, type a reason, pick a duration, done.
  • A single Windows toast tells you which roles activated, which are pending approval, and which failed – so partial success is obvious instead of buried.

That is essentially the whole pitch. In short: no browser, no tab switching, no clicking through six blades to find the same form you used twenty minutes ago.

Why I Built an Entra ID PIM Activation Tool

First, I tried the obvious alternatives.

  • The Entra portal is the canonical UX. It is fine for one role, painful for three, exhausting for ten.
  • Microsoft.Graph PowerShell with a snippet works, but I do not want to keep a terminal open for a 3 second action, and reason prompts in a shell are friction.
  • Microsoft Authenticator and WAM do not do PIM activation.
  • A couple of community tools exist, but none were code-signed, none batched, and one of them shipped its own browser.

In the end, what I actually wanted was a tool that lived where my other always-on tools live – the notification area – and respected the fact that admins activate roles in clusters, not one at a time.

Therefore I built PIM Tray, a small tool that turns Entra ID PIM activation into a one-click workflow that lives in the Windows tray.

How Entra ID PIM Activation Works in PIM Tray

In particular, there are three moving parts: authentication, discovery, and activation.

Authentication: MSAL Interactive Sign-In

PIM Tray uses MSAL (Microsoft.Identity.Client) as a public client. The default system browser pops, you complete MFA and Conditional Access the proper way, and the token is cached encrypted to disk at %LOCALAPPDATA%\PIMTray\msal_cache.bin via DPAPI. As a result, subsequent launches go silent until the refresh token expires.

Importantly, no password is ever typed into the app, and there is no embedded browser or token-stealing surface area.

Role Discovery: One Microsoft Graph Call

After sign-in, PIM Tray queries Microsoft Graph for every PIM role you are eligible for, with the scope expanded:

GET https://graph.microsoft.com/v1.0/roleManagement/directory/roleEligibilitySchedules
    ?$filter=principalId eq '&lt;your object id>'
    &amp;$expand=roleDefinition

As a result, every eligible role shows up in the list automatically, with its display name and scope (Directory or a resource path). There is no config file of role IDs to maintain.

Activation: One POST Per Checked Role

Then, for each role you tick, PIM Tray posts a self-activation request:

POST https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignmentScheduleRequests
Content-Type: application/json

{
  "action": "selfActivate",
  "principalId": "&lt;user object id>",
  "roleDefinitionId": "&lt;role id>",
  "directoryScopeId": "/",
  "justification": "Friday change window, ticket INC0001234",
  "scheduleInfo": {
    "startDateTime": "2026-05-12T07:30:00Z",
    "expiration": { "type": "AfterDuration", "duration": "PT4H" }
  }
}

Notably, errors surface verbatim from Graph. If your role policy requires approval, the request is created in pending state and the tray balloon says so. If the policy requires ticket info that the form does not capture, the call fails clearly. No magic, no silent retries, no surprises.

Under the hood, the whole app is .NET 9 WinForms. In total, the signed exe is about 1.3 MB, while the MSI installer is under 500 KB.

Entra ID PIM Activation: The Permissions Question

PIM Tray needs three delegated Microsoft Graph scopes:

  • RoleEligibilitySchedule.Read.Directory
  • RoleAssignmentSchedule.ReadWrite.Directory
  • User.Read

Specifically, there are two practical ways to satisfy them:

  1. Use the bundled default ClientId – the public Microsoft Graph PowerShell first-party app. The first sign-in shows the standard consent prompt. A Global Administrator can pre-consent at tenant level so end users never see the prompt again. Zero setup, but tenant-wide consent to a Microsoft-published app is heavier than some security teams want.
  2. Register your own Entra ID app. New registration, mobile and desktop platform, redirect URI http://localhost, the three delegated scopes above, admin consent granted once. Paste the resulting TenantId and ClientId into appsettings.json (auto-created at %APPDATA%\PIMTray\ on first run). Cleaner long-term, especially if you ship the tool to other admins in your tenant.

In addition, both paths are documented in the README. For personal use, option 1 is two clicks away.

Install

PIMTray.msi  ->  C:\Program Files\PIM Tray\PIMTray.exe

To get started, download the signed MSI from the v1.0.0 release. The MSI is signed with our EV certificate (DigiCert, with RFC 3161 timestamp) so SmartScreen and Microsoft Defender treat it normally and Add/Remove Programs shows a real publisher instead of Unknown.

Requirements:

  • Windows 10 or 11 (x64)
  • .NET 9 Windows Desktop Runtime on the target machine
  • At least one eligible PIM role on your signed-in account

Alternatively, to build from source, clone the repo and run dotnet publish -c Release -r win-x64 --self-contained false -p:PublishSingleFile=true. The exe lands in bin\Release\net9.0-windows\win-x64\publish\.

Frequently Asked Questions

Does PIM Tray support PIM for Groups?

Not in v1.0.0. The current release covers Entra ID directory roles via roleManagement/directory. Group-membership activations (identityGovernance/privilegedAccess/group/) are on the roadmap.

Does PIM Tray support Azure resource PIM (subscriptions, resource groups)?

Not yet. Azure RBAC PIM goes through roleManagement/rbacApplications and needs a different scope ID model. Tracking it as a roadmap item.

Does PIM Tray work with Conditional Access policies that require MFA on PIM?

Yes. In fact, authentication is interactive through MSAL using the system browser, which inherits all your Conditional Access policies, MFA prompts, and even Windows Hello / passkey flows. If your policy requires reauth for PIM, you get the standard Microsoft challenge.

Where is the token stored?

%LOCALAPPDATA%\PIMTray\msal_cache.bin, encrypted with DPAPI scoped to the current Windows user. The token never leaves your machine.

Is PIM Tray code-signed?

Yes. Both PIMTray.exe and PIMTray.msi are signed with an EV code-signing certificate from DigiCert and timestamped via RFC 3161, so the signature stays valid past certificate expiry.

Is PIM Tray open source?

Yes, MIT licensed. Source, issues and pull requests at github.com/ThomasMarcussen/PIMTray.

What is Next

The roadmap on the repo is short and honest:

  • PIM for Groups (group-membership activations)
  • Azure Resource PIM (subscription / resource group scopes)
  • Approval-pending polling so you do not have to refresh manually
  • Start at logon toggle in the About dialog
  • Optional dark mode

Finally, if you use PIM Tray and it shaves five minutes off your week, that is a win for both of us. Issues and PRs welcome.

Try It

If PIM Tray fits your Entra ID PIM activation routine and you build something on top of it, ping me. I would like to hear what other patterns admins want to automate next.


Thomas Marcussen is a Microsoft MVP and Technology Architect. More notes and tools at thomasmarcussen.com.