An experiment making the rounds asked LLMs to share their most controversial opinion about humanity. The verdict, as The Register reported it: we're "a bunch of amoral sheep." We follow the herd, avoid the uncomfortable truth, and nobody wants to be the first to say what everyone suspects.
Annoying. But before you write it off as AI being snarky, do one thing: open your patch management console and look at the compliance number. If it says 98% or 100%, ask what "deployed" actually means in that tool. Does it mean the update installed successfully? Does it mean the device restarted and the fix is actually active? Or does it mean the platform pushed a payload at a machine at some point and never checked back?
For most IT teams running WSUS, MECM, or a bolt-on patch module inside an RMM like NinjaOne or ConnectWise, it's the third answer. And that's not a trivia question — it's the gap between your dashboard and your actual exposure.
Herd behavior in patching looks exactly like this: Patch Tuesday arrives, you approve the update, the console turns green, and everyone quietly agrees not to ask about the machines that were offline during the window, the installs that failed with an error code, and the servers that have been sitting on a pending reboot since last month.
The uncomfortable industry reality: surveys have shown for years that most successful breaches exploit vulnerabilities for which a patch was already available. Not zero-days — known issues with shipped fixes. The failure mode isn't that patches don't exist. It's that nobody can prove, per device, whether the fix is installed and active.
The Problem: Your Patch Report Measures Effort, Not Outcome
The pending reboot black hole
A Windows update isn't "done" until download → install → reboot → active. Most consoles report at the install step and stop there. That domain controller that installed July's cumulative update but hasn't restarted? It's still running the old code in memory. WSUS will happily count it. Your vulnerability scanner may disagree with your patch report. Two tools, two answers, both technically correct — and you're the one reconciling them in a spreadsheet.
In a typical 500-endpoint fleet, it's not unusual to find 8–12% of machines sitting in pending-reboot limbo for weeks. That's 40–60 devices your compliance report calls "patched" that run unpatched code every single business day.
"Deployment succeeded" is not "the patch installed"
Every patch admin knows the error codes: 0x800f0922, 0x80073712, 0x800f0831. Installs fail because the device was offline during the window, the update got superseded mid-chain, or the servicing stack wedged itself. Ask anyone who lived through KB5034441 failing across an entire fleet because of undersized recovery partitions — most consoles showed "failed" in a sub-grid nobody opened, and machines stayed unpatched for months.
Standalone WSUS won't chase those failures. RMM patch modules record the error and move on. The dashboard only aggregates success, so silent failures become permanent exposure.
Siloed architecture makes it worse
Patching lives in WSUS or MECM. Monitoring lives in PRTG, Zabbix, or SolarWinds. Tickets live in ConnectWise Manage, Jira, or Zendesk. None of them share context, so this happens constantly:
- A server reboots at 2:14am inside your patch window and one service doesn't come back. Monitoring either pages on everything (training your on-call to ignore alerts) or misses the service-level failure entirely.
- Users discover the broken file share at 8:05am. Helpdesk logs a P1. The tech burns 45 minutes reading event logs that the patch system already knew the answer to.
- Nobody files it as a patch problem, so the root cause never gets flagged before the next ring deploys the same broken update to 300 more machines.
That's how a routine maintenance window becomes a four-hour incident with a confused post-mortem.
The MSP version is worse
An MSP tech supporting 30–50 clients has per-client deferral policies that live in GPO lore, a dozen tabs open across five tools, and a QBR question — "is client X patched?" — that takes a day of CSV exports to answer honestly. Audit season means exporting from WSUS and the RMM and doing spreadsheet alchemy for three days to answer one insurance questionnaire about whether endpoints are patched within 30 days of release.
What this actually costs
- Longer outages. No patch context means every patch-related issue gets investigated from zero.
- Ticket floods. The helpdesk learns about outages from end users, then drowns in duplicate tickets.
- Undefendable SLA reports. MTTR is inflated because patch data and helpdesk data live in systems that don't talk.
- Burnout. Nothing demoralizes an on-call tech like a 2am page caused by your own maintenance — or a three-day audit scramble that one integrated report would have replaced.
How AlertMonitor Turns "Deployed" Into "Verified"
AlertMonitor's patch management module starts from a different premise: a device's patch state is a real-time operational fact, not a monthly report. That changes every answer above.
Three distinct states per device, not one green blob. Every managed Windows device shows missing updates, failed patches, and pending reboot as separate, visible statuses. "Deployed but awaiting reboot" is never again indistinguishable from "compliant."
Live compliance, grouped the way you operate. Dashboards by client, site, department, or device group, with drill-down to the individual KB and error code. An MSP sees every client on one NOC view; an internal IT team sees Finance vs. Engineering at a glance.
Staged, scheduled, reversible deployments. Build rings — a 5–10 device pilot group, then departments, then servers — each with its own maintenance window. If a patch fails or a post-reboot health check shows a critical service down, roll back instead of improvising at 8am.
Monitoring that knows about your patch windows. This is where integration earns its keep. A device rebooting at 2am inside a scheduled window is expected — no page, no ticket. A service that fails to come back after that reboot triggers an alert carrying full context: which device, which patch window, which KB. You find out at 2:04am from a contextual alert instead of from a user at 8am. It works because monitoring, RMM, patching, and helpdesk share one data model in AlertMonitor.
Failures open tickets automatically. A failed patch creates a helpdesk ticket with the device, KB, error code, and remediation hint attached — so the failure surfaces on day one, not three weeks later when an angry user calls.
The workflow, side by side
The old way:
- Patch Tuesday: approve in WSUS, hope.
- Wednesday: check the computer status grid, 40 machines "in progress," move on.
- Weeks later: the vulnerability scan contradicts the dashboard. Export both, cross-check, discover 22 servers are pending reboot.
- Month end: send the "everyone please reboot" email, helpdesk floods, one legacy app breaks, and there's no rollback plan.
- Audit: three days of exports and a compliance number defended by vibes.
The AlertMonitor way:
- Ring 1 approved Monday at 10:00. By lunch the dashboard shows 9 of 10 compliant and 1 failed with an error code — and a ticket already exists for that failure.
- Rings 2–4 deploy in their windows. Reboots happen silently; monitoring treats them as expected.
- One service doesn't restart cleanly at 2am. The alert fires with patch context. The tech restarts it remotely in two minutes and the ticket updates itself.
- QBR or audit compliance report, per client, including pending-reboot counts: one click.
The measurable difference: no more Monday-morning WSUS archaeology, patch-related MTTR drops from hours to minutes, and audit prep goes from days to a dashboard screenshot.
Do This Today: Get to Ground Truth
You don't need a platform rollout to find out where you stand. Run these against your fleet this week.
1. Find your pending-reboot backlog. The single most revealing check most teams have never run:
# Is this machine actually finished patching, or just pretending?
$paths = @(
'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending',
'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired'
)
if ($paths | Where-Object { Test-Path $_ }) {
Write-Warning "$env:COMPUTERNAME has a PENDING REBOOT - patches installed but NOT active"
} else {
Write-Host "$env:COMPUTERNAME is fully patched and rebooted" -ForegroundColor Green
}
2. Sweep the whole server fleet. Put your server names in a text file and get the uncomfortable list:
$servers = Get-Content C:\temp\servers.txt
$result = foreach ($s in $servers) {
$pending = Invoke-Command -ComputerName $s -ScriptBlock {
(Test-Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending') -or
(Test-Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired')
} -ErrorAction SilentlyContinue
[PSCustomObject]@{
Server = $s
PendingReboot = if ($null -eq $pending) { 'OFFLINE / unreachable' }
elseif ($pending) { 'YES - patch NOT active' }
else { 'No' }
}
}
$result | Sort-Object PendingReboot -Descending | Format-Table -AutoSize
$result | Export-Csv C:\temp\pending-reboots.csv -NoTypeInformation
3. Verify the KBs that matter most — domain controllers, SQL servers, remote access gateways:
# Did the critical Patch Tuesday KB actually land on this box?
$kb = 'KB5034441'
if ($fix = Get-HotFix -Id $kb -ErrorAction SilentlyContinue) {
Write-Host "$kb installed on $($fix.InstalledOn)" -ForegroundColor Green
} else {
Write-Warning "$kb is MISSING on $env:COMPUTERNAME"
}
4. Hunt silent update failures in the System event log:
# Windows Update install failures (Event ID 20)
Get-WinEvent -FilterHashtable @{
LogName = 'System'
ProviderName = 'Microsoft-Windows-WindowsUpdateClient'
Id = 20
} -MaxEvents 10 -ErrorAction SilentlyContinue |
Select-Object TimeCreated, Message | Format-List
5. Same disease, different symptom on the Linux boxes in the same fleet:
# Debian/Ubuntu: does this box need a reboot to finish an update?
if [ -f /var/run/reboot-required ]; then echo "$(hostname) NEEDS A REBOOT"; fi
Once you have ground truth, the AlertMonitor workflow replaces the manual loop:
- Create device groups for pilot, departments, and servers; assign patch policies per group.
- Set maintenance windows so scheduled reboots never page on-call — but post-reboot health checks still alert if a service fails to come back.
- Enable automatic rollback when a health check fails after a patch reboot.
- Turn on auto-ticketing so failed patches open helpdesk tickets with full context.
- Put patch compliance on the NOC dashboard and schedule the per-client weekly compliance report.
Then run a staggered reboot campaign against the stragglers list you exported above. That one move usually takes a fleet from "dashboard compliant" to "actually patched" inside a week.
Stop Being a Sheep About It
The AI models' insult lands because herd behavior is comfortable — and patch management has run on herd instinct for years: approve, trust the checkmark, don't ask. Three questions break the herd: what's missing, what failed, and what's waiting on a reboot — per device, right now, with context tied to your monitoring and your helpdesk.
That's the question AlertMonitor answers continuously, so Patch Tuesday stops being an act of faith and the 2am mystery outage stops being a genre of incident.
Related Resources
AlertMonitor Patch Management & Software Updates
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.