Skip to content

Agent Costs

Sam Betts edited this page Nov 12, 2026 · 23 revisions

In this section: Setup · Power Platform Access · Billing Connection · Import Configuration · Verification and Troubleshooting

Separate preview, since Stable 1856: Copilot credit history (preview) describes the default-off Graph beta connection and daily-history collector added by PR #770 for #769. It does not add these figures to the Agent costs report or change either importer below.

Reports what Microsoft charges you for Copilot Studio agents, and what agent workloads cost in Azure. Both imports are optional and off by default. For how these relate to the other Copilot cost and value figures (Copilot spend, Copilot investment and the credit history preview), see the cost and value map.

Release status: the delegated consumption connection below shipped in Stable build 1852, published on 14 October 2026. Older releases attempt app-only consumption; do not use their refusal as proof that a Reader role was never assigned. Capacity and Azure costs remain separate app-only paths.

Two separate things are imported, from two different Microsoft APIs:

Import Source Answers
Copilot Studio credits Power Platform licensing API Which agent burned Copilot Credits, on which day, doing what — and, where Microsoft reports it, which person
Azure costs Microsoft Cost Management Daily Azure spend for the subscriptions and meters you point it at

Once imported, both appear on the Agent costs page in the portal (Insights → Agent costs).

Since Stable 1857 (PR #787), the ledger the Copilot Studio credits import fills also feeds two further pages, Copilot spend, which shows who consumed credits and when, and Copilot investment, which sets billed Studio credits beside licence cost.

For guided setup, including manual application settings, finding the correct enterprise application Object ID and a rerunnable role-assignment script, see Agent costs setup.

Copilot credit history (preview)

Preview since Stable 1856, off by default. The installer's separate preview switch enables delegated Graph beta collection of per-user/service credits, documented by Microsoft as month-to-date in UTC under the selected service context. It is not the billed Copilot Studio credit feed or an Azure currency charge. Its API and behaviour may change in future builds, and Microsoft does not support the beta API for production applications.

Daily readings are not daily spend. The collector saves balance observations; it must not add them across days. Microsoft documents a current-UTC-month measure, but the payload does not explicitly identify an individual reading's accounting month, and this project's live reset timing remains unverified. A token outage cannot be backfilled as dated Graph balance history; Studio's separate dated ledger can be re-read within its configured window and upstream retention. See what the figures mean, monthly resets and recovery.

Enabling the switch requires Azure Table storage, an administrator holding the existing Portal.Administration app role (PR #784), explicit delegated consent and a connected reader. It does not grant permissions or connect an account automatically. See Copilot credit history (preview) for setup, the separate SQL history migration, collection status, retention and known unproven live-readiness boundaries.


What this can and cannot tell you

Read this before promising anyone a chargeback report.

Question Answer
Which agent cost the most? Yes. Per agent, per environment, per day.
What was it charged for? The billing feature only (for example Generative answer), and the harness that implies. Microsoft's licensing API does not report the AI model, tool, knowledge source or channel, so the portal does not offer them.
Which person spent Copilot Studio credits? In 1852: with a connected billing administrator and See PII for the reader. These are Microsoft's attributed figures, not an allocation of unattributed credits. The page resolves people to their imported UPN where possible.
Which person caused an Azure charge? No, and this can never be added. Azure bills by resource. No Azure billing report — including the full cost export — records who caused a charge.
What did Microsoft Cowork cost? Pay-as-you-go spend only, and only once you separate it. Microsoft documents that Cowork, Copilot Studio and Work IQ API consumption all appear under the one Microsoft Copilot Studio service. See Microsoft Cowork on the Verification and Troubleshooting page.

Per-agent figures are derived from the per-person data. They cover only consumption Microsoft attributes to a person; the capacity tile's tenant total is authoritative. See Connect a billing administrator.

People are matched to your directory automatically. Microsoft's per-user report identifies each person by their Entra object ID (a GUID). The importer matches that against the object ID it already stores for every user it has imported, so the report shows the person's user principal name. Anyone it cannot match — most often somebody deleted from the directory, or created since the last user import — is shown as "Unresolved user" with the raw GUID, and their credits are still counted. Unresolved people are retried automatically on later import cycles, so a new starter normally resolves on the next run without you doing anything. Name resolution uses the same Graph permission the user import already holds — it needs no extra grant. To identify a GUID yourself, look it up in Microsoft Entra ID → Users → search by Object ID. The per-agent "people" counts cannot be added up. In the 1852 import, distinct contributing people are counted per stored agent/day/billing slice. The same person can contribute to several slices or days. The portal shows the maximum, labelled busiest slice, not a unique-person count for the whole period.

Since Stable build 1860 (PR #878): for readers without See PII, the Copilot Studio figures are built only from billed lines that Microsoft reports 5 or more people on. Agents and environments used by fewer people, such as a developer's own environment, are combined into one row with no names or figures, and narrowing to one of them shows Withheld. The page explains that its totals leave those lines out. The capacity tiles and Azure spend are unchanged. See Portal permissions → Small groups withheld from readers without See PII.


Prerequisites

Both imports use the runtime app registration you already created (App registrations setup). Azure costs and Copilot Studio capacity use application authentication. In 1852, all consumption reads require the connected billing administrator; there is no app-only consumption fallback. The installer does not make these extra grants or consent on your behalf:

Import Extra grant needed Who can grant it
Copilot Studio credits Consumption: runtime app's Power Platform API consent and a connected administrator with billing access. Capacity: Power Platform Reader for the runtime service principal (app-only) Power Platform / Entra administrator
Azure costs Cost Management Reader on each scope you want to read Owner / User Access Administrator on that scope (or a billing admin for EA/MCA)

Configuring Power Platform access

An Entra token is not proof of permission to a licensing endpoint. Power Platform has its own role checks, and the capacity, per-agent consumption and per-user consumption routes can accept different identity types.

A refusal can include:

{"code":"ForbiddenAccess","message":"Caller is not an authorized app. Tenant '<your-tenant-id>'."}

For app-only access, Option A is the least-privilege starting point, and it is only needed for the capacity read: Microsoft refuses app-only access to every consumption route, so consumption needs the connected billing administrator. Do not repeatedly recreate assignments or grant broader roles just because a consumption request returns 403.

Configuring Azure Cost Management access

The Azure costs import needs the Cost Management Reader role on each scope it reads, and the AzureCostScopes app setting, which has no default. See Configuring Azure Cost Management access.

Related

The Copilot section

Elsewhere

Start here

Copilot analytics

Using the portal

Install & configure

Beyond Copilot

Operate

Upgrading from an older build

Reference

Project

Clone this wiki locally