Update, 14 October 2026: Microsoft has not yet listed the KB5127648 802.1X PEAP authentication failure as a known issue on the Windows release health dashboard or in the KB article. Everything below is based on reproducible reports from administrators, Microsoft’s own NTLMv1 documentation and my own customer cases. I will update this post when Microsoft publishes an official statement.
The October 2026 Patch Tuesday update for Windows 11, KB5127648 (OS builds 26100.9711, 26200.9711 and 26300.9711 for 24H2, 25H2 and 26H2), was released on 13 October 2026. Within hours, administrators started reporting that domain-joined clients could no longer authenticate to WPA2-Enterprise Wi-Fi using 802.1X PEAP. Wired 802.1X PEAP is affected too. WPA2-Personal and WPA3-Personal networks keep working, which is why the problem often looks like “the Wi-Fi is broken at the office but fine at home”.
I got the first call from a customer this morning: “Clients suddenly refuse to connect to our Wi-Fi, and there were no problems yesterday.” That is the fingerprint of this issue. Here is what we know, how to confirm it on an affected device, and what you can do about it today.
Symptoms of the KB5127648 802.1X PEAP issue
Clients on Windows 11 24H2, 25H2 or 26H2 with KB5127648 installed fail to connect to WPA2-Enterprise (802.1X) Wi-Fi.
Wired 802.1X PEAP on Ethernet shows “Connected, not authenticated” and loops on a 600 second block timer.
Authentication starts but never completes. The request never reaches the RADIUS/NPS server, so there is nothing to find in the NPS log.
Both machine authentication and user authentication with “Use my Windows user account” fail. Manually typing DOMAIN\username and password in the Wi-Fi prompt has been reported to work.
Intel and Qualcomm Wi-Fi chipsets are both affected, so this is not a driver problem.
Uninstalling KB5127648 and rebooting restores connectivity. Reinstalling it breaks it again.
How to confirm it in Event Viewer
Open Event Viewer and go to Applications and Services Logs > Microsoft > Windows > WLAN-AutoConfig > Operational (or Wired-AutoConfig > Operational for Ethernet). On an affected device you will see this sequence:
Log
Event ID
Message
WLAN-AutoConfig
12011
Wireless 802.1X authentication started successfully (PEAP)
WLAN-AutoConfig
12014
Authentication restarted, reason: OneX Held State timeout
User uses saved credentials (the only EapHost event, no Schannel certificate errors)
If the root cause below is correct, you will also find Event ID 4025 in Microsoft-Windows-NTLM > Operational: “An attempt to use NTLMv1-derived credentials for Single Sign-On was blocked due to policy.” Before the update, the same device would have logged the audit-only Event ID 4024 instead.
The likely root cause: NTLMv1 SSO is now blocked by default
Late August 2025: Audit logging for NTLMv1 usage enabled on Windows 11 24H2 and newer.
November 2025: Rollout of the changes to Windows Server 2025.
October 2026: The default value of the BlockNtlmv1SSO registry key changes from Audit mode (0) to Enforce mode (1). This only takes effect if the key has not been deployed explicitly.
The same article names the exact scenario that breaks: remnants of NTLMv1 cryptography are still used “when using MS-CHAPv2 in a domain-joined environment”, and the examples given are “Wi-Fi, Ethernet, and VPN deployments using MS-CHAPv2 authentication”. PEAP with the MS-CHAPv2 inner method, which is what most password-based enterprise Wi-Fi still runs on, needs the NTLMv1-derived credential for single sign-on with the logged-on user or the machine account. When Enforce mode blocks that request, EAP fails locally with 0x80070285 before a single packet reaches your RADIUS server.
The KB5127648 article does not mention NTLM, 802.1X or PEAP at all, and Microsoft’s release notes said it was not aware of any new issues apart from a USB audio problem. So the causal link is inferred from the timeline and the fact that setting the key back to 0 fixes the problem. Treat it as very likely, not confirmed.
Workaround 1: Pause the update and uninstall it on affected devices
If you manage updates with Windows Autopatch, Intune update rings or WSUS, pause the October quality update now so it does not reach more devices. If you are mid-way through a 26H2 rollout, see my post on getting ready for Windows 11 26H2 with Autopatch for how the rings and pause controls fit together. On devices that are already broken, uninstall the update and reboot:
wusa /uninstall /kb:5127648
Keep in mind that this removes the October security fixes, and that the device needs a working network to receive anything from Intune. A device without Wi-Fi cannot download a remediation script, so plan for a wired connection, a phone hotspot or hands-on work.
Workaround 2: Set BlockNtlmv1SSO back to Audit mode
Several administrators have confirmed that explicitly deploying the registry value restores PEAP authentication while keeping KB5127648 installed. This is the approach Neowin and Windows Report describe:
0 (Audit): The request to generate NTLMv1 credentials for a logged-on user is audited but allowed. Event 4024 is logged.
1 (Enforce): The request is blocked and Event 4025 is logged. This is the new default after KB5127648.
Be honest with yourself about what this does: you are rolling back a security hardening that Microsoft has been announcing for over a year. It buys time, nothing more. One administrator in the Microsoft Q&A thread put it well: setting it to 0 “only bought us time”.
Deploying the value with Intune
There is no Settings Catalog entry or Policy CSP node for this value, so use a Remediation script (Devices > Scripts and remediations) or a PowerShell script. A minimal pair that is safe to run repeatedly:
Run it in the 64-bit PowerShell host, in system context, and target it at the devices that are not yet updated first. Devices that are already off the network will pick it up as soon as they get any connectivity.
The real fix: move from PEAP-MSCHAPv2 to EAP-TLS
Password-based PEAP-MSCHAPv2 has been on borrowed time for years. It depends on NTLM-era cryptography, it is vulnerable to credential relay if clients do not validate the server certificate strictly, and Microsoft is clearly moving toward blocking it. The durable answer is certificate-based EAP-TLS, which does not touch NTLM at all and is unaffected by this change.
Cloud-native tenants: Microsoft Cloud PKI in Intune Suite can issue device and user certificates via SCEP, and your NPS or cloud RADIUS validates them. No on-premises CA required.
Hybrid tenants with AD CS: Use your existing enterprise CA with an Intune Certificate Connector (SCEP or PKCS) and switch the NPS network policy to Microsoft: Smart Card or other certificate.
Either way: Push a new Wi-Fi profile from Intune with EAP-TLS, keep the PEAP SSID running in parallel until every device has a certificate, then retire it.
If you are also deploying Credential Guard (and you should be), note that Microsoft’s NTLMv1 article recommends it strongly. Credential Guard already blocks NTLMv1 and unconstrained delegation on its own, so a device with Credential Guard enabled is likely to have hit this wall earlier in testing.
What to tell your users and your helpdesk
Home Wi-Fi, hotspots and guest networks with a simple passphrase still work. Only the corporate 802.1X network is affected.
Typing the domain username and password manually in the Wi-Fi prompt is a usable emergency workaround for individual users.
Do not let users “reset network settings” or reinstall Wi-Fi drivers. It wastes time and changes nothing.
Windows 11 26H2 is generally available as of September 29, 2026. For most organizations running Windows Autopilot and Microsoft Intune, this is the calmest annual feature update in years: devices on 24H2 or 25H2 get a tiny enablement package and a single restart. But “calm” is not the same as “nothing to do”. There are lifecycle deadlines only weeks away, a new Windows 11 branch (26H1) that cannot take 26H2 at all, features that are now switched on by default for commercial devices, and a reporting stack that simply shows nothing if you have not flipped the right switches.
This post is the practical version: what Windows 11 26H2 actually is, what to do in Intune and Autopilot this week, what to be aware of before you press deploy, and how to report on the rollout so you can prove where every device is. All screenshots are from my own tenant, taken on release day.
If you want the Autopatch ring design and pilot-to-production exit criteria in more depth, I covered that earlier in Windows 11 26H2: Upgrade Paths, Autopatch & Pilot to Production. This post focuses on the GA release itself, Autopilot, Intune policy and reporting.
Windows 11 26H2 at a glance
General availability
September 29, 2026
Build
26300 (10.0.26300.x)
Delivery for 24H2 and 25H2
Enablement package (KB5121794), single restart
Delivery for 23H2 and Windows 10
Full feature update (media-based, several GB)
Windows 11 26H1 devices
Not eligible for 26H2 (different Windows core)
Servicing
36 months for Enterprise and Education, 24 months for Home and Pro
Hardware requirements
Unchanged from Windows 11 (TPM 2.0, UEFI Secure Boot, supported CPU)
Windows 11 24H2, 25H2 and 26H2 share one servicing branch. The code for most 26H2 features has already been delivered to your devices through the monthly cumulative updates, sitting dormant. The enablement package flips the version to 26H2, activates the features that were held back and resets the support clock. That is why Microsoft calls it a “predictable and low-disruption update”, and why app compatibility testing you already did on 24H2 or 25H2 largely carries forward.
Why you should not wait: the lifecycle dates that matter now
The most important reason to act on Windows 11 26H2 this month has nothing to do with new features. It is the support calendar:
Windows 11 24H2 Home and Pro reaches end of servicing on October 13, 2026. That is two weeks after 26H2 GA. Many small and mid-size businesses run Pro, often on Autopilot devices that shipped from the OEM with 24H2.
Windows 11 23H2 Enterprise and Education ends on November 11, 2026. These devices need a full feature update, not the enablement package.
Windows 11 24H2 Enterprise and Education is supported until October 13, 2027, and 25H2 Enterprise and Education until October 11, 2028.
If you have Pro devices on 24H2, 26H2 (or at minimum 25H2) needs to be on them before mid-October. The good news is that the enablement package makes that realistic even on a short timeline.
Step 1: Find out what you actually have
Before you create a single policy, get an honest inventory of Windows versions in the tenant. The quickest view is Devices > Windows > Windows devices with the OS version column visible. Build numbers map to versions like this:
Build
Version
Path to 26H2
10.0.19045
Windows 10 22H2
Full upgrade (hardware permitting)
10.0.22631
Windows 11 23H2
Full feature update
10.0.26100
Windows 11 24H2
Enablement package
10.0.26200
Windows 11 25H2
Enablement package
10.0.26300
Windows 11 26H2
Already there
10.0.28000
Windows 11 26H1
Not eligible, stays on the 26H1 path
My own tenant is a good example of why this matters. It is small, but it already contains three different stories: several 25H2 devices (26200) that will take the enablement package, one 23H2 device (22631) that needs a full upgrade, and one brand-new device on 26H1 (28000) that will never be offered 26H2.
Windows devices in Intune with the OS version column: 25H2 (26200), 23H2 (22631) and a 26H1 device (28000) in the same tenant.
For anything beyond a handful of devices, export the list or pull it with Microsoft Graph PowerShell and group by build:
Pay special attention to edition. A 24H2 device on Enterprise has another year of support; the same build on Pro runs out on October 13.
Step 2: Clean up your update rings before you deploy
Feature update policies and update rings work together, and the combination is where most “why is nothing happening?” tickets come from. Microsoft’s guidance is clear: when you use a feature update policy, set the feature update deferral period in the update ring that targets the same devices to 0 days. The feature update policy then controls which version the device gets and when. A ring that still defers feature updates can block or delay the version you are trying to deliver, and the device will report PolicyConflictDeferral in the failure report.
Update rings in my tenant: several rings still defer feature updates by 5 to 7 days. Set this to 0 days on rings that share devices with a feature update policy.
While you are in the rings, check three more things:
Paused rings. A ring that was paused during an incident and never resumed will stop 26H2 as effectively as a deferral (PolicyConflictPause).
Windows 10 leftovers. Rings and policies named for Windows 10 often still carry old settings. Windows 10 reached end of support on October 14, 2025, and any remaining devices need an upgrade plan or ESU.
Conflicting GPOs. On hybrid or co-managed devices, a WSUS or deferral GPO that still applies will fight the MDM policy. Confirm the Windows Update workload sits with Intune.
Step 3: Create the Windows 11 26H2 feature update policy
Go to Devices > Windows > Windows updates > Feature updates. On release day the tab already shows Autopatch update readiness tiles, and in my tenant a yellow banner that we will come back to in the reporting section. The Create menu now offers both a classic Feature Update Policy and an Autopatch multi-phase release.
The Feature updates tab with Autopatch update readiness and a warning that Windows diagnostic data features are not enabled.
Choose Feature Update Policy. Windows 11, version 26H2 is already the default in the Feature update to deploy list, alongside 25H2, 24H2 and 23H2. Note that 26H1 is not in the list: it is not a feature update target, it is a separate branch for specific new hardware.
Creating a feature update deployment: Windows 11, version 26H2 is available and selected by default on GA day.
Settings I recommend for the first wave:
Name: something that tells the next admin what it is, for example WIN-FU-26H2-Pilot.
Required vs. optional: use Make available to users as a required update for managed rollout. The optional setting is useful for a self-service early adopter group, but you give up control of timing.
Rollout options:As soon as possible for the pilot, Gradually for broad. Gradual rollout spreads offers across groups and days, which protects your network and your service desk.
Assignments: device groups, not user groups. Start with IT, then a pilot of 5 to 10 percent across hardware models and departments, then broad.
Two behaviors to keep in mind. First, a feature update policy is also a “stay here” instruction: devices targeted by an existing 24H2 or 25H2 policy will not move to 26H2 until you change or replace that policy. Search for old feature update policies before you wonder why nothing happens. Second, a device should be in exactly one feature update policy. If it lands in two, the failure report shows DeploymentConflict and only the first assigned deployment is effective. Use exclusions to keep pilot and broad groups mutually exclusive.
If you use Windows Autopatch, create an Autopatch multi-phase release instead and let the Test, First, Fast and Broad rings stagger 26H2 for you. Plan any group changes first: you cannot edit an Autopatch group while a feature update release is in progress for it.
What to do if you use Windows Autopilot
Autopilot does not install a new Windows version. It provisions whatever image the OEM put on the device, whether that is 24H2, 25H2 or eventually 26H2. What happens after enrollment is controlled by your update policies. That leads to a few concrete tasks.
Make sure new devices land in the 26H2 policy on day one
New hardware arriving this quarter will mostly ship with 24H2 or 25H2. If your broad 26H2 policy targets a static group that nobody updates, every new Autopilot device will be one version behind from its first boot, and new Pro devices on 24H2 are two weeks from end of servicing. Target the policy at the same dynamic or device preparation device group your Autopilot devices land in, for example a dynamic group on the Autopilot ZTDID attribute:
For Autopilot device preparation, the device group you configure in the device preparation policy works the same way. Because the eKB is only a restart, new devices move to 26H2 shortly after the user has signed in, without a long upgrade experience.
Know what happens during OOBE
The Enrollment Status Page setting Install Windows quality updates (might restart the device) installs the monthly quality update during OOBE. It does not install the 26H2 feature update, so your ESP timing does not change. The version move happens after provisioning, driven by the feature update policy. If you have customers or users who expect “the latest Windows” out of the box, that is the expectation to set.
Look at device association for Autopilot device preparation
Windows 11 26H2 brings device association for Windows Autopilot device preparation. It lets you identify trusted corporate devices before enrollment, which enables device-targeted policies, automatic corporate enrollment and more customization during OOBE. That closes one of the biggest gaps between device preparation and classic Autopilot profiles. It sits under Devices > Windows > Enrollment, right above the device preparation policies.
Windows enrollment in Intune: Windows Backup and Restore, Device association, Autopilot device preparation and classic Windows Autopilot.
Decide on Windows Backup and Restore
In 26H2, Windows settings backup is enabled by default for eligible commercial devices, and the first sign-in restore experience now also supports Microsoft Entra hybrid joined devices, Cloud PCs and multi-user environments. For device refresh with Autopilot this is genuinely useful: the user signs in on the new device and gets settings and their Microsoft Store app list back. Administrator-configured policies are still honored, so if your organization has decided against it, make that decision explicit with the Windows Backup and Restore enrollment setting and the settings catalog, rather than relying on a default that just changed.
Plan for 26H1 hardware
Windows 11 26H1 ships on specific new devices and runs on a different Windows core. Microsoft states that these devices cannot update to 26H2. For Autopilot this means you will enroll a growing number of devices with build 28000 that are newer than 26H2 by build number but are not “on 26H2”. Check anything that makes decisions based on OS version:
Compliance policies that use Valid operating system builds ranges, for example 10.0.26100 to 10.0.26300. A 28000 device falls outside and becomes noncompliant, which with Conditional Access means blocked.
Dynamic groups and assignment filters on deviceOSVersion or osVersion that use startsWith “10.0.26”.
Reports and dashboards that calculate “on latest version” by comparing strings.
Reset, wipe and reimaging
Autopilot Reset and a local wipe reinstall from the device’s current OS, so a device that has taken 26H2 stays on 26H2. If you still maintain a corporate image for reimaging before Autopilot, update it to 26H2 media so reimaged devices do not start their life on a version that is about to go out of support.
What to be aware of in Windows 11 26H2
Most of these changes are good news. They are listed here because each of them can surprise a user, a script or a service desk if you did not know it was coming.
Features that are now on by default for commercial devices
Some features were delivered earlier through monthly updates but held back on commercial devices by temporary enterprise feature control. 26H2 enables them by default: Windows settings backup, app-specific actions from the taskbar, and a set of File Explorer enhancements. Tell your service desk and update end-user documentation before the pilot, not after. Also resist using the AllowTemporaryEnterpriseFeatureControl policy to force dormant features on across production: it bypasses exactly the controlled validation that the enablement model gives you.
WMIC is gone
The WMI command-line tool (WMIC) is removed and is no longer available as a Feature on Demand on 24H2 and later. Search your Intune remediations, platform scripts, Win32 app install commands and detection scripts for wmic and replace it with Get-CimInstance. A detection script that silently fails will make a Win32 app show as “not installed” and trigger reinstall loops.
# Old
wmic bios get serialnumber
# New
(Get-CimInstance -ClassName Win32_BIOS).SerialNumber
Cross-signed drivers lose default trust
Windows changes how the kernel trusts third-party drivers. Default trust for the old cross-signed driver program is removed. Drivers from the Windows Hardware Compatibility Program and an allow list of trusted legacy drivers are still allowed. Windows audits driver compatibility for at least 100 hours and three restarts before enforcement kicks in, which is exactly the kind of delayed impact that slips past a two-day pilot. Include devices with old scanners, label printers, VPN clients, dongles and specialist lab or production hardware in your pilot, and keep them there long enough.
Hotpatch is on by default for eligible devices
My tenant shows an Hotpatch Enablement banner on the Windows updates page: eligible devices receive hotpatch updates automatically, unless you configured hotpatch yourself in a quality update policy or opt out. That fits well with 26H2, since a feature update restart moves the device to a new baseline and hotpatch keeps restarts down afterwards. Just make sure your change process knows that “patched” no longer always means “restarted”.
New security capabilities are off until you turn them on
Several of the most interesting 26H2 features for Intune admins are available but not enabled. They are worth a proof of concept once the rollout is stable:
Administrator protection: just-in-time elevation with profile separation instead of standing admin rights. Enable with Intune or Group Policy, and test together with Endpoint Privilege Management if you use it.
Built-in Sysmon: System Monitor is now part of Windows, logs to the Windows Event Log and supports your own configuration files. No more packaging Sysmon as a Win32 app.
Smart App Control can be turned on or off without a clean install.
Passkey plugin credential managers and Windows Hello Enhanced Sign-in Security with supported external fingerprint readers.
Post-quantum cryptography APIs (ML-KEM and ML-DSA) in CNG and .NET.
A more secure batch file processing mode that prevents batch files from changing during execution, useful for Application Control for Business policy authors.
Recovery features to configure deliberately
Point-in-time restore can roll a PC back to a recent restore point, including apps, settings and personal files. Quick machine recovery can run a one-time remediation scan, but stays off on domain-joined or enterprise-managed devices unless you enable it. Both are useful for the service desk, and both should be decisions in your baseline rather than something you discover during an incident. The new policy-based removal of preinstalled Microsoft apps also accepts additional MSIX or APPX package family names, which may let you retire a removal script or two.
What users will notice
The redesigned Start menu with a scrollable All section, category and grid views, a taskbar that can move to the top, left or right and a smaller taskbar option, File Explorer and Windows Search improvements, Multi-App Camera, and fewer restarts because Windows Update bundles eligible updates with the monthly security update. None of these need a policy on day one, but a short “what’s new” note to users saves tickets.
Reporting on Windows 11 26H2 in Intune
A rollout you cannot measure is a rollout you cannot finish. Intune has good built-in reporting for feature updates, but it depends on prerequisites that many tenants, including my own, do not have turned on.
Prerequisite: turn on Windows data
Go to Tenant administration > Connectors and tokens > Windows data and enable Enable features that require Windows diagnostic data in processor configuration. For the readiness and compatibility reports, also enable Windows license verification, which confirms you own eligible Windows Enterprise licensing. Devices must send at least Required diagnostic data, and the feature update wizard itself reminds you to enable Windows health monitoring with the Windows Update scope to get detailed device states and errors.
Connectors and tokens > Windows data. Both toggles are off in my tenant, which is why the reports below have nothing to show.
This is a tenant-wide decision with a privacy dimension, so involve whoever owns data processing in your organization. But if it stays off, you are deploying 26H2 blind. This is what the Windows Autopatch feature update report looks like without it:
Reports > Windows Autopatch > Windows feature updates: “Reports are not available” when the tenant prerequisites are missing.
Service-side data from Windows Update usually arrives within an hour. Client-side data is processed in batches and refreshes about every eight hours, and only after you configure data collection. Turn it on at least a few days before the pilot so you have a baseline.
Before the rollout: readiness and compatibility risks
Go to Reports > Windows updates > Reports. Six reports live here:
Reports > Windows updates > Reports: feature update, distribution, expedited, readiness, compatibility risks and driver reports.
Windows Feature Update Device Readiness Report: pick Windows 11 26H2 as target OS and get per-device readiness with system requirement, app, driver and other issues. Run it before you assign the broad policy.
Windows Feature Update Compatibility Risks Report: the same data turned around, grouped by app and driver, so you can see which single driver blocks 40 devices.
Windows Update Distribution Report: how many devices are on each quality update level. Useful because a device far behind on cumulative updates is also a device that tends to struggle with feature updates.
For 24H2 and 25H2 devices the readiness report should be mostly green, as they already run the shared code base. The real value is on 23H2 and Windows 10 devices, which take a full upgrade, and in finding devices that fail Windows 11 hardware requirements.
During the rollout: feature update report and failures
The Windows Feature Update Report (Reports > Windows updates > Reports) shows status per policy. Select your 26H2 policy, generate the report and filter by update status. Each device moves through states such as Offer received, Download start, Install complete, Restart required and finally Update installed. For an enablement package the whole journey is short, so devices stuck in Restart required for days tell you that users are not restarting, not that the update is broken.
The Feature update failures report (Devices > Monitor) is where you troubleshoot. These alerts are the ones I see most in real 26H2-style rollouts:
Alert
What it means
What to do
PolicyConflictDeferral
An update ring defers feature updates
Set feature deferral to 0 days on the ring
PolicyConflictPause
Updates are paused on the device
Resume the ring or remove the pause GPO
DeploymentConflict
Device is in more than one feature update policy
Fix group membership and exclusions
SafeguardHold
Microsoft is holding the update for a known issue
Look up the hold ID on Windows release health
IncompatibleServicingChannel
Device is on an Insider or preview channel
Move it to the retail (GA) channel
DeviceRegistrationInvalidGlobalDeviceId
Device cannot register with Windows Update
Make sure the Microsoft Account Sign-In Assistant service is not disabled
EndOfServiceApproaching
The current version is close to end of servicing
Prioritize these devices, typically 24H2 Pro and 23H2
The MSA service one deserves a special mention: many hardening baselines disable the Microsoft Account Sign-In Assistant to block consumer accounts, and that silently breaks Windows Update deployment service registration. Block consumer accounts with the account policy instead and leave the service running.
Proving the result: version counts over time
Management rarely asks “what is the update substate of device 4711”. They ask “how many are done”. Three ways to answer that:
Windows devices export or the Graph PowerShell snippet from step 1, run weekly and saved. Simple and works without any prerequisites.
Windows Autopatch reports if you deploy with Autopatch: feature update status per Autopatch group and ring.
Windows Update for Business reports in Log Analytics for trend lines and custom dashboards.
With Windows Update for Business reports enabled, a simple KQL query gives you the current version distribution across the fleet:
UCClient
| where TimeGenerated > ago(2d)
| summarize arg_max(TimeGenerated, *) by AzureADDeviceId
| summarize Devices = count() by OSVersion
| order by Devices desc
Pin it to an Azure workbook, add a line per week and you have the burn-down chart for the 26H2 project. Define your exit criteria up front, for example 95 percent of active devices on 26H2 within 30 days of broad deployment, with the remaining devices individually explained (offline, safeguard hold, 26H1 hardware, pending replacement).
A realistic Windows 11 26H2 rollout plan
For a typical Intune and Autopilot tenant, this is the plan I would run:
Week 0 (now): turn on Windows data and license verification. Inventory versions and editions. Fix ring deferrals, pauses and old feature update policies. Search scripts for WMIC.
Week 0 to 1: run the device readiness and compatibility risks reports for 26H2. Deploy 26H2 as soon as possible to IT devices.
Week 1: pilot group across all hardware models, including devices with legacy drivers. Prioritize 24H2 Pro devices because of the October 13 deadline.
Week 2 to 4: broad deployment with gradual rollout. Add the Autopilot device group so new hardware follows automatically. Start the full upgrade for 23H2 Enterprise devices, which end on November 11.
Week 4 onwards: work the failure report, chase the long tail, and start proof of concepts for Administrator protection, built-in Sysmon and point-in-time restore.
Windows 11 26H2 checklist for Intune and Autopilot
Inventory builds and editions; identify 24H2 Pro (Oct 13, 2026) and 23H2 Enterprise (Nov 11, 2026).
Set feature update deferral to 0 days on rings that share devices with feature update policies.
Replace or retarget existing 24H2 and 25H2 feature update policies.
Create a 26H2 feature update policy: IT, pilot, broad, with mutually exclusive groups.
Include your Autopilot or device preparation device group in the broad assignment.
Handle 26H1 (build 28000) devices in compliance ranges, dynamic groups and filters.
Decide explicitly on Windows settings backup and restore.
Remove WMIC from scripts and detection rules.
Keep legacy-driver devices in the pilot for more than 100 hours and three restarts.
Enable Windows data and Windows license verification for reporting.
Run readiness and compatibility risk reports before broad deployment.
Track Feature update failures and version counts weekly until exit criteria are met.
Frequently asked questions
Is Windows 11 26H2 a full upgrade?
Not for devices on Windows 11 24H2 or 25H2. They receive an enablement package (KB5121794) that activates 26H2 with a single restart. Devices on 23H2 or Windows 10 need a full feature update.
Does Windows Autopilot install Windows 11 26H2 during setup?
No. Autopilot provisions the OS version that is on the device. The Enrollment Status Page can install quality updates during OOBE, but the move to 26H2 happens after provisioning through your feature update policy or Autopatch release.
Can Windows 11 26H1 devices upgrade to 26H2?
No. 26H1 runs on a different Windows core and is not on the 24H2, 25H2 and 26H2 servicing branch. Microsoft will offer those devices their own future upgrade path.
Why are my Intune Windows update reports empty?
Most often because the Windows data connector is off. Enable features that require Windows diagnostic data in processor configuration and, for readiness reports, Windows license verification under Tenant administration > Connectors and tokens > Windows data. Then allow time for data to arrive.
How long is Windows 11 26H2 supported?
As an annual H2 release, 26H2 gets 36 months of servicing for Enterprise and Education and 24 months for Home and Pro, counted from GA.
Wrapping up
Windows 11 26H2 is the kind of release that rewards preparation over heroics. The update itself is a restart. The work is in the plumbing around it: rings that do not fight your feature update policy, Autopilot devices that are targeted from their first check-in, compliance rules that understand 26H1, scripts that do not depend on WMIC, and reporting that is switched on before you need it. Get those right this week and the October 13 deadline for 24H2 Pro becomes a non-event.
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:
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).
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.
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 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:
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.
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.
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.
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 – 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.
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 – 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):
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:
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.
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.
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 – 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.
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:
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.
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:
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.
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.
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
Now: run the analyzer script and the registration report. Build the affected-users group. Check break-glass accounts.
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.
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.
November-December: flip the campaign to limited snoozes for the stragglers. Chase the phone-only list down toward zero. Fix SSPR methods.
January 2027: buffer month. Nothing new – just verification, reporting, and the final targeted reminders before the February 1 enforcement.
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.
Microsoft has announced that enhanced host pool management for Azure Virtual Desktop is now generally available. In short: you can now create a host pool with a session host configuration, and the platform takes over the work of creating and updating session hosts for you. I set it up in my own tenant, and in this post I will walk through the setup step by step, including two gotchas the wizard will not warn you about.
What actually changes
With a standard host pool, you deploy session hosts yourself and keep them updated yourself. A host pool with a session host configuration flips that model:
Session host configuration: one definition of what every session host should look like: image, VM size, OS disk, network, domain join and the local admin credentials.
Session host management policy: how changes roll out: batch size, logoff behavior and the time zone used for scheduling.
Session host update: when you change the image or configuration, Azure Virtual Desktop replaces the session hosts for you, batch by batch.
Autoscale can create and delete session hosts based on demand, not just start and stop them.
There is also no registration token to manage anymore: the service handles agent registration itself.
Before you start
Only pooled host pools support session host configuration.
You choose the management approach when the host pool is created. An existing host pool cannot be converted, and you cannot switch back.
The local administrator credentials for the session hosts must come from Azure Key Vault: the wizard only offers Key Vault references, not inline username and password fields.
Step 1: Prepare the Key Vault
Create a Key Vault with two secrets, one for the VM admin username and one for the password. Do this before you open the host pool wizard: the wizard caches the vault list when it loads.
If your vault uses the access policy permission model, you must also grant the Azure Virtual Desktop service access to read secrets:
az keyvault set-policy -n kv-tm-avd-prod-001 \
--object-id <AVD-provider-object-id> \
--secret-permissions get list
Step 2: Basics
In the Azure portal, go to Azure Virtual Desktop, select Host pools and select Create.
Pick Pooled, and set Create Session Host Configuration to Yes. This is the decision that enables the whole feature set. Set your load balancing algorithm and max session limit as usual.
Step 3: Session hosts
You can set the number of session hosts to 0 and still define the full configuration. That is exactly what makes this approach nice to prepare in advance, since autoscale or a later update can create the hosts. I used the Windows 11 Enterprise multi-session 25H2 image with Microsoft 365 Apps, Trusted launch, a name prefix, my virtual network and Microsoft Entra ID join.
At the bottom of the tab, the virtual machine administrator account is referenced from Key Vault: two dropdowns for the vault and secret holding the username, and two for the password.
Step 4: Management
The wizard assigns a system-assigned managed identity to the host pool and shows exactly which roles it will get, including Desktop Virtualization Virtual Machine Contributor on the session host resource group and Key Vault Secrets User on the credential vault. You need Owner or User Access Administrator rights for these role assignments to succeed.
Step 5: Review and create
Validation checks the configuration, and the deployment creates the host pool, the application group and the session host configuration.
On the host pool overview you can now see Uses Session Host Configuration: Yes, and the toolbar has new Start, Restart and Stop commands that operate on the whole pool.
Two gotchas from my deployment
Key Vault access: portal validation passed, but the deployment failed with UnableToAccessKeyVaultSecret. The role assignments the wizard creates are Azure RBAC, so if your vault runs the access policy permission model, the Azure Virtual Desktop provider has no access. Grant it an access policy as shown in step 1 and redeploy.
VM size restrictions: my subscription had no access to Standard_D2as_v5 in West Europe, which also only surfaced at deployment time. Check availability first with: az vm list-skus -l westeurope –query "[?name=='Standard_D2as_v6'].restrictions"
Third-party app patching has been the quiet tax on every Intune estate I run. Chrome, 7-Zip, Notepad++, Zoom, the JDKs – none of them are hard to package, but multiplied across a catalog of apps and a monthly cadence, the packaging-and-supersedence treadmill eats real hours. Enterprise App Management (EAM) took the first bite out of that when it shipped the Microsoft-hosted Enterprise App Catalog. The auto-update option – now Generally Available – takes the rest.
I read the short write-up on Xplore the Cloud and it is a good primer on the toggle. This post goes a layer deeper: the licensing reality, how auto-update differs from guided supersedence, the caveats Microsoft tucks into the docs that will bite you in production, how to monitor it, and a rollout playbook I would actually follow with a customer.
On the visuals in this post. Rather than embed portal screenshots, I have linked each step to the exact Microsoft Learn page that shows the official UI – so the images you see are always current with the portal instead of going stale in a blog. If you are reproducing this internally, capture from your own tenant so the branding matches.
What EAM and the Enterprise App Catalog Actually Are
Enterprise App Management is an Intune capability that gives you a Microsoft-curated catalog of prepackaged Win32 apps (EXE and MSI) hosted by Microsoft. When you add one, Intune pre-fills everything you would normally reverse-engineer yourself:
Restart behaviour, return codes, install context (system vs user)
The catalog is large – well over a thousand titles today, from Adobe Acrobat and Google Chrome for Business to the whole Eclipse Temurin / Zulu JDK matrix, 7-Zip, Notepad++, Firefox, PowerToys and Wireshark. Content is served from *.manage.microsoft.com and installed by the Intune Management Extension (IME) – not winget, which is a common misconception.
EAM is not part of base Intune. It requires a subscription in addition to Intune Plan 1/Plan 2, and you get it one of three ways:
As part of the Microsoft Intune Suite
As the standalone Enterprise App Management add-on SKU
Bundled into Microsoft 365 E5 – the change that makes this genuinely worth revisiting, because a lot of my customers already own E5 and were never using the feature
A quick way to confirm the entitlement is actually provisioned: go to Apps > Windows > Create and open the App type dropdown. If Enterprise App Catalog app is not in the list, the tenant does not have EAM enabled yet – licensing alone is not enough, the entitlement has to be present. (I checked a Plan-2-only tenant while writing this and the option simply is not there, which is the fastest tell.) See Microsoft Intune plans and pricing for the SKU details.
Two Update Models: Guided Supersedence vs Auto-Update
Before GA, keeping a catalog app current meant guided update supersedence: Intune surfaced available updates under Apps > Enterprise App Catalog apps with updates, you created a new app version, and you wired up a supersedence relationship to replace the old one. Controlled, reviewable – and manual. It is still fully supported and documented under Guided update supersedence for Enterprise App Management.
Auto-update collapses that loop. Enable it on a catalog app with a Required assignment and Intune detects new catalog versions and pushes them to targeted devices automatically. No new app, no supersedence relationship, no monthly click-through.
Here is the honest comparison:
Guided update supersedence
Automatically update
Trigger
You create the new version + supersedence
Intune detects the catalog version
Review before deploy
Yes
No
Phased rollout / rings
Yes (via assignments)
No – all targeted devices at once
Assignment types
Required and Available
Required only
Rollback / uninstall remediation
You control it
None built in
Change-control friendly
Yes
Not really
Effort per update
Manual, recurring
Zero after setup
Neither is strictly better. Auto-update is fantastic for the low-risk long tail (utilities, runtimes, browsers on a fast ring). Guided supersedence still earns its keep where you need a maintenance window, a pilot ring, or a change record.
Enabling Auto-Update
The switch lives in the app-creation wizard, not in a global setting. When you add an Enterprise App Catalog app, the update method is presented as part of the flow:
Apps > Windows > Add > Enterprise App Catalog and pick your app.
Work through the app information and configuration (accept the pre-filled install/detection logic unless you have a reason not to).
On the assignment step, set a Required assignment – auto-update does nothing for Available assignments.
Choose the update method: the default is Update with Supersedence; select Automatically update instead.
The exact screen: the update-method choice appears on the assignments step. Microsoft documents it under Add a Windows catalog app – Step 6: Assignments, which shows the “Automatically update” option in context.
You can spot auto-update apps afterwards by adding the catalog/auto-update column or filter in the Windows apps list. Note that the list does not pin a static version number for these apps – the version is whatever the catalog currently serves, which is the whole point.
The Caveats That Will Bite You
This is where the vendor blogs stop and production begins. Microsoft documents these limitations, but they are easy to miss (see the Limitations and known issues section of the Enterprise Application Management docs):
You cannot flip the update method on an existing app. Supersedence -> auto-update (or back) is not editable. To move an already-deployed app onto auto-update you create a new catalog app with auto-update, then use supersedence to uninstall the old one. Plan the migration; there is no in-place switch.
No rollback or automatic uninstall remediation. If a bad version ships, auto-update will not pull it back. Remediation is manual – an Uninstall intent or a remediation script.
Malicious-version revocation is on you to remediate. If Microsoft pulls a compromised version from the catalog, it posts a notice in the admin center, but you have to find and fix affected devices.
Catalog cache lag of up to one hour. The catalog is cached, so a revoked or new version can take up to 60 minutes to reflect – a real exposure window during a security event.
No rollout rings or phased deployment. New version out = every targeted device, simultaneously. There is no built-in ring. If you want staging, you build it yourself with separate assignment groups, or you stay on guided supersedence.
Reporting shows latest state only. Intune keeps the current reported state per device, not a full version history. Mid-rollout, different devices legitimately show different states.
Not supported as a blocking app in the Enrollment Status Page or Autopilot Device Preparation. Use a fixed-version catalog app for ESP gating.
No running-app detection. Intune cannot tell whether the app is open when it updates. For an editor or browser mid-session, that can mean a forced close. This is the caveat I would flag hardest to end users.
Do not double-manage a title. If a separate LOB/Win32 assignment targets the same app, you get a version race condition. One app, one deployment type.
Monitoring Auto-Update
You lose the pre-deploy review gate, so lean harder on reporting:
Enterprise App Catalog apps with updates (Apps blade) – shows which catalog apps have newer versions available. For auto-update apps this is informational, but it is your catalog-freshness pulse.
Managed Apps report (per device) – lists installed/not-installed/available apps for a device with application, version, resolved intent, and install status. This is your ground truth for “what version is actually on this machine right now.” See Intune reports overview – Managed Apps report.
Per-app device install status – the standard app monitoring blade still applies; expect churn while a version rolls out because reporting reflects only the latest state.
Automating with Graph
Everything above is Graph-addressable through the deviceAppManagement/mobileApps surface (win32CatalogApp / mobile app supersedence resources). If you manage app deployments as code, you can query which catalog apps are on auto-update and audit assignments in bulk rather than clicking through the portal – handy across a multi-tenant MSP estate.
Treat the exact resource types as version-dependent – check the current Intune Graph reference before you build automation on them, because the catalog-app schema is still evolving.
A Rollout Playbook
This is roughly how I would introduce auto-update to a customer rather than flipping everything at once:
Confirm licensing and entitlement. Intune Suite, the EAM add-on, or M365 E5 – and verify the Enterprise App Catalog app type actually appears in the Create wizard. If it is E5, you already paid for it.
Pick the safe long tail first. Utilities and runtimes where a forced update mid-use is a non-event: 7-Zip, Notepad++, PowerToys, the JDKs, CLI tools. Leave user-facing editors and browsers for later.
Deploy as a new Required app with Automatically update to a pilot group. Remember you cannot convert existing supersedence apps in place – build new and supersede the old.
Watch the Managed Apps report for a cycle to confirm devices land on the expected version.
Communicate the no-running-app-detection reality. Tell users that catalog apps may update and close silently, so they should save work. This single message prevents most of the support tickets.
Keep guided supersedence for anything that genuinely needs a maintenance window, a phased ring, or a change record. Auto-update is a tool, not a religion.
Do not double-manage. Retire any legacy LOB/Win32 package for a title before you put it on auto-update.
FAQ
Is EAM auto-update free?
No. It needs the Enterprise App Management entitlement – via the Microsoft Intune Suite, the standalone EAM add-on, or a Microsoft 365 E5 subscription that includes it. Base Intune Plan 1/Plan 2 alone does not surface the catalog.
Can I switch an existing catalog app from supersedence to auto-update?
No. The update method is fixed at app creation. Create a new catalog app with Automatically update, then use supersedence to uninstall the old one.
Does auto-update support update rings or phased rollout?
No. When a new version is published, it goes to all targeted devices at once. If you need staging, use separate assignment groups or stay on guided supersedence.
Does it work for apps assigned as “Available”?
No. Auto-update applies only to Required assignments. Available apps continue to use the existing update workflow.
Will Intune wait if the app is running?
No. There is currently no running-application detection, so an update can close an app that is in use. Warn your users.
Can I roll back a bad version automatically?
No. There is no built-in rollback. Remediate manually with an Uninstall intent or a remediation script.
The Bottom Line
Auto-update turns EAM from a faster packaging tool into something closer to a managed patch service for a large slice of your third-party Windows estate. For the low-risk long tail it is close to set-and-forget, and if you are on Microsoft 365 E5 it costs you nothing extra to start. Just go in eyes-open: there is no rollback, no native ring model, and no running-app detection, so match the update model to the risk of each app rather than reaching for the switch on everything. Start with the boring utilities, watch the reporting, and expand from there.
“I want to RDP into a Windows Server 2022 and log in with my FIDO2 security key instead of typing a password.” It sounds like a single feature you turn on. It is not. Whether it works at all depends on one thing most people skip past: what your server and your client are joined to.
Before you touch a single setting, you also need to be clear about which of two completely different things you actually want, because they share the word “FIDO2” and almost nothing else:
Authenticate the RDP logon itself with a FIDO2 key – passwordless sign-in to the remote server.
Redirect a FIDO2 key into the session so a web app or app inside the RDP session can use WebAuthn, while the key stays plugged into your local machine.
These have different requirements and different failure modes. Let me take them in order, and for the first one walk through all three join states.
First, the one that trips everyone up: a FIDO2 key is an Entra credential
This is the single fact that makes the rest of the post make sense. A FIDO2 security key is registered in Microsoft Entra ID. It is not, by itself, an on-premises Active Directory credential.
So when you log on to a remote server with a FIDO2 key, two things have to happen:
Entra ID authenticates the key.
Something has to turn that into a Kerberos ticket the on-prem world (and the server) understands.
That second step is where the join state decides your fate.
Scenario 1: FIDO2 sign-in to the RDP session
Entra-joined
The cleanest case. If both your client and the target are Microsoft Entra joined, FIDO2 sign-in over RDP works with the modern RDP stack (the web-account-selector flow) on current Windows 10, Windows 11 and Windows Server 2022 builds.
The catch with servers: pure Entra join is not supported on Windows Server. Server SKUs do not Entra-join the way a client does. So in practice “Entra-joined target” applies to Windows 10/11 remote hosts, and your Windows Server 2022 box lands in the hybrid scenario below even when the rest of your estate is cloud-first.
What you need:
Client (and where applicable the host) Microsoft Entra joined.
FIDO2 enabled as an authentication method in Entra ID > Authentication methods (see Microsoftโs FIDO2 enablement guide), with the user in scope and a key registered.
Current Windows builds on both ends and an up-to-date RDP client.
For an Entra-joined client signing into an Entra-joined Windows 10/11 host, there is no Kerberos-trust plumbing to configure – it largely just works once the method is enabled.
Hybrid-joined (this is where Server 2022 actually lives)
Because Windows Server 2022 cannot be pure-Entra-joined, hybrid is the realistic target join state for a server. Both the client and the server are Microsoft Entra hybrid joined – joined to on-prem AD and registered to Entra ID.
Here you must build the bridge that turns the Entra FIDO2 authentication into an on-prem Kerberos ticket. That bridge is Microsoft Entra Kerberos, deployed as cloud Kerberos trust:
Run the Entra Kerberos setup to create the Microsoft Entra Kerberos Server object in your on-prem AD. It shows up as a special computer object (effectively a read-only-DC-style KDC object) that lets Entra ID issue partial TGTs for your AD domain.
Configure Windows Hello for Business cloud Kerberos trust via Intune or Group Policy so the FIDO2/WHfB credential is allowed to request those tickets.
Enable the security key sign-in credential provider on the machines. On Entra-joined clients this is on by default; on hybrid-joined devices you turn it on explicitly – via Intune (Authentication method / “Enable security key sign-in”) or the equivalent ADMX policy Turn on security key sign-in under Computer Configuration > Administrative Templates > System > Logon.
With cloud Kerberos trust in place, the flow is: key authenticates to Entra, Entra issues a partial TGT, the on-prem DC completes it, and the server gets a Kerberos logon it trusts. Service tickets and authorization stay on your on-prem domain controllers – you are not moving authorization to the cloud, only the initial credential.
If FIDO2 RDP “authenticates but won’t log on to the server,” cloud Kerberos trust is almost always the missing piece.
On-prem only (no Entra at all)
Here is the honest answer: the native FIDO2 credential provider does not work for on-premises-only devices. Microsoft is explicit about this. No Entra, no FIDO2 sign-in – because there is nothing to issue the Entra side of the credential.
That does not leave you stuck, but it does mean changing the question. Your realistic options are:
Use the key as a smart card. Many FIDO2 keys also carry a PIV/smart-card applet. Stand up AD CS (your on-prem PKI), issue smart-card logon certificates onto the key, and you get certificate-based passwordless RDP using the long-standing smart-card logon path. RDP already knows how to redirect a smart card reader into the session. This is “passwordless RDP with a security key” in the literal sense, but the mechanism is smart-card logon, not FIDO2/WebAuthn.
Go hybrid. If passwordless-with-FIDO2 specifically is the goal, the supported route is to hybrid-join the estate and deploy cloud Kerberos trust as above. For most shops this is the better long-term answer than building out smart-card PKI just for RDP.
A third-party MFA-for-RDP product if you want a step-up factor on top of passwords without the PKI or Entra work.
So: pure on-prem FIDO2 sign-in is not a checkbox – it is either smart-card-via-PKI or a move to hybrid.
Key-as-smart-card via AD CS PKI, or move to hybrid
Scenario 2: WebAuthn redirection into the session
Different problem, much smaller. You do not want to log into the server with the key – you want a website or app running inside the RDP session to use the FIDO2 key that is physically plugged into your local PC.
That is WebAuthn redirection, and the good news is:
It is supported on Windows Server 2022 (and Windows 10 1809+ / Windows 11).
It is on by default. There is no positive switch to flip – you only need to make sure nobody disabled it.
The control that matters lives on the server (the RDP host) as Group Policy:
Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Device and Resource Redirection > Do not allow WebAuthn redirection
Set it to Disabled or Not Configured to allow redirection. If it is Enabled, redirection is blocked and any in-session FIDO2 prompt fails instantly.
This is the one I see bite people most often, and the cause is almost always the same: a hardened golden image. CIS benchmarks and a lot of corporate baselines set “Do not allow WebAuthn redirection” to Enabled. If your security key worked fine on the local desktop but dies the moment you are inside RDP, check this policy before anything else. The ADMX comes from the Windows 11 22H2 administrative templates or newer, so make sure your Central Store is current too.
On a current Remote Desktop client you opt in on the Local Resources tab by ticking WebAuthn (Windows Hello or security keys). For the full walkthrough of using your key inside the session – including Windows 11 client cross-device passkey support – see the companion post: Using Your FIDO2 Key From Inside the RDP Session.
Picking the right path
“I want to log into the server with my key.” โ Scenario 1. Find your join state in the table. For a real Windows Server 2022, that almost always means hybrid + cloud Kerberos trust.
“I want to use my key for a website/app running on the server.” โ Scenario 2. Confirm “Do not allow WebAuthn redirection” is not Enabled, and you are done.
“We are on-prem only and want passwordless RDP.” โ It is not native FIDO2. Either key-as-smart-card via AD CS, or move to hybrid.
Wrap-up
The reason “enable FIDO2 over RDP” has no single answer is that the key is an Entra credential and your server probably is not pure-cloud. Sort out the join state first, then the rest follows: Entra-joined is nearly free, hybrid needs cloud Kerberos trust, and on-prem-only means smart-card PKI or a hybrid move. And if it is really just an in-session web app you are after, the whole thing collapses to one Group Policy that your hardening baseline may have already turned off.
Microsoft has confirmed the next annual feature update, Windows 11, version 26H2, and the headline for IT is a familiar one: this is an enablement package (eKB), not a full OS swap. If you have been through the 24H2 to 25H2 cycle, the playbook is almost identical – but there are a couple of new wrinkles worth planning around. This post walks through the supported upgrade paths, how you drive it with Windows Autopatch and Intune, and how to actually track the rollout from pilot to production.
What 26H2 actually is
26H2 shares the same servicing branch as 24H2 and 25H2. That means for devices already on those versions, the upgrade is delivered as a tiny enablement package – around 174 KB – that simply flips the version and build number (build 26300) after a single restart. No multi-gigabyte download, no long offline phase, no feature-update reboot marathon. The new capabilities ship continuously through monthly cumulative updates and are switched on by the eKB.
Microsoft frames it as “a predictable, low-disruption update experience for organizations and IT professionals,” and from a deployment standpoint that is exactly what it is – an update ring approval rather than a migration project. Expect general availability in the fall of 2026, in line with previous H2 releases.
Upgrade paths – know your starting point
The delivery method depends entirely on the version a device is sitting on today:
Windows 11 24H2 / 25H2 – direct eKB upgrade. ~174 KB, one restart. This is the easy 95% for most managed fleets.
Windows 11 23H2 and older – different servicing branch, so no eKB. These need the full feature-update media path (~6.5 GB download and the full upgrade experience).
The 26H1 caveat – 26H1 sits on a separate Windows core branch and does not roll forward to 26H2 via the standard enablement path. If you have any 26H1 (specialized/insider) devices, plan a different route for them.
Windows 10 – no shortcut here. These are full upgrades (or, frankly, replacements) and should already be on your end-of-support migration plan.
Upgrade paths to 26H2 depend on the version a device sits on today.
Action before fall: run an inventory split by OS version now. Anything not already on 24H2/25H2 is your long-tail – get those onto a current branch first so 26H2 becomes a one-restart eKB rather than a 6.5 GB project.
Driving it with Windows Autopatch
If you are on Autopatch, 26H2 is close to trivial to approve – it appears in the feature update flow like any other release, and because the payload is tiny, distribution can complete in a day rather than weeks.
The mechanics you already rely on still apply. Autopatch groups split your estate into deployment rings – Test, First, Fast, and Last. If you do not define extra rings, Test acts as your pilot and Last as production. Releases flow sequentially through the rings, and Autopatch monitors device telemetry the whole way – if failure or compatibility signals spike, it can automatically pause progression to the next ring.
Pilot: keep Test/First small but representative – mix hardware models, key line-of-business apps, and a few power users who will actually report friction.
Soak time: because the eKB is so small, the temptation is to rush. Resist it – the value of a pilot is the soak window, not the download time. Give each ring a real bake period to surface app and driver issues.
Safety net: you retain Pause, Resume, and Rollback for feature updates directly from Intune if a ring goes sideways.
Not on Autopatch? The same model is available with Intune Feature Update profiles plus Update Rings – you target 26H2 as the feature update version and stagger deferrals/rings manually. You lose the automatic ring progression and telemetry-driven pause, but the staged approach is the same.
Autopatch rings, the telemetry safety net, and what to watch as you promote from pilot to production.
Tracking pilot to production
This is where most rollouts get loose. “We deployed it” is not the same as “we can prove the estate moved.” Here is the reporting stack I lean on:
Reports > Windows Autopatch – the two Autopatch reports give you ring-level rollout status and quality/feature update health. This is your primary “where is each ring” view.
Reports > Device management > Windows Updates – the feature update report and readiness reporting validate which devices are eligible and which are blocked, before and during the push.
Email notifications – make sure your Autopatch admin contacts are current so you actually receive the proactive alerts rather than discovering issues in a dashboard.
A simple version-count KQL/report – track devices reporting build 26300 over time as your single “percentage on 26H2” number for management. Watch the curve per ring, not just the total.
Define your exit criteria before you start: e.g. pilot ring at >95% success with zero unresolved Sev-1 app issues for X days before releasing the next ring. Let the telemetry and your soak window – not the trivial download size – gate each promotion.
Support lifecycle
The usual split applies: Enterprise, Education, IoT Enterprise and Enterprise multi-session get 36 months of support, while Home, Pro, Pro Education and Pro for Workstations get 24 months (support running to roughly October 2028). Factor that into whether 26H2 is a “move now” or a “this fall” decision for each ring.
A short pre-flight checklist
Inventory by OS version – identify anything not on 24H2/25H2.
Get the long-tail (23H2 and older, Windows 10) onto a current branch first.
Flag any 26H1 devices for a separate path.
Confirm Autopatch groups / Intune feature update profiles and rings are sane.
Verify Autopatch admin contacts and reporting access.
Write down your per-ring exit criteria and soak windows.
Bottom line: 26H2 is an approval, not a migration – for the devices that are on a current branch. Spend your effort on the long-tail and on a disciplined pilot-to-production cadence, and the eKB itself will be the least interesting part of the project.
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 '<your object id>'
&$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:
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:
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.
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.
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.
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.
You manage a fleet of corporate iPhones through Microsoft Intune. Enrollment is automated through Apple Business Manager (ABM), apps deploy silently through the Volume Purchase Program (VPP), and users never see an App Store login. Then one day, your service desk starts getting tickets:
“Sign in to iTunes Store. Sign in to allow Contoso A/S to manage and install apps.”
A handful of devices show the prompt at first. A few days later, dozens. Users tap Cancel, the dialog disappears, and a few hours later it reappears. Some users sign in with personal Apple IDs to make it go away, which is exactly what you do not want on a corporate device.
This is one of those issues that looks like an Apple ID, ABM, or enrollment problem – but almost never is. In every case I have worked, the root cause was the same: somewhere in the tenant, an app was added as an iOS Store App when it should have been added as an iOS Volume Purchase Program app. This post walks through why those two app types behave so differently, how to confirm which one is causing the prompt, and how to fix the issue across a large device estate without disrupting users.
Why iOS Devices Ask for an Apple ID in the First Place
Intune offers several iOS app types in the admin center. Two of them install the same app from the same App Store listing, but they have completely different licensing and installation behavior:
iOS Store App – A direct link to a public App Store listing. The app installs into the user’s iCloud account. The device must be signed in to the App Store with a personal or managed Apple ID for the install to complete. There is no concept of device-based licensing.
iOS Volume Purchase Program app (VPP) – An app license that your organization owns through Apple Business Manager. With Device licensing, the license is assigned to the device itself – no Apple ID is required on the device for the install. The app simply appears.
The two app types look almost identical in the admin center. Both can point to the same App Store URL. Both can be assigned as Required, Available, or Uninstall. The difference is invisible until a device tries to install the app and discovers it has no Apple ID signed in.
When an iOS Store App is assigned as Required to a supervised device with no Apple ID, iOS does what it is told – it prompts the user to sign in so the install can proceed. That is the prompt your users are seeing.
Why You May Not Have Seen This Before
A fresh ABM enrollment with VPP apps assigned through Device licensing never triggers an Apple ID prompt because no app on the device needs one. The issue surfaces when somebody adds the same app a second time – as an iOS Store App – usually because they pasted the App Store URL into the wrong “Add app” wizard. The VPP version may still be present, but the iOS Store App duplicate is now competing for the same slot on the device, and only one of them can win.
How to Confirm This Is Your Issue
Before you start changing assignments, confirm the diagnosis. Three quick checks usually settle it.
Check 1: List All iOS Apps with Required Assignments
In the Intune admin center, go to Apps > iOS/iPadOS and filter the list. Look at every app where the App type column shows iOS store app. For each one, open the app and check Properties > Assignments.
Any iOS Store App with a Required assignment is a candidate for the prompt. iOS Store Apps assigned only as Available or Uninstall do not trigger the prompt – they sit quietly in the company portal or only act when the user actively removes the app.
Check 2: Cross-Reference with VPP
For each suspect iOS Store App, search for a VPP version of the same app. The naming will be similar but not identical – the VPP version typically shows the publisher and a different icon variant. If both versions exist, the iOS Store App is almost certainly redundant.
Check 3: Look at the Audit Log
Intune’s audit log will tell you exactly when each app was added and by which admin account. Go to Tenant administration > Audit logs and filter on the Mobile App category. Search for the app name and check the Create entries. In one recent case, an admin had bulk-added a dozen iOS Store App duplicates within a 20-minute window – clearly someone working through a list using the wrong wizard.
If checks 1 and 2 confirm the duplication and check 3 confirms when it happened, you have your root cause.
Why You Cannot Just Delete the iOS Store App
The natural reaction is to delete the iOS Store App duplicate and be done with it. Resist that urge until you have a rollout plan, because three things can go wrong:
Users still see the prompt until iOS finishes its install queue. iOS does not automatically discard a pending install when its source is removed. The user has to Cancel the prompt at least once – sometimes more than once – before the MDM channel processes the change.
Required and available install intent on a managed device is sticky. If the VPP version is not already assigned and licensed at the device level, removing the iOS Store App leaves users with no app at all.
Filters and groups can overlap in non-obvious ways. If the iOS Store App is assigned to a broad group and the VPP version is assigned to a different broad group, deleting one may pull the app from devices that should still have it.
The safe sequence is: assign the VPP version with Device licensing first, validate on a single device, then remove the iOS Store App.
The Pilot Approach: Validate on One Device Using Assignment Filters
Before you touch a production assignment, prove the fix on one device. Intune’s Assignment Filters make this clean.
Step 1: Create a Single-Device Filter
In the Intune admin center, go to Tenant administration > Filters > Create.
Platform: iOS/iPadOS
Name: Something obvious like Pilot-iPhone-XYZ123-only
Rule syntax:
(device.deviceName -eq "XYZ123")
Replace XYZ123 with the actual device name from Devices > iOS/iPadOS devices. Use Edit in advanced mode if you prefer to write the rule directly.
Step 2: Exclude the Pilot Device from the iOS Store App Assignment
Open the problematic iOS Store App in Intune. Go to Properties > Assignments > Edit. On the existing Required assignment, click Filter and set:
Filter mode: Exclude
Filter:Pilot-iPhone-XYZ123-only
This tells Intune to apply the iOS Store App’s Required assignment to everyone except the pilot device. The pilot device is now isolated from the prompt – existing prompts may still need to be dismissed once, but no new ones will queue.
Step 3: Assign the VPP Version with Device Licensing to the Pilot Device
Open the VPP version of the same app. If it does not yet have a Required assignment to the same target group, create one:
Assignment type: Required
Group: The same group the iOS Store App was assigned to
License type: Device
Filter:Pilot-iPhone-XYZ123-only
Filter mode: Include
This is the inverse of Step 2 – the VPP assignment now applies only to the pilot device. The rest of your estate still gets the (about to be removed) iOS Store App version; the pilot device gets the VPP version with a device-bound license.
Step 4: Have the Pilot User Dismiss the Prompt and Sync
Walk the pilot user through these exact steps:
When the iTunes sign-in prompt appears, tap Cancel.
Open Settings > General > VPN & Device Management > the MDM profile.
Tap Sync to force a check-in.
Within a minute or two, the VPP version of the app installs silently. No Apple ID prompt. The app shows the small organisation marker indicating it was installed by MDM.
If the install fails or the prompt comes back, stop and investigate before going further – usually the cause is a missing VPP license assignment or an expired VPP token (more on tokens below).
Rolling Out the Fix to the Rest of the Estate
Once the pilot is green, the rollout is mechanical. For each affected app:
On the VPP version, remove the Pilot-XYZ123-only filter so the Required + Device-licensing assignment applies to the full target group.
On the iOS Store App version, remove the existing Required assignment entirely. Do this before deleting the app to avoid an Intune sync that might re-prompt users.
Delete the iOS Store App entirely once no devices reference it. This also makes sure nobody re-uses it accidentally later.
If you have several apps to fix, work through them one at a time. iOS handles MDM commands serially, so a batch change can produce more prompts than you would expect.
What Users Should Expect
Communicate clearly to end users before you flip the assignment. A short email along these lines works well:
Over the next 24 hours, you may see a sign-in prompt on your work iPhone asking you to log in to iTunes or the App Store. Please tap Cancel. Do not enter any Apple ID. The app you are missing will install automatically within a few minutes after you cancel the prompt.
The behaviour is non-obvious: iOS only processes the next MDM command after the current prompt is dismissed. Until the user taps Cancel, the device is effectively stuck waiting for the user.
Cleanup: Filters, Duplicates, and Audit Trail
After the rollout is complete, do not leave the scaffolding in place:
Delete the pilot assignment filter (Pilot-iPhone-XYZ123-only) so it does not get reused accidentally.
Confirm both iOS Store App duplicates are deleted – keeping them around “just in case” invites the same mistake again next quarter.
Document what happened in your change log so future admins know the difference between iOS Store App and VPP and which to use.
Run a tenant-wide review of remaining iOS Store Apps. Any iOS Store App with only Uninstall or Available (without enrollment) assignments is safe. Any iOS Store App with a Required assignment to a device group should be evaluated.
A Quick Reference: iOS Store App vs VPP at a Glance
Aspect
iOS Store App
iOS VPP App (Device licensing)
Source
Public App Store URL
Apple Business Manager (purchased)
Requires Apple ID on device
Yes
No
Required-install on supervised devices
Triggers iTunes sign-in prompt
Installs silently
License consumed
None tracked by MDM
One per device
Revoke license
Not possible
Yes, from Intune
Update behavior
Same as App Store
Same as App Store
Cost
Free apps only (in practice)
Free and paid apps
Recommended for managed iOS
No
Yes
The short version: on a corporate-owned iOS device managed through Apple Business Manager, VPP with Device licensing is the only app type that should appear as Required for first-party and approved third-party apps.
How to Prevent This from Happening Again
The root cause is almost always procedural – an admin selected the wrong app type from the Intune wizard. A few controls reduce the chance of recurrence:
Document the standard. Add a one-line rule to your Intune operations doc: “All Required iOS apps must be added as iOS Volume Purchase Program apps. iOS Store Apps may only be used for Available or Uninstall assignments.”
Restrict app creation with RBAC. Use scope tags and Intune’s role-based access control to limit app creation to a small group of admins who know the difference. The principle of least privilege applies to MDM tenants too.
Use audit log alerts. Microsoft Graph + a small Logic App can email you whenever a new iOS Store App is created. Quick to set up, quick to react.
Check the VPP token expiry. A frequent secondary cause is an expired VPP token. When a token expires, Intune cannot create or renew Device licenses, and admins reach for “iOS Store App” as a workaround that turns into a permanent footgun. Renew the token annually and set a calendar reminder a month in advance.
Healthy VPP Token Practices
A VPP token has a 12-month validity. When it is close to expiry, Intune shows a banner in the Tenant administration > Connectors and tokens > Apple VPP Tokens view. After expiry:
Existing licensed apps continue to function.
New licenses cannot be assigned.
Token renewal requires a new .vpptoken file from Apple Business Manager.
If your token has just been renewed and apps are stuck in Failed state, revoke and re-assign licenses one app at a time. Bulk re-assignment occasionally fails for individual apps, and the only way to clear the failed state is a manual revoke + reassign cycle.
Troubleshooting: When the Prompt Will Not Go Away
If you have applied the fix and a specific device is still prompting, work through these in order:
Has the user tapped Cancel at least once? iOS sometimes queues multiple install commands – the user may need to dismiss two or three prompts before the queue drains.
Force a sync. From the device: Settings > General > VPN & Device Management > MDM profile > Sync. From Intune: Devices > select device > Sync.
Confirm the device is licensed for the VPP version. Open the VPP app in Intune > Device install status. The device should be listed with Installed or Pending. If it is Not applicable, the assignment is not reaching the device – check group membership and filters.
Check the VPP token health.Tenant administration > Connectors and tokens > Apple VPP Tokens. If the token shows any warning, address that first.
Reboot the device. Last resort, but occasionally clears a stuck MDM channel.
If you have exhausted these, look at the device’s Managed Apps report. An app that should be VPP-licensed but appears under iOS Store App lineage indicates the old assignment is still active somewhere – usually a forgotten filter or a duplicate group assignment.
FAQ
Will users lose any data when I switch from iOS Store App to VPP?
No. The App Store install and the VPP install are the same app binary from the same listing. Local data and settings are preserved across the transition because iOS treats them as the same bundle ID.
Do I need a managed Apple ID for VPP with Device licensing?
No. Device licensing is the entire point – the license is bound to the device hardware identity, not to any Apple ID. The device can have no Apple ID signed in at all, and VPP apps will still install.
Can I keep using iOS Store Apps for some apps?
For apps you want to make optionally available to users through the Company Portal, yes – assign them as Available. For Required deployment to corporate-owned devices, no. Switch them to VPP.
What about iPadOS devices?
The same rules apply. iPadOS uses the same MDM commands and the same VPP licensing model as iOS. If you have iPads in the same affected group, they will exhibit the same prompt behaviour and be fixed by the same approach.
My VPP token was renewed by someone else and now apps are failing – is this related?
It can be. A token renewal sometimes leaves individual app licenses in a Failed state until they are re-assigned. This is a separate issue from the iOS Store App vs VPP problem, but you may encounter both at once if the same admin tried to “work around” the failed VPP state by adding iOS Store App versions. Treat the VPP licensing failures as a separate workstream once the prompt is gone.
Summary
If iOS devices managed by Microsoft Intune are showing an iTunes or App Store sign-in prompt, do not start with Apple ID configuration, ABM enrollment, or DEP profiles. Start with your app inventory. Look for iOS Store Apps with Required assignments that overlap with VPP versions of the same app. Fix one device first using assignment filters, then roll the change out to the rest of the estate, and finish by deleting the iOS Store App duplicates entirely.
The technical fix is simple. The harder part is preventing the next admin from making the same selection in the same wizard – so document the standard, restrict who can add apps, and keep your VPP token healthy. Your users will never see another iTunes prompt, and your service desk will get its mornings back.
Microsoft officially retired Classic Teams on July 1, 2025, and the client is no longer functional. Despite this, many organizations still have remnants of Classic Teams scattered across their Windows device estate. This is not just a cosmetic issue. Classic Teams no longer receives security updates, the per-user installation model wastes disk space, leftover shortcuts confuse users, and end-of-life software can put you out of compliance. If you have been putting off the cleanup, now is the time to remove Classic Teams from your environment.
In this post I am sharing three PowerShell scripts that handle different scenarios, from a one-off standalone removal to a fully automated Intune Proactive Remediations approach.
Why You Need to Remove Classic Teams
Even though Classic Teams stopped working months ago, there are real reasons to actively remove it rather than just leaving it behind:
Security – Classic Teams no longer receives security updates, leaving a potential attack surface on your endpoints
Disk space – The per-user installation model means Classic Teams can consume hundreds of megabytes per user profile on a device
User confusion – Leftover shortcuts and autorun entries can confuse users, especially when New Teams is already deployed
Compliance – Many organizations have policies requiring the removal of end-of-life software from managed devices
Clean device state – Leftover registry entries and autorun configurations can interfere with New Teams or cause unexpected behavior
What Gets Removed
All three scripts target the same Classic Teams components:
Teams Machine-Wide Installer – The MSI-based installer typically deployed via SCCM, GPO, or during OS deployment
Per-user Teams installations – Classic Teams installed itself per-user under %LocalAppData%\Microsoft\Teams for each profile on the device
Autorun registry entries – Both HKLM and per-user Run keys that launch Classic Teams at logon
Desktop and Start Menu shortcuts – Leftover .lnk files pointing to the old Teams client
Teams Installer folder – The C:\Program Files (x86)\Teams Installer directory
Option 1: Remove Classic Teams with a Standalone Script
If you need to remove Classic Teams from a smaller number of devices, or want to run the cleanup through SCCM, ConfigMgr, GPO, or manually, use the standalone removal script. It handles the complete removal process in a single run: stops Teams processes, uninstalls the Machine-Wide Installer via msiexec, iterates through all user profiles to remove per-user installations, cleans up registry entries and shortcuts, and validates the result.
The script creates a log file at C:\Windows\Logs\Remove-ClassicTeams.log for troubleshooting.
Option 2: Remove Classic Teams with Intune Proactive Remediations
For organizations managing devices through Microsoft Intune, the preferred approach is to use Proactive Remediations (now called Remediations in the Intune admin center). This gives you a detection script that identifies non-compliant devices and a remediation script that automatically cleans them up.
Detection Script
The detection script checks whether you still need to remove Classic Teams by scanning all common locations. If any remnant is found, it exits with code 1 (non-compliant), which triggers the remediation script. If the device is clean, it exits with code 0 (compliant).
Teams Machine-Wide Installer in both 32-bit and 64-bit uninstall registry keys
Classic Teams folder, Teams.exe, and Update.exe in each user profile
Teams desktop shortcuts across all profiles
HKLM Run entry for Teams
Remediation Script
When the detection script flags a device as non-compliant, the remediation script will remove Classic Teams and perform the full cleanup. It goes further than the standalone script by also cleaning Start Menu and Startup folder shortcuts, loading offline user registry hives to remove per-user Run entries, and removing the Teams Installer folder from Program Files.
After remediation, the script runs its own validation. If all remnants are successfully removed, it exits with code 0. If anything remains, it exits with code 1, which Intune will flag for review.
Give it a name, for example: Remove Classic Microsoft Teams
Upload Detect-ClassicTeams.ps1 as the detection script
Upload Remediate-ClassicTeams.ps1 as the remediation script
Set Run this script using the logged-on credentials to No (runs as SYSTEM)
Set Run script in 64-bit PowerShell to Yes
Assign the remediation to a device group – start with a pilot group before targeting all devices
Set the schedule – daily is recommended until the bulk of devices are cleaned up, then reduce to weekly
Logging
All three scripts write detailed logs to C:\Windows\Logs:
Remove-ClassicTeams.log
Detect-ClassicTeams.log
Remediate-ClassicTeams.log
Each log entry includes a timestamp, severity level (INFO, WARN, ERROR), and a descriptive message, making it easy to verify that the scripts successfully remove Classic Teams. This makes it straightforward to troubleshoot any issues through Intune device diagnostics or by reviewing the log files directly.
Summary: Remove Classic Teams the Right Way
Cleaning up Classic Microsoft Teams is a necessary task for any organization that has migrated to New Teams. Whether you run the standalone script through your existing deployment tools or leverage Intune Proactive Remediations for automated, ongoing compliance, these scripts give you a reliable way to get it done.