What it observes
The Copilot agents in one site, and the sources each one declares.
m365-governance collect agents \
--client-id <id> \
--site-url https://<tenant>.sharepoint.com/sites/<site> \
--output ./evidence/agents/| Mode | Agents |
| Needs | --site-url |
| Profile | default |
| Produces findings | No |
| Consumed by | The agent inventory in a report, and any viewer |
The one slice with no rule, declared rather than hidden
The standing rule of this engine is that a collection path no rule can consume
must not exist: a path nobody reads is a maintenance cost with no output.
agents is the single deliberate exception, and it is recorded in the code
rather than smuggled past a test.
Why there is no rule. Microsoft publishes nothing about how many agents an
organisation should have, or where they should live. A threshold would be
invented, and a pass against an invented threshold means nothing. Under the
basis model there is no documented-limit and no documented-guidance to
point at, so no rule can honestly be written.
Why it is still collected. The inventory is worth having. consumed_by
names the consumer explicitly so that "no rule" never reads as "nobody looked".
Why this is readable at all
An agent in SharePoint is a .agent file in the site's Site Assets library.
There is no agent service to call. The file's own definition names every site,
library or item the author told it to read.
The field names come from Microsoft's declarative agent manifest schema 1.8, which is stronger provenance than the module's types alone.
Two documented properties this cannot report
Recorded so nobody reads their absence as their absence from the agent:
search_associated_sites, which makes a source pointed at a hub reach every site associated with it.part_idfor OneNote.
Both are governance relevant. Neither is surfaced by PnP on the source item, so neither is observable from here.
Two things it deliberately does not do
It does not report who may use an agent. That is the file's permissions, a separate read. Answering half of it here would invite the reading that the two halves are one: the file decides who holds the agent, and something else decides who may reach what it points at.
What the Engine publishes
Generated from the Engine's capability manifest at1.0.0b6@b4bf9c325233. No value on this panel is maintained by this site.
- Answers
- the Copilot agents in one site, and the sources each declares
- Collector
- PnP PowerShell · mode
Agents - Reads
Get-PnPWebGet-PnPCopilotAgent
- Least privilege
- not established
No source settles the least privilege for this collector, so the Engine states none. An invented permission would be worse than an admitted gap, because somebody would grant it.
- Produces
sharepoint·site- Proven against a tenant
- live-validated
Rules that decide from it
No rule reads this evidence, and that is a recorded decision rather than a gap: the agent inventory in a report, and any viewer is what consumes it. A threshold invented for a surface Microsoft publishes no position on would make a pass mean nothing.
Contracts it produces
Every collection writes evidence and an account of itself. The manifest publishes no narrower per-capability list, so this states what it does establish rather than guessing at more.