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.

14 days
how often Entra refreshes a device's activity stamp
21 days
Microsoft's floor before calling anything stale
365 days
longest grace period a compliance action allows
1,000
delete actions a tenant can submit per day

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.

THE DAY A DEVICE GOES DARK, AND WHAT EACH SURFACE KEEPS SAYING last check-in lastSyncDateTime value frozen — the growing gap is the only honest signal complianceState still reads compliant, and still counts in the rate Entra activity stamp already up to 19 days behind before anything went wrong −30 day 0 30 60 90 ONLY ONE OF THE THREE LINES CHANGES WHEN THE DEVICE STOPS ANSWERING

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.

The pattern
A compliance rate that doesn't divide by devices that actually reported is a survivorship statistic. Publish two numbers instead of one: compliant as a share of devices seen in the last 30 days, and the count of devices not seen at all. The second number is the one that moves when something is wrong.

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?

1
Write the threshold down before you look at the list.

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.

2
Export first, and cross-check Autopilot.

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.

3
Disable, wait, then delete.

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.

4
Budget the actions.

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.

Sources
  • 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.
GraphPaaS

Last sync, compliance and grace periods per tenant — so the devices that stopped answering stop counting as healthy.

See your device inventory →

Newsletter

Get the next article by email

Practical M365 & Azure cost pieces like this one. No spam, unsubscribe anytime.