You're staring at a logon box that refuses to talk to the domain, and Windows is pretending it doesn't know who you are. Annoying, but this one has a well-worn fix.
The error 0x000008A9 (NERR_NonValidatedLogon) means the machine account on your workstation or server can't validate itself against the domain controller. In plain English: the computer's password in AD and the password it's using locally have drifted apart. The secure channel is dead. Windows can't authenticate the machine, so it can't authenticate you either.
Reset the secure channel
Log in with a local admin account (or cached domain creds). Open an elevated PowerShell and run this:
Test-ComputerSecureChannel -Verbose
If it returns False, you've confirmed the diagnosis. Now repair it:
Test-ComputerSecureChannel -Repair -Credential (Get-Credential)
Use a domain account that has rights to reset computer objects — a Domain Admin works, or a delegated account with Reset Password on the OU. Enter the credentials, and if it comes back True, you're done. Reboot and log in normally.
If PowerShell isn't cooperating (older Server 2008 R2 / Windows 7 boxes), fall back to netdom:
netdom resetpwd /s:dc01.corp.local /ud:corp\admin /pd:*
Point /s: at the PDC Emulator specifically. That's the DC that owns the machine account password by default.
If the repair won't take
Sometimes the machine account is so far gone that the repair fails. You'll see Access is denied or The trust relationship between this workstation and the primary domain failed. That's your cue to check a few things:
- Is the machine account disabled in AD? Someone cleaned up stale accounts and killed a live one. Re-enable it in ADUC.
- Is the machine in the right OU? If it got moved and the delegation changed, the reset will fail silently.
- Duplicate SPNs or stale computer objects? Delete the ghost and reset again.
If nothing works, unjoin and rejoin the domain. Yes, it's the nuclear option, but it beats burning hours. You'll lose local profile mappings if the machine name changes — keep the name identical and you're fine.
Why this actually happened
Windows rotates the machine account password every 30 days by default. That rotation gets pushed to the PDC Emulator, then replicates out. When it doesn't — because the DC was offline, because someone restored a snapshot, because replication is broken, or because the machine was off the network for way too long — the two passwords diverge. The next time the machine tries to authenticate, the DC says "no" and you get 0x000008A9.
Virtualization is the number one offender I see in the field. Restoring a VM snapshot rolls the machine back in time, but AD has already moved on. That's an instant broken channel. Same thing happens after a P2V migration if you don't sysprep properly.
Rule of thumb: if you restore a snapshot of a domain-joined VM that's older than 30 days, reset the secure channel before you do anything else.
Less common variations
Sometimes the error shows up in a different context and the fix is different:
RDP from a trusted forest
Cross-forest trust with selective authentication will throw 0x000008A9 if the "Allowed to Authenticate" permission isn't set on the target computer object. Go into ADUC, enable Advanced Features, open the computer's properties, Security tab, and add the source user or group with Allowed to Authenticate.
NPS or RADIUS authentication
Network Policy Server can log this error when the NPS server itself has a broken channel. Check the NPS server's own secure channel first — it's easy to forget the NPS box is domain-joined too.
Cluster nodes and SQL Always On
Failover clusters have machine accounts for both the nodes and the cluster name object (CNO). If the CNO's password drifted, you'll see 0x000008A9 on cluster operations. Fix it with:
Reset-ComputerMachinePassword -Server dc01.corp.local -Credential (Get-Credential)
Run that as the CNO, not as you. Which means logging into the cluster as the CNO identity, or using the failover cluster cmdlets to reseed it.
AZURE AD Connect / hybrid-joined devices
In hybrid scenarios, if the on-prem computer object is stale but the AAD object is fine, you'll get 0x000008A9 on Windows Hello for Business login. Re-sync the object or run dsregcmd /leave then dsregcmd /join.
Stop it happening again
A few things worth doing on any domain you manage:
- Monitor Event ID 3210 and 5722 on your DCs. Both flag broken secure channels before users notice. Pipe them to your SIEM or a scheduled task that emails you.
- Never restore a VM snapshot blindly. If it's a domain member and the snapshot is older than a couple of weeks, reset the channel immediately after boot.
- Keep your DC replication healthy. Run
repadmin /replsummaryweekly. If replication is broken, machine password rotation breaks with it. - Don't disable machine account password rotation via GPO (
Domain member: Disable machine account password changes) unless you have a very specific reason. It's a security regression and it kicks the problem down the road. - Audit stale computer accounts quarterly. Disable, don't delete, for at least 90 days. That way if you accidentally kill a live machine, you can bring it back without a rejoin.
That's it. Reset the channel, check the event logs, and stop snapshot-restoring your DCs. Most admins hit this once, learn the PowerShell one-liner, and never stress about it again.