How to Find Unused AI Licenses in Microsoft 365 Copilot, GitHub Copilot, ChatGPT and Claude
Microsoft, GitHub, OpenAI and Anthropic each record the last activity on a paid seat, in different places and under different privacy rules. This guide shows where to look in each product and what an idle seat costs at list price, then sets out what to check before a seat is taken back.
Each of the four vendors reports the last recorded activity on a paid seat: Microsoft’s Copilot usage report has a Last activity date column, GitHub’s seat list has last_activity_at, the ChatGPT Enterprise user export has last_day_active, and Anthropic’s Enterprise Analytics API has last_activity_date once last-activity reporting is enabled. Treat a seat with no activity in 30 days as a question for its holder, the threshold GitHub uses in its own guide. At Microsoft’s list price, read on November 13, 2026, one idle Microsoft 365 Copilot seat costs $30 a month, or $360 a year.
Before taking a seat back, look at the role. Where much of the work suits AI, an idle seat may mean the person has not been shown how to use it, so train first.
Key takeaways
- Microsoft, GitHub and OpenAI show a last activity date for each user. Anthropic’s appears only when last-activity reporting is enabled.
- Microsoft hides user names in usage reports by default. A Global Administrator can show them.
- At list price, one idle seat costs $360 a year for Microsoft 365 Copilot, $228 or $468 for GitHub Copilot and $240 in seat fees for Claude Enterprise. OpenAI publishes no price for ChatGPT Enterprise.
Where does each vendor show the last time a seat was used?
Microsoft 365 Copilot: the Microsoft Copilot usage report
In the Microsoft 365 admin center, go to Reports, then Usage, then Microsoft Copilot, then Copilot, and select the Usage tab. Microsoft’s documentation describes a per-user table with a Last activity date (UTC) column and a date for each app, including Teams, Word, Excel, Outlook and Copilot Chat. The report can be set to periods from 7 to 180 days, and the last activity date is the same in each. The table lists everyone licensed for Copilot at any point in the past 180 days, including people who never used it and people whose license was later removed, so match it against current license assignments. It exports to a CSV file. Data for a day usually arrives within 48 hours.
By default, Microsoft hides user names, groups and sites in every usage report. A Global Administrator can clear the setting Conceal user, group, and site names in all reports, under Settings, Org Settings, Services, Reports. Microsoft logs the change, and the setting also covers the version of the report IT can pull by script.
Before calling a seat idle, take the latest of all the date columns. Each app column counts any deliberate Copilot action in that app, and Microsoft notes that the dates for Word, Excel, PowerPoint, OneNote and Outlook can be blank or late.
GitHub Copilot: the Access page, the activity report and the seats API
Organization owners open Settings, then Copilot, then Access, and sort users by when each person last used Copilot (GitHub Docs). The same page produces an Activity report as a CSV file, which GitHub’s metrics reference says includes last_activity_at and refreshes every 30 minutes. For scripts, the seats API returns last_activity_at and the seat’s creation date for every seat.
Activity covers Copilot in an editor, on GitHub, in the command line and on a phone. According to the metrics reference, an update can take up to 24 hours. Editor use registers only when the person has telemetry, the editor’s usage reporting, turned on, so a developer with it off can look idle while using Copilot every day. After 90 days with no activity, last_activity_at is set to empty, a period GitHub says cannot be changed, so an empty value means no recorded activity in 90 days or since the seat was assigned. The GitHub pages cited here describe no setting that hides names.
ChatGPT Enterprise: the user report export
In the Admin Console, go to Usage, then Overview, select Export, then Workspace reports, choose dates and download the CSV file (OpenAI Help Center). Each row of the user report has is_active, meaning at least one message sent in the period, last_day_active_in_period, and last_day_active, the last day the user was active in this or any prior period. Owners, admins and analytics viewers can export it. Data refreshes every 1 to 24 hours, with a 48-hour target. The page does not say how far back the data goes, and it describes no setting that hides the names and email addresses in the report.
Claude Enterprise: the Enterprise Analytics API
Anthropic’s analytics dashboard shows active members against assigned seats, and the help article describes no last active column for each member. The view by person comes from the Claude Enterprise Analytics API, whose key only the organization’s primary owner can create. Its data starts on January 1, 2026 and usually lags by one day. Activity means a chat message, a Claude Code session with tool use or git activity, or a Cowork session with tool use or messages.
The user activity endpoint returns one row per member for a day or a range of up to 366 days. Its last_activity_date field gives the latest active day in that window, but the reference says the field is omitted while last-activity reporting is not enabled for the organization, and it does not say how to enable it. Without the field, add up each member’s counts over the last 30 days. It also does not say whether members with no activity appear, so compare the list with the seats you pay for.
How many days without use should count as unused?
Flag a seat after 30 days without use, then send a reminder and wait a further 30 days before taking it back. GitHub’s guide to reminding inactive users uses the same two steps in its sample reminder.
Thirty days spans most monthly cycles of work, such as a finance team’s close. Where a role works on a longer cycle, such as quarterly reporting, set the window to match. It also sits well inside the history the reports keep: GitHub clears the date after 90 days, and Microsoft’s report runs to 180 days. Allow two days for the reports to catch up, and leave out seats assigned in the last 30 days and people on leave.
What does an unused AI license cost at list price?
The table shows where to look and what one idle seat costs over 12 months at list price, read on each vendor’s pricing page on November 13, 2026. Negotiated prices differ, so use your contract price where you have one. What does AI cost per employee in 2026? covers seat and usage prices in full.
| Product | Where an admin sees last activity | Field | List price | One idle seat, 12 months |
|---|---|---|---|---|
| Microsoft 365 Copilot | Admin center, Reports, Usage, Microsoft Copilot, Copilot | Last activity date (UTC) | $30 a user a month, paid yearly | $360 |
| GitHub Copilot Business | Organization Settings, Copilot, Access, or the seats API | last_activity_at | $19 a user a month | $228 |
| GitHub Copilot Enterprise | Same as Business | last_activity_at | $39 a user a month | $468 |
| ChatGPT Enterprise | Admin Console, Usage, Overview, Export, Workspace reports | last_day_active | No list price published | Monthly contract price per seat × 12 |
| Claude Enterprise | Enterprise Analytics API, user activity | last_activity_date, if enabled | $20 a seat a month, billed annually, plus usage at API rates | $240 in seat fees |
Billing terms decide when a saving reaches the bill. On a Microsoft Customer Agreement, the license count can be reduced only within seven days of buying, renewing or adding licenses, and a later reduction shows on the first invoice after renewal (Microsoft Learn). Unassigning a license frees it for someone else, and the bill falls only when the count is reduced. GitHub bills a removed seat until the end of the current billing cycle. Claude Enterprise is billed annually with a 20 seat minimum, and OpenAI ties seat changes to the Enterprise agreement, so check the contract before counting a saving.
Example: idle AI seats at a fictional 2,000-person company
In this example, the company and its seat counts are fictional, and prices are the list prices in the table above. The company holds 800 Microsoft 365 Copilot seats, 300 GitHub Copilot Business seats and 250 Claude Enterprise seats. In the 30 days before the review, 120 Microsoft, 30 GitHub and 40 Claude seats show no activity. ChatGPT Enterprise is left out because OpenAI publishes no list price.
At list price, the idle seats in the example cost:
- Microsoft 365 Copilot: 120 × $30 = $3,600 a month
- GitHub Copilot Business: 30 × $19 = $570 a month
- Claude Enterprise: 40 × $20 = $800 a month
- Total: $4,970 a month, or $4,970 × 12 = $59,640 a year
The review then sorts the 190 idle seats (120 + 30 + 40). In the example, 25 were assigned in the last 30 days or belong to people on leave, and nothing changes. The example assumes 85 belong to claims processors and financial analysts, roles where the company’s task data shows much of the work suits AI, and those holders are offered training. It assumes the last 80 belong to field service technicians, where little of the work suits AI. After asking each holder, the company takes back 60 Microsoft, 10 GitHub and 10 Claude seats.
Those seats come to 60 × $30 + 10 × $19 + 10 × $20 = $1,800 + $190 + $200 = $2,190 a month at list price, or $2,190 × 12 = $26,280 a year in seat cost, about 44% of the $59,640 total for all idle seats. The example also assumes a Microsoft Customer Agreement with the seven-day window passed, so the Microsoft share lowers the bill only from renewal, and until then the freed licenses can replace new purchases.
What should you do with an idle seat?
Ask first. A short note to the holder and their manager gives the date of last use and asks whether the seat is still needed. GitHub’s guide gives the same advice: “clearly communicate any further action you will take.”
Check the role before you reclaim
Where little of a role’s work suits AI, a quiet seat is the expected result, and taking it back is reasonable. Amazon’s engineering leadership wrote in an October 27, 2026 memo that when work does not benefit from current AI tools, “that is a finding, not a failing.”
Where much of a role’s work suits AI, the same quiet seat may mean the person has not been shown how the tool fits the job, or that something is in the way. Ask, offer training built on the person’s own tasks and look again in 30 days. Our article on whether AI spend is in the right roles puts this case first in line for training.
O*NET, the US Department of Labor’s catalog of occupations, lists the tasks in each occupation, a starting point for judging a role. JobRoute joins the usage reports of a company’s AI tools to each role’s tasks and output measure and shows paid seats nobody is using, by role and team: see AI spend by role.
Sources and further reading
- Microsoft Copilot usage report (Reports > Usage > Microsoft Copilot > Copilot, Usage tab; per-user Last activity date (UTC) and a last activity date per app; periods from 7 to 180 days; user table covers everyone licensed at any point in the past 180 days; data within 48 hours; user details hidden by default)
- Microsoft 365 admin center usage reports overview (all reports hide user names by default; setting Conceal user, group, and site names in all reports; applies to Graph and Power BI; showing names is logged in the Purview audit log; roles that can view reports)
- reportRoot: getMicrosoft365CopilotUsageUserDetail, Microsoft Graph beta (Last Activity Date and per-app last activity dates; periods D7, D30, D90, D180 and ALL; Reports.Read.All; Microsoft points to the /copilot path going forward)
- Buy or remove licenses for a Microsoft business subscription (on a Microsoft Customer Agreement, licenses can be removed only within seven days of buying or renewing, or of buying more mid-period; later reductions appear on the first invoice after renewal; licenses must be unassigned before the count can be reduced)
- Microsoft 365 Copilot enterprise pricing (Microsoft 365 Copilot add-on: list price $30.00 user/month, paid yearly, annual subscription; a qualifying Microsoft 365 plan is required)
- Reviewing user activity data for GitHub Copilot in your organization (Settings > Copilot > Access; sort users by last use; Activity report as CSV)
- Metrics data properties for GitHub Copilot (last_activity_at: what counts as activity; up to 24 hours to update; IDE telemetry required; set to nil after 90 days with no activity; activity report fields and 30-minute refresh)
- REST API endpoints for Copilot user management (GET /orgs/{org}/copilot/billing/seats with last_activity_at, last_activity_editor and created_at; organization owners only; removed seats lose access at the end of the billing cycle)
- Reminding inactive users to use their GitHub Copilot license (targets users inactive for 30 days or since assignment; remind first; sample message revokes after a further 30 days)
- GitHub Copilot seats and billing cycles for organizations and enterprises (billed per assigned seat; $19 Business and $39 Enterprise per user per month; removed seats billed until the end of the current billing cycle)
- GitHub Copilot plans (list prices: Business $19 per user per month, Enterprise $39 per user per month)
- Workspace analytics for ChatGPT Enterprise and Edu (Admin Console > Usage > Overview > Export > Workspace reports; user report columns is_active, last_day_active_in_period, last_day_active, user_status, seat_type; refresh every 1 to 24 hours, availability target up to 48 hours; viewers: analytics viewer, admin, owner)
- Managing members, workspace roles, and seats in ChatGPT Enterprise and Edu (admins and owners can remove a user; seat changes affect billing under the Enterprise agreement)
- ChatGPT plans and pricing (no ChatGPT Enterprise price published; Enterprise is sold through sales on annual plans)
- Analytics APIs (Claude Enterprise Analytics API: primary owner creates the key; data from January 1, 2026; typically a one-day lag; active user: a chat message, a Claude Code session with tool use or git activity, or a Cowork session with tool use or messages)
- List User Activity, Claude API reference (GET /v1/organizations/analytics/users; date ranges up to 366 days; last_activity_date omitted while last-activity reporting is not enabled for the organization)
- View usage analytics for Team and Enterprise plans (dashboard shows active members and assigned seats; viewers by plan; no per-member last active column described)
- Claude pricing (Claude Enterprise: list price $20 per seat per month, billed annually, 20 seat minimum, plus usage at API rates)
- An update from Amazon engineering leadership on the role of the developer in the age of AI (October 27, 2026: 'that is a finding, not a failing')
- O*NET OnLine (occupations and the task statements for each; sponsored by the US Department of Labor, Employment and Training Administration)
Frequently asked questions
How do I find unused Microsoft 365 Copilot licenses?
In the Microsoft 365 admin center, open Reports, then Usage, then Microsoft Copilot, then Copilot, and select the Usage tab. The per-user table has a Last activity date (UTC) column and a date column for each app, and it includes people licensed in the past 180 days who never used Copilot or whose license was later removed. User names are hidden by default. A Global Administrator can show them by clearing Conceal user, group, and site names in all reports under Org Settings.
How do I see when a GitHub Copilot seat was last used?
Organization owners can open Settings, then Copilot, then Access, and sort users by when they last used Copilot, or download the Activity report as a CSV file. The seats API returns last_activity_at for every seat. According to GitHub's documentation, read on November 13, 2026, updates can take up to 24 hours, use in an editor appears only when the person has telemetry turned on, and the date is cleared after 90 days with no activity.
Where does ChatGPT Enterprise show the last time a user was active?
In the user report export. In the Admin Console, open Usage, then Overview, select Export and then Workspace reports, and choose a date range. Each row includes is_active, last_day_active_in_period and last_day_active, which OpenAI defines as the last day the user was active in this or any prior period. Owners, admins and analytics viewers can open it. OpenAI's help center says data refreshes every 1 to 24 hours and does not say how far back it goes.
Does Claude Enterprise show when each member last used Claude?
Through the Claude Enterprise Analytics API. Its user activity endpoint returns daily counts for each member from January 1, 2026, plus a last_activity_date field that Anthropic's reference says is omitted while last-activity reporting is not enabled for the organization. Only the primary owner can create the API key. The analytics dashboard shows active members against assigned seats, and Anthropic's help article does not describe a last active column for each member.
How many days without use should make an AI license count as unused?
Thirty days is a workable line for flagging a seat, followed by a reminder and a further 30 days before the seat is taken back. GitHub's own guide to inactive users follows that pattern. Thirty days spans most monthly cycles of work, and where work runs on a longer cycle the window can be set to match. Leave out seats assigned in the last 30 days and people on leave, and allow two days for the reports to catch up.
Should a company cancel every AI seat nobody is using?
No. Ask the holder first, then check the role. If little of the role's work suits AI, taking the seat back is reasonable. If much of the work suits AI, the idle seat may mean the person has not been shown how to use it, so ask what is in the way and offer training first. Billing terms matter too: on a Microsoft Customer Agreement, the license count can be reduced only within seven days of buying, renewing or adding licenses.