InfoWorld recently published a piece titled "AI is less dangerous than humans," and if you run IT infrastructure for a living, the argument lands hard. The author — who has been working with AI since 1985 — pushes back on the flood of incident reports feeding the "machines are turning on us" narrative and points at the thing practitioners already know: the real damage in IT environments comes from human process failures, not Hollywood plotlines. His evidence includes a botched software update (Ruby Central's RubyGems). Not a rogue model. An update.
While the industry debates Skynet, your Monday morning is spent in a WSUS console showing 1,247 updates "needed," 60 workstations stuck in "pending reboot" since last Patch Tuesday, and a helpdesk queue filling with "my computer restarted itself" tickets. The existential threat to your SLA isn't artificial intelligence. It's your patch pipeline — or the absence of one.
The Problem in Depth: Why Patching Still Breaks in 2025
The tooling is siloed. Most teams run some combination of WSUS or a bolt-on patch module inside ConnectWise or Ninja, a separate monitoring stack, and a standalone helpdesk. The patch tool knows FILE07 failed KB5034441 with 0x80070643 — the notorious update that fails when the Recovery partition is too small. Monitoring doesn't know. The helpdesk doesn't know. So the failure sits silently for three weeks until a tech stumbles across it while chasing an unrelated ticket.
"Installed" isn't "protected." A machine that staged an update but never rebooted is still running the vulnerable binary in memory. In most environments, 10–15% of endpoints sit in permanent pending-reboot limbo — counted as compliant in whatever spreadsheet the IT manager maintains, executing code Microsoft patched months ago.
Reboots are either invisible or noisy — never informative. When a server reboots at 2am after a scheduled deployment, one of two things happens. Monitoring ignores it because the machine came back up and the uptime alert cleared itself, so nobody verifies the deployment actually succeeded. Or monitoring pages the on-call tech with "HOST DOWN," who scrambles, RDPs in, watches it come back, and burns 30 minutes investigating a routine maintenance reboot. Neither outcome tells you what happened. Both erode trust in your alerting — and in whoever set it up.
The MSP version is worse. Managing 50 clients means 50 consoles, 50 compliance spreadsheets, clients who refuse maintenance windows, and audit evidence produced by hand. A typical MSP tech burns 6–8 hours a week just pulling patch status. When a client gets audited or insured, "I think we patched most things" is not a defensible answer.
The business impact is measurable:
- Machines running 90+ days behind on cumulative updates — long after the exposure window opened
- Failed deployments converting into tickets days later, with users reporting symptoms nobody connects to the botched update
- Every context-free 2am outage costing 30–60 minutes of senior tech time and another notch of burnout
- Audits and cyber-insurance renewals demanding patch evidence you can't produce — paid for in premiums or in the deals you didn't win
This is exactly the human-failure pattern the InfoWorld article describes. The machines didn't conspire. A process gap did.
How AlertMonitor Closes the Loop
AlertMonitor was built on a simple premise: patch state, monitoring state, and ticket state describe the same operational reality, so they should live in one system.
Real-time patch status on every device. Each managed Windows machine shows the three states that matter: missing updates, failed deployments (with error code and KB number), and pending reboot. Live, not a weekly report. Filter by site, department, OS, or client. The IT manager's compliance question — "are we current?" — becomes a ten-second glance instead of a half-day of report wrangling.
Staged, scheduled, reversible deployments. Build rings: pilot on IT workstations, then department by department, then servers, each with maintenance windows that respect their hours. If a deployment breaks something — a driver conflict, an application failure — roll it back from the same console. No imaging, no panic restores, no weekend rebuilds.
Reboots with context, not noise. Because patching and monitoring share the same data layer, a 2am reboot following a scheduled deployment arrives in the alert stream labeled exactly as that: deployment ID, KB number, machine, duration. It pages no one, because it's expected. A reboot outside a deployment window does page — with full context attached. The 30-minute "is it crashing again?" investigation disappears, and so do the false-positive pages that trained your team to ignore alerts.
Failures become tickets automatically. When KB5034441 fails on FILE07, AlertMonitor can open a helpdesk ticket pre-populated with the device, the error, the KB, and the patch history. The tech starts at "the Recovery partition is 400MB too small" instead of "can you reproduce this?"
For MSPs: one compliance surface across every client. A cross-client dashboard shows which of your 50 clients drifted out of compliance this week, not next month. Audit evidence is an export, not an archaeology project.
The workflow shift: previously it was WSUS console → spreadsheet → manual spot checks → RDP into 15 servers → a report nobody reads. In AlertMonitor it's one dashboard, exceptions only, failures pre-ticketed, reboots contextualized.
Practical Steps You Can Take Today
1. Find your pending-reboot machines right now. These registry markers are how Windows flags "a restart is required to finish patching":
# pending-reboot-audit.ps1 — find machines that need a restart to finish patching
$servers = Get-Content .\servers.txt
$results = foreach ($server in $servers) {
Invoke-Command -ComputerName $server -ScriptBlock {
[PSCustomObject]@{
Server = $env:COMPUTERNAME
CBSPending = Test-Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending'
WUPending = Test-Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired'
LastHotfix = (Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 1).HotFixID
}
}
}
$results | Where-Object { $_.CBSPending -or $_.WUPending } | Export-Csv .\pending-reboots.csv -NoTypeInformation
$results | Format-Table -AutoSize
Every machine on that list is running patched installers with unpatched code. Reboot them before you call yourself compliant.
2. Baseline update age per server. Sort by oldest — the bottom of this list is your real risk register:
# Show the last installed update on every server, oldest first
$servers = Get-ADComputer -Filter 'OperatingSystem -like "*Server*"' | Select-Object -ExpandProperty Name
Invoke-Command -ComputerName $servers -ScriptBlock {
$latest = Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 1
[PSCustomObject]@{
Server = $env:COMPUTERNAME
LastHotfix = $latest.HotFixID
InstalledOn = $latest.InstalledOn
AgeDays = (New-TimeSpan -Start $latest.InstalledOn -End (Get-Date)).Days
}
} | Sort-Object AgeDays -Descending | Format-Table -AutoSize
3. Check the Windows Update service before blaming the network. A disabled or hung wuauserv produces "download failed" errors that look exactly like WSUS problems:
Get-Service -ComputerName FILE07 -Name wuauserv | Select-Object Name, Status, StartType
# If it's stopped on a machine that should be patching:
Invoke-Command -ComputerName FILE07 -ScriptBlock {
Set-Service -Name wuauserv -StartupType Manual
Start-Service -Name wuauserv
}
4. Same failure mode on Linux, different flag. A kernel patch without a reboot has the same silent-exposure problem:
# Check whether a Linux server is waiting on a reboot to apply patched packages
if [ -f /var/run/reboot-required ]; then
echo "Reboot required. Affected packages: $(cat /var/run/reboot-required.pkgs 2>/dev/null)"
else
echo "No reboot required"
fi
5. Then make this a dashboard, not a script. Scripts go stale. The person who wrote them leaves, and next quarter you're re-deriving the same CSV from memory. In AlertMonitor, the pending-reboot list, failed-deployment list, and patch age are live per-device fields — the audits in steps 1–2 become saved views your whole team sees, and the failures from step 3 arrive as tickets with the error code already attached.
6. Institute a weekly 15-minute failed-patch review. Not "who isn't patched" — that's noise. Ask "what failed, why, and what's the root cause?" Full disks (0x800f0922 is almost always a cramped system partition), undersized Recovery partitions (the KB5034441 special), and third-party antivirus blocking the servicing stack cover most of it.
The Bottom Line
The InfoWorld argument is right, and it applies directly to your server room: the danger isn't a superintelligence — it's a January cumulative update silently failing at 63% on 200 machines because nobody built a feedback loop between the patch tool and everything else. Humans and their process gaps are the threat. Close the gaps: live patch state, staged deployments, contextual reboots, failures that become tickets automatically. That's not science fiction — it's an afternoon of configuration in AlertMonitor, and it removes more real risk than any amount of AI doom-scrolling ever will.
Related Resources
AlertMonitor Patch Management & Software Updates AlertMonitor Platform Overview Book a Demo Patch Management & Software Updates Resources
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.