Unused Microsoft 365 Copilot licenses
Copilot is one of the most expensive per-seat add-ons in Microsoft 365, and it was often bought in batches for pilots and rollouts. A Copilot seat whose user stopped prompting months ago costs the full add-on price every month, on top of the base license that is actually being used.
Why Copilot seats go idle
Copilot adoption is uneven by nature: some users make it part of every document, others try it for a week and quietly stop. Pilots get provisioned optimistically, rollout waves license whole departments, and the seats of the non-adopters keep billing at full price while their Word and Teams usage looks perfectly healthy.
Ordinary activity monitoring misses this completely. The user signs in daily and uses every workload, so no inactivity rule fires; only the Copilot-specific usage signal reveals that the add-on itself is untouched.
Detect it manually
Microsoft Graph exposes a per-user Copilot usage report (beta) with a last-activity date per Copilot app. Export it and cross-check against your Copilot license assignments:
Connect-MgGraph -Scopes 'Reports.Read.All'
$uri = 'https://graph.microsoft.com/beta/reports/getMicrosoft365CopilotUsageUserDetail(period=''D90'')?$format=text/csv'
Invoke-MgGraphRequest -Method GET -Uri $uri -OutputFilePath copilot-usage.csv- The endpoint lives on the beta Graph version and reports a Last Activity Date per user and per Copilot app (Teams, Word, Excel, PowerPoint, Outlook, OneNote, Loop, Copilot Chat).
- Since 2021 Microsoft conceals user names in usage reports by default, so the CSV may come back pseudonymized; the setting lives in the Microsoft 365 admin center under Org settings, Reports. You still have to join the report against license assignments yourself.
How LicenseMeter detects it
The sync reads the Copilot usage report through the read-only Reports.Read.All permission and joins it against license assignments. The rule fires for any user holding the Copilot SKU whose last Copilot activity is more than 60 days old, or who never used Copilot at all.
If the tenant conceals report names, the per-user join is impossible, so the engine degrades to an aggregate finding instead: how many of the tenant's Copilot seats show no usage, priced as that count times the Copilot seat price. The settings page explains how to enable identifiable report names to get back to per-user findings.
What it costs
Each idle Copilot seat is priced at the Copilot add-on's monthly price from the per-tenant price book, prefilled with a list-price estimate and editable to your contract rate. Because the add-on price is high and constant per seat, even a handful of idle seats produces a figure worth acting on.
In the 155-person sample tenant, unused Copilot seats waste € 393,40 a month.
Sample figures come from the deterministic demo workspace, not from customer data. The waste calculator turns your own seat count into an estimate.
Related waste patterns
See which of your seats match this pattern.
Connect read-only and the free scan lists every affected account in your tenant, priced per seat and per month, with a PowerShell remediation script your IT reviews and runs.
After the free scan, 14 days of full monitoring, free. No credit card, read-only access.