Agents are users too. Separate the five decisions that govern an agent's access, know its identity, keep the two billing units apart, and reconcile analytics before you compare: usage is never proof of value.
What you'll learn
Separate the five governance decisions: maker sharing, approval, catalog availability, agent access, and content permissions
Know why a passing agent test doesn't justify a broad source scope
Tell an agent service principal, a blueprint, and a blueprint credential apart
Keep the billable-message meter and Copilot Credit estimates as separate units
Reconcile analytics by scope before comparing, and read usage as adoption, not value
Your team publishes a procurement agent after it answers four prepared questions correctly. The tests look clean. The source scope does not. It includes the entire procurement site and a folder of draft contracts. Spending is charged to an unnamed billing policy, while the only success measure is a usage count. Good answers can coexist with excessive access, incorrect billing, and no evidence of value. Treat the agent as the user it effectively is.
Review four questions independently: who can reach it, which identity acts, how cost is measured, and what the activity shows. A passing test still needs approval. A successful sign-in still needs authorization evidence. The two billing units carry different meanings. Usage becomes value evidence only when a measured outcome supports that claim.
Five separate governance decisions
The most common agent mistake is collapsing five separate governance decisions into a single "it's shared." They're independent, and each one leaves the others unanswered:
Maker sharing is the audience the maker picks in Agent Builder: Only you, Specific users, or Anyone in your organization.
Catalog availability is whether an admin makes the agent discoverable through organizational agent or app management.
Approval is whether a reviewer accepted its purpose, owner, audience, sources, and test evidence.
Agent access is whether a particular person can open and use it.
Content permissions cover whether those people can read the SharePoint sources it draws on.
The last two controls cause the most confusion. A person may be allowed to open an agent without having permission to read its SharePoint sources. Sharing the agent does not change those source permissions. If a pilot user cannot retrieve a source, correct the permission or narrow the audience. Widening the site creates a larger access problem.
Approval records a decision about the agent's purpose, owner, audience, sources, and tested behavior. It is not a quality warranty. Reviewers should return an agent whose source scope is broader than its purpose even after prepared tests pass. Those tests sample behavior. They cannot make unrelated draft contracts appropriate source material.
A passing test doesn't justify a broad source
Four green tests prove the agent answered those four questions well. They don't prove that unrelated content in its source scope can't surface in a later conversation. When the source is broader than the stated purpose, narrow it to the approved library, re-run every test, and verify agent access and content permissions separately. Broadening a site is never the fix for an access gap.
Build the agent approval record· copilot-chat
Bad example
Turn this agent request into an approval record and say whether we should approve it.
Good example
Turn this agent request into an approval record with separate fields: agent name and type, owner, purpose, exact sources, intended audience, maker sharing, catalog availability, agent access checked, content permissions checked, test evidence (positive / unsupported / override / conflict), approval decision, and next review date. Flag any case where the source scope is broader than the stated purpose. Request: [paste the agent details]. If a field is absent, write "MISSING EVIDENCE". Don't infer that sharing equals approval or that a test proves the source scope is right.
Why this works: A record where all five control decisions sit in separate fields, with an explicit flag when the source scope exceeds the purpose.
Who is the agent?
When an agent acts, an identity is behind it, and Microsoft Entra Agent ID makes that identity a first-class object you can govern. Three objects get conflated, so keep them straight. The agent service principal is the single-tenant identity (with an agent subtype) you record when reviewing sign-in and access. An agent identity blueprint is an application-level construct that creates one or more of those service principals, holds credentials, and requires a sponsor. A managed identity can serve as the blueprint's credential. It is not another name for the agent's own identity.
The identity answers "who made this request?" The downstream resource still decides which operation is allowed. A successful sign-in never proves the business operation succeeded, so correlate the identity evidence with the resource result before calling a test a pass.
Platform governance sits alongside identity. In Copilot Studio, data policies sort every connector into one of three documented groups: Business, Non-business, or Blocked, and a pre-publish security scan surfaces a maker-facing warning. The evidence discipline reappears here as a three-way verdict: Pass, Fail, or Inconclusive. If you test a connection you intend to block and the agent refuses while the destination stays empty, that's inconclusive, a different verdict than a pass: a refusal plus an empty sink doesn't prove the named connection was even attempted, so withhold publication until the evidence is sufficient.
A second distinction changes the risk question: how an agent works. An agent can act on a user's behalf with delegated access, or behind the scenes with its own access, and those ask different things. Delegated access asks whether the user, the agent, and the requested action all aligned with the approved purpose. Own access asks whether the agent's identity, its accountable owner, and its granted permissions do. An agent that joins a team workflow counts as own access, and that category is documented as public preview, so record it as own access with the preview noted rather than inventing a tidier label for it.
Agent 365 is a control plane, and monitoring is a signal
Microsoft Agent 365 governs the whole agent fleet across three pillars (Observe, Govern, Secure), routing identity questions to Entra, data protection to Purview, and threat detection to Defender. Treat its monitoring as a review signal. High activity doesn't prove value, and no activity doesn't prove an agent is safe to delete. Every unusual number is an observation that earns a next check before you draw any conclusion.
Turn fleet monitoring into a review queue· copilot-chat
Bad example
Review these agent fleet records and tell me which agents need attention or should be removed.
Good example
Using only these agent fleet records, return one row per agent with: evidence observed, review priority (High/Medium/Low), reason, missing fact, and one next check. Treat repeated failures or denied actions as High priority and unknown ownership plus prolonged inactivity as Medium. Do not infer causes, permissions, value, or lifecycle state. Write "Not provided" for any missing fact, and never recommend deletion from inactivity alone. Records: [paste your fleet monitoring rows].
Why this works: A triage queue that separates what was observed from what it might mean, and turns every gap into a next check rather than a conclusion.
Two billing units that must never be added
Agents cost money, and the fastest way to produce a wrong forecast is to mix two units that only look alike. Pay-as-you-go connects eligible usage to an Azure subscription and resource group, and it's measured two different ways. A billable message is the meter unit: the documented Copilot Studio rate is $0.01 per billable message. A Copilot Credit is a feature-level consumption unit: a generative answer is 2 Credits, an agent action is 5, tenant-graph grounding is 10, and standard tools run 15 Credits per 10 responses. These are not two prices for the same request. One message does not equal one Credit, and the two forecasts stay in separate rows.
The "about $0.01 per Credit" figure is a labeled planning estimate derived from an annual pre-purchase example, leaving the Credit-to-message equivalence unproven. Replace it with your tenant's actual terms and observed Azure costs before any purchasing decision. Two more honest limits: a tenant can hold up to 50 billing policies, and crossing a policy's budget triggers an alert while spending can continue. Pair the threshold with an investigation and an authorized response. Also remember that disabling billing can take up to two hours and can make associated agents unavailable. Setting any of this up needs a documented role: Billing Administrator, AI Administrator, or Global Administrator.
Reconcile before you compare· copilot-chat
Bad example
Compare these two Copilot dashboard values and explain the difference.
Good example
I'm comparing two Copilot analytics values for the same 28-day window. The Copilot Dashboard shows 12,600 Credits (pilot policy, delegated viewer). The Consumption Dashboard shows 13,200 Credits (all policies, Global Administrator). Before treating these as comparable, walk the six reconciliation checks: window, product population, organizational scope, spending-policy scope, viewer role, and metric definition. Label the comparison RECONCILED or UNRECONCILED with the reason. Do not average, subtract, or trend an unreconciled pair.
Why this works: An UNRECONCILED verdict because the spending-policy scopes differ, with both numbers preserved for their own scope instead of blended into a misleading average.
Usage is not value
Copilot Analytics is five distinct tools (the readiness and adoption report, the Copilot Dashboard, the Agent Dashboard, the Consumption Dashboard, and Advanced Reporting), and their measures aren't automatically comparable just because two labels look alike. Before you compare any two values, reconcile them on six axes: window, population, organizational scope, spending-policy scope, viewer role, and metric definition. If any answer is unknown, the pair is UNRECONCILED: don't average it, subtract it, or draw a trend from it. Similar names hide different populations (the Microsoft 365 Copilot usage report and the Microsoft Copilot usage report are separate rows), and intensity bands don't sum unless the report says they're mutually exclusive.
The deepest habit here is refusing to read adoption as impact. Assigned licenses don't prove adoption. Agent responses don't prove useful outcomes. High consumption doesn't prove value. Real value work keeps three evidence layers apart: usage telemetry (did people use it?), employee sentiment (Viva Pulse feeds the Copilot Dashboard Sentiment section, and the Viva Glint Copilot Impact Survey covers productivity, satisfaction, and collaboration), and a business KPI (did the outcome move?), and it declares thresholds before seeing results. When a KPI improves during a pilot that also changed its own process template, the honest language is "associated with," not "caused by." A dashboard alone never establishes causation, and naming that limit is how you keep a governance report trustworthy.
Try it yourself
Forecast an agent pilot two ways
Build both billing estimates for one workload and prove to yourself why they can't be combined.
01
Message-meter workload: 900 billable messages at $0.01 each. Calculate the message-meter estimate.
02
Credit workload: 200 generative answers (2 each), 30 agent actions (5 each), 10 tenant-graph grounding operations (10 each), and 100 standard- tool responses (15 per 10 responses). Total the Credits.
Hint: The standard-tool rate is per 10 responses, so divide before you multiply.
03
Convert the Credit total using the labeled planning estimate of about $0.01 per Credit.
04
Write one sentence explaining why the $9.00 and the roughly $8.00 are not two prices for the same work and must stay in separate rows.
A $9.00 message-meter estimate and an 800-Credit (about $8.00) plan kept deliberately separate: the same two-unit discipline from the lesson, now with real numbers.
Key takeaways
Maker sharing, catalog availability, approval, agent access, and content permissions are five separate decisions. Access to an agent is never access to its data.
Return an agent whose source scope is broader than its purpose, even when its tests pass.
The agent service principal, its blueprint, and a blueprint credential are distinct objects. A sign-in success is not proof the operation succeeded.
The $0.01 billable-message meter and feature-level Copilot Credits are different units that must never be combined.
Reconcile analytics on six axes before comparing, and never read usage or high consumption as proof of value.
Check your understanding
1. Which statement about agent governance is correct?
2. A SharePoint agent is connected to an entire procurement site, including draft contracts, but its four prepared tests all pass. Should you approve it?
3. You forecast an agent's cost. How should the billable-message meter and Copilot Credits relate?
4. You test a connector you intend to block. The agent refuses, the destination stays empty, but nothing shows the named connection was attempted. What's the result?
5. For the same 28-day window, the Copilot Dashboard shows 12,600 Credits (pilot policy) and the Consumption Dashboard shows 13,200 (all policies). How do you record it?
6. A pilot's median process time dropped 20%, but the team also changed its process template mid-pilot. What can you claim?
Frequently asked questions
Terms used in this lesson
agent service principal
The single-tenant Entra identity (with an 'agent' subtype) that represents one AI agent and that you record when reviewing its access and sign-in evidence.
agent identity blueprint
An application-level construct that creates one or more agent service principals, holds credentials, and requires a human sponsor.
Copilot Credit
A feature-level pay-as-you-go consumption unit (for example, 2 for a generative answer), distinct from the $0.01 billable-message meter.
UNRECONCILED
A label for two analytics values whose window, population, scope, policy, viewer, or definition don't yet match, so they must not be averaged or trended.