Table of Contents
Is Your Windows Autopilot Failing After the Terms of Use? Here’s the Surprising Fix.
If your Windows AutoPilot deployment process freezes, you are facing a known issue with a simple fix. The problem often happens right after you accept the Terms of Use (TOU), and it is caused by a bug in a file that Windows downloads during setup, not an error in your settings.
Understanding the AutoPilot Process
Windows AutoPilot helps IT administrators set up new devices for their organizations. The goal is to make the setup process fast and easy. Instead of building a custom Windows image for every computer, you can use AutoPilot. It pulls policies, settings, and apps from the cloud through Microsoft Intune. This service transforms a brand-new device into a work-ready computer with minimal effort. An administrator pre-registers the devices, and when a user turns on the new computer for the first time, AutoPilot takes over. It guides them through a simplified setup experience that automatically joins the device to the company’s network and installs the necessary software.
The Specific Freezing Problem
During the AutoPilot setup, which is known as the Out-of-Box Experience (OOBE), the device connects to the internet to download instructions. One of the steps can be to show the user the company’s Terms of Use. The user must accept these terms to continue. The problem occurs at this exact moment. After the “Accept” button is clicked, the screen shows a generic error message, such as “Something went wrong.” The setup process stops completely. This can be confusing because the error message gives no clue about the real cause. Many administrators first suspect an issue with their network or their Conditional Access policies, but that is usually not the case.
What Causes the Deployment to Hang
The root of this problem is not a mistake in your Intune configuration or a network failure. The issue lies within a specific component called the CloudDomainJoin package. This package contains code, written in JavaScript, that manages parts of the device enrollment process. Windows downloads this package from Microsoft’s servers during the OOBE phase. Because Microsoft can update this package at any time without a full Windows update, new features and fixes can be rolled out quickly. However, this also means new bugs can appear unexpectedly.
In this instance, a bug exists in the JavaScript code that handles the Terms of Use. When the terms have been updated or changed by the administrator, the code fails to process the acceptance correctly. This failure causes a crash in another component, the CloudExperienceHost, which is the application responsible for displaying the setup screens. When it crashes, the entire deployment process hangs, leaving you with the unhelpful error message.
Simple and Effective Workarounds
Thankfully, you do not need to wait for a permanent fix from Microsoft to get your devices deployed. There are two straightforward workarounds that can resolve this issue immediately.
Restart the Device
The simplest solution is to turn the device off and on again. When the error message appears, perform a hard restart by holding down the power button. When the device boots back up, the AutoPilot process will resume. The system will recognize that the Terms of Use were already accepted before the crash. It will then skip that step and continue with the rest of the enrollment. The setup should proceed successfully from this point.
Accept the Terms in Advance
A more proactive solution is to change how users consent to the Terms of Use. Instead of having the TOU appear during the AutoPilot OOBE, you can require users to accept them beforehand. This can be configured within your Azure Active Directory settings. By having users accept the terms upon their first sign-in to any company resource, their consent is already recorded. When the AutoPilot process runs, it sees that the user has already agreed and completely skips the problematic screen, avoiding the bug altogether. This method provides a smoother experience for the user and prevents the error from ever appearing.