Skip to content

Microsoft 365 Copilot connector

The Microsoft 365 Copilot connector reads your tenant’s Copilot licences, who holds them, how each person uses Copilot in each app, and, if you switch it on, every Copilot interaction from the Microsoft Purview audit log. It is read-only: it never changes anything in Microsoft 365.

What it feeds:

  • Finance: one seat per licensed person at the seat price (Microsoft’s list price, $30 per user per month, unless you set yours), licences bought but not assigned, and seats with no Copilot use in 30 days, with what releasing them would save. The seats appear under Costs → Subscriptions and in the spend report.
  • Security and Visibility: each person’s last Copilot use in Word, Excel, PowerPoint, Outlook, Teams and Copilot Chat on their person page, and Microsoft 365 Copilot in the AI inventory, with each app as a related asset. Audit records add whether Copilot used sensitivity-labelled files, whether a policy restricted it, and whether Microsoft flagged a jailbreak or a cross-prompt injection.
  • Compliance: the control check Microsoft 365 Copilot interactions are recorded, the inventory entries, and an m365-copilot section in the evidence package.
Register the app

Follow Register the app to create an Entra app registration.

Grant the permissions for the parts you want

Add only the application permissions in Permissions for each part, then grant admin consent.

Add the connector

Open Connectors (/connectors), choose the project and environment, select Add connector, and choose Microsoft 365 Copilot from the AI spend category. Enter the directory (tenant) id, the application (client) id and the client secret.

Choose the parts and test

Leave Read Copilot usage by app on. Switch on the audit log and interaction history only if you granted their permissions. Select Test: it runs a real sync and shows what it read, or which part failed and why, on the connector card.

  1. In the Microsoft Entra admin center, open Identity → Applications → App registrations → New registration.
  2. Name it, for example Shield360 Copilot reader, choose Accounts in this organizational directory only, and register it. No redirect URI is needed.
  3. On the app’s Overview, copy the Directory (tenant) ID and the Application (client) ID into the connector.

On the app’s Certificates & secrets, select New client secret, choose an expiry, and copy the secret’s Value (not its id) into the connector’s Client secret. Shield360 encrypts it, never shows it again, and reads it at each sync. You can instead keep it in the Vault and name the entry in Client secret from the Vault. When the secret expires, syncs fail with a sign-in error until you add a new one.

Grant application permissions (not delegated) on API permissions → Add a permission. Each part needs only its own:

PartSwitchAPIApplication permission
Licences and who holds themalways onMicrosoft GraphLicenseAssignment.Read.All, User.Read.All
Usage by appRead Copilot usage by app (on by default)Microsoft GraphReports.Read.All
Interactions from the audit logRead Copilot interactions from the audit log (off by default)Office 365 Management APIsActivityFeed.Read
Interaction historyRead Copilot interaction history (off by default)Microsoft GraphAiEnterpriseInteraction.Read.All

ActivityFeed.Read is under APIs my organization uses → Office 365 Management APIs, not under Microsoft Graph.

Application permissions take effect only after an administrator consents. On API permissions, select Grant admin consent for your organisation, or send a Global Administrator or Privileged Role Administrator this link, with your tenant and client ids:

https://login.microsoftonline.com/{tenant-id}/adminconsent?client_id={client-id}

Microsoft then redirects to the app’s redirect URI. If the app has none, the consent is still recorded; check API permissions shows a green tick for each permission.

Each licensed person is one seat at the seat price. Leave it blank to use Microsoft’s list price of $30 per user per month; Shield360 labels figures built from it as list price. Set your negotiated price to match your invoice, which is the authority. Licences bought but not assigned to anyone are costed at the same price and shown as unassigned.

The connector reads Microsoft Graph’s Copilot usage report, getMicrosoft365CopilotUsageUserDetail, from the /copilot/reports path. For each licensed person it gives the last day they used Copilot in Word, Excel, PowerPoint, Outlook, Teams, OneNote, Loop and Copilot Chat. Shield360 keeps that last day per app; a seat with no use in 30 days counts as idle.

The report covers people with a Microsoft 365 Copilot licence only; unlicensed Copilot Chat use appears only in the audit log.

With this switch on, each sync reads CopilotInteraction records (record type 261) from the Microsoft Purview audit log through the Office 365 Management Activity API, content type Audit.General. The first sync starts the tenant’s Audit.General subscription if it is not already on; Microsoft can take up to 12 hours to make the first records available.

Shield360 keeps, per interaction: who, when, which app hosted it, how many prompts and responses, how many files and items Copilot read, the ids of any sensitivity labels on them, whether a policy restricted access, whether the web was searched, the model provider where Microsoft names one, and Microsoft’s jailbreak and cross-prompt-injection flags. It never keeps file names, site URLs, context ids or plugin names, which Microsoft’s schema marks as personal data.

The API keeps content for seven days, and each sync continues from where the last one stopped, so a connector that syncs at least daily misses nothing. Auditing must be on for the tenant (it is by default with Audit Standard).

With this switch on, each sync reads the Copilot interaction export API, getAllEnterpriseInteractions, for each licensed person since the last sync, and keeps each prompt and response’s app, type and time. Microsoft requires each person read to hold a Microsoft 365 Copilot licence. Up to 500 people are read per sync.

Off by default. Shield360 keeps metadata only unless your organisation opts in here, in line with keeping nothing sensitive by default. With it on (and interaction history on), each prompt and response’s text is kept, truncated to 4,000 characters and encrypted at rest. Turn it on only where your policy and your people’s notice cover it.

People the connector finds among your tenant’s own Copilot licence holders are your directory’s people: they are kept by user principal name and tied to the person page the directory connector maps them to. Anyone else a record names, such as a guest or someone on another domain, is kept as AI account identity keeps a personal account: a masked form and a keyed hash, in full only if your organisation keeps personal emails. If Capture AI account emails is off, only the keyed hash is kept for anyone.

Both tables are included in person data exports and erasure.

  • The usage report and the interaction export cover licensed Microsoft 365 Copilot users only.
  • Copilot audit records are part of Audit (Standard); Microsoft retains them for 180 days in Purview, but the Management Activity API serves each for seven days only.
  • The interaction export requires a Microsoft 365 Copilot licence with the Copilot Graph-grounded chat service plan for each person read.
  • Microsoft throttles reports and audit content. Shield360 waits for the time Microsoft asks (Retry-After) and retries; if a part is still throttled, the card names it and the next sync, within the hour, continues from where it stopped.
Message on the connector cardWhat to do
Microsoft sign-in failedCheck the tenant id, client id and that the secret has not expired.
Reading licences … (needs LicenseAssignment.Read.All)Add the permission and grant admin consent.
usage report: … Reports.Read.AllAdd Reports.Read.All and grant consent, or switch usage off.
audit records: … ActivityFeed.ReadAdd the Office 365 Management APIs permission, and check auditing is on.
interaction history: … AiEnterpriseInteraction.Read.AllAdd the permission and grant consent, or switch interaction history off.
Microsoft is throttling requests from this appNothing; the next sync continues. If it persists, sync less often.