What it observes

The surfaces by which executable content or customization can reach a page on one site.

Bash
m365-governance collect customization \
  --client-id <id> \
  --site-url https://<tenant>.sharepoint.com/sites/<site> \
  --output ./evidence/customization/
ModeCustomization
Needs--site-url
Profiledefault
Produces findingsNo
Consumed byAny viewer. No rule reads it.

What it reads

FactWhat it is
custom_scriptDenyAddAndCustomizePages, where a tenant-scoped read was made
add_and_customize_pages_heldWhether the running identity holds the permission the setting operates through
site_pages_featureWhether the Site Pages web feature is present
site_pages_libraryWhether the Site Pages library is readable
site_pages_unique_permissionsWhether that library carries unique permissions

The count of items in the library is not repeated here. modernity owns it.

One question, and a wider one it refuses

It answers what customization and page-execution control surfaces are observable on this site. It does not answer is this site safe, and it does not answer can no interactive content run here.

Both are wider than these facts carry. The second is the reading that blocking custom script exists to refuse: the setting stops nine file extensions from reaching a library, and .html is not among them.

Four surfaces, and this collects one

  • Configuration is here: the custom script setting and the permission it operates through.
  • Content is the Site Pages library, whose count modernity owns.
  • The administrative execution path is SPFx and the app catalog, which spfx owns.
  • Browser runtime policy: content security policy and strict file handling, is read by nothing in this engine.

They are different questions with different answers. Concluding one from another is how a reader ends up believing a site is inert because a setting with a narrow mechanism is switched off.

Why there is no rule

Microsoft documents each of these controls as reaching less than its name suggests, and in two cases prints the limit itself. Blocking custom script stops nine extensions. Preventing modern page creation hides the entry points, and Microsoft states two lines later that users can still add pages from other modern pages or from web parts.

A rule reading custom script: blocked as a pass would publish the conclusion the article refuses, with a rule identifier next to it. The facts are worth collecting long before anybody is entitled to conclude from them.

What the Engine publishes

Generated from the Engine's capability manifest at1.0.0b6@5b705f708e5c. No value on this panel is maintained by this site.

Answers
the surfaces by which executable content or customization can reach a page on one site
Collector
PnP PowerShell · mode Customization
Reads
  • Get-PnPWeb -Includes EffectiveBasePermissions
  • Get-PnPFeature -Scope Web
  • Get-PnPList -Identity SitePages
Least privilege
  • Sites.Read.All
Produces
sharepoint ·site
Proven against a tenant
not live-validated

Rules that decide from it

No rule reads this evidence, and that is a recorded decision rather than a gap: the customization surfaces 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.