Stale Intune devices
24 Aug 2026
Stale devices in Intune: the cleanup nobody schedules
Nobody argues with a compliance rate. It is one number, it is green, and it goes in the monthly report. What it rarely says is how many of the devices in the denominator have spoken to Intune this quarter — because a device that stopped checking in doesn't leave the list. It keeps the state it had on the day it went quiet, and quietly props the number up. Below are the six questions that come up the first time somebody tries to fix it.
How long is "stale"?
It depends which clock you read, and the two clocks disagree by design.
Intune's is exact. Every managed device carries
lastSyncDateTime,
documented as the date and time the device last completed a successful
sync with Intune, and it supports the lt and gt
filter operators — so "everything that hasn't reported since March" is one
query, not an export and a spreadsheet.
Microsoft Entra's is deliberately blunt. The device object's activity timestamp is only rewritten when the gap between the stored value and now is more than 14 days (+/-5 day variance). It exists for lifecycle decisions, not for auditing. Which is why the same page tells you not to treat a timestamp younger than 21 days as evidence of anything — and warns that some active devices may have a blank time stamp. A threshold of 30 days will hand you a list containing everyone who took a long holiday. Ninety days is the number you can defend in a meeting.
Why does the compliance rate go up when devices go dark?
Because compliance is something a device reports, not something the service
computes on your behalf between check-ins. The
complianceState property has seven documented values —
unknown, compliant, noncompliant,
conflict, error, inGracePeriod and
configManager — and none of them means "we haven't heard from
this one since March". A laptop that was compliant on its last sync stays
compliant in the list, indefinitely, with no flag to say the assessment is
eight months old.
Grace periods stretch the same gap on purpose. Every compliance policy
includes Mark device noncompliant as a built-in action
scheduled
to trigger immediately at zero days, but that schedule is editable to
anything from 0 to 365 days, and while it runs the device sits at
inGracePeriod with a date in
complianceGracePeriodExpirationDateTime. Set it generously once,
forget it, and a device can hold a non-failing status for a year without
being healthy for a minute of it.
Does deleting a stale device give me a licence back?
Usually not, and it's worth knowing why before someone builds a business case on it. Intune is licensed per user — a licence is required for any user or device that benefits directly or indirectly from the service — so removing one of a person's three enrolled devices returns nothing. The exception is the device-only subscription, which covers kiosks, dedicated devices and other unaffiliated hardware enrolled through Autopilot self-deploying mode, Apple ADE without user affinity, Android Enterprise dedicated or a device enrolment manager account. Those seats are assigned against estimated usage, so a retired kiosk that nobody deleted is genuinely holding one.
The larger saving is one table over. A user whose every device has been dark for a quarter, still holding an E5, is a dormant account wearing a device inventory as camouflage — and that one does show up in the licence waste audit.
Which record am I actually deleting?
There are at least two, and deleting one does not delete the other. The Intune Delete action removes the device from management and hides it from the admin center immediately; underneath, it always triggers a Retire on Windows, macOS and Apple mobile, and a Wipe on Android corporate-owned enrolments. The Entra device object survives all of that, which is why Microsoft's own page ends by telling you to go and remove it separately.
| Record | What it holds | Deleting it costs you |
|---|---|---|
Intune managedDevice |
Sync time, compliance, enrolment, hardware inventory | The device's management history, and it triggers a retire or wipe |
| Entra device object | Join type, activity timestamp, BitLocker recovery keys | The recovery keys, permanently, and Conditional Access identity |
| Autopilot registration | The hardware's claim on a deployment profile | Self-deploying and pre-provisioning both fail on ZTDID mismatch |
| On-premises AD object | The source of truth for hybrid-joined devices | Nothing, if you delete here first and let Connect sync it |
What breaks if I delete the wrong one?
Three things, all of them unpleasant and none of them reversible.
BitLocker. Recovery keys for Windows 10 and newer are stored on the Entra device object; delete the object and the keys go with it, with no way to recover them afterwards. Retiring or deleting the Intune record for an Entra joined device also removes key protectors and suspends BitLocker on the OS volume as a safeguard. Autopilot. Deleting an Entra device that was associated with an Autopilot object breaks the pairing: self-deploying and pre-provisioning deployments then fail by design, because the service can't find the device it expects. Don't delete system-managed devices at all. Hybrid join. Delete a Windows 10 or newer device only in Entra and Connect resynchronises it as a new object in Pending, requiring re-registration on the client. Do it in on-premises AD and let the sync carry the change.
How do I run this without wrecking a Friday?
Ninety days of no successful sync, decided in advance, is a policy. A number chosen after seeing how many devices it catches is a negotiation. Done when the threshold and the grace window are in the runbook.
Back up BitLocker recovery keys for everything on the list, then compare it against the Autopilot device list and remove any match. Done when the deletion list is strictly smaller than the stale list.
Microsoft's own guidance is a grace period rather than a straight delete, because a deletion can't be undone and a false positive is somebody on parental leave. Done when a disabled batch has sat untouched for the agreed window and nobody has called the help desk.
A tenant can submit 1,000 Delete and 1,000 Retire actions a day, 500 Wipes, cumulative across the portal, bulk actions and Graph — and a bulk action covers at most 100 devices. A 3,000-device cleanup is three days of work whether you planned it that way or not.
The part that doesn't fit in a runbook is noticing early. Stale devices arrive one at a time, and the surface that would show them — a count of devices not seen in 30, 60 and 90 days, next to the compliance rate rather than buried under it — is exactly the view no admin center puts on one screen. GraphPaaS collects the device inventory per tenant on a schedule and keeps it, so the last-sync distribution is a trend you watch drift instead of a discovery you make during an audit.
- managedDevice resource type — the definition of lastSyncDateTime, its filter operators, the seven complianceState values and complianceGracePeriodExpirationDateTime.
- How to manage stale devices in Microsoft Entra ID — the 14-day (+/-5) activity timestamp refresh, the 21-day floor, disable-before-delete, BitLocker keys and the Autopilot ZTDID failures.
- Actions for noncompliance — Mark device noncompliant as a built-in action at zero days, and the 0-to-365-day schedule.
- Device Action: Delete — what Delete triggers per platform, BitLocker key protector removal, and that Completed is a server-side status.
- Device actions overview — the daily tenant limits of 1,000 Delete, 1,000 Retire and 500 Wipe, and the 100-device bulk cap.
- Microsoft Intune licensing — per-user licence requirements and which enrolment methods consume a device-only licence.
Last sync, compliance and grace periods per tenant — so the devices that stopped answering stop counting as healthy.
See your device inventory →