Troubleshooting: Control 1.3 - SharePoint Content Governance and Permissions
Last Updated: April 2026 Audience: SharePoint Admin, AI Governance Lead, Service Desk Tier 2/3
Quick reference
| Issue | Likely cause | Fix |
|---|---|---|
| Agent or Copilot returns content the user shouldn't see | Everyone / Everyone except external users claim still on site; site is in Restricted SharePoint Search allow-list; container label not applied |
Remove broad claims (PowerShell §3); review allow-list; apply container label |
| Authorized user gets "no information found" from agent | Service / user account not in RAC group; site under RCD with no direct grant; sensitivity label blocks unmanaged-device access | Add user to RAC group; grant direct access; verify device compliance |
| Container label not appearing on site | Label policy not published to user's audience; site is non-group-connected; group already has a different assigned label | Publish policy to label-creator audience; convert site to group-connected or apply via UI; clear existing assigned label |
External sharing still possible despite tenant Disabled |
Site-level setting more permissive (sites can be more restrictive than tenant, never more permissive — check for older site that retained value before tenant tightened) | Re-apply Set-SPOSite -SharingCapability Disabled; verify no scripts reset values |
| RAC blocks legitimate Power Automate / agent service flows | Service account / managed identity not in RAC group | Add the service identity to the bound RAC group; never disable RAC as a workaround |
| RCD not suppressing content from Copilot | Propagation delay; user has direct access via another path; RCD applied to wrong site | Wait up to 24h; confirm via Get-SPOSite -Detailed; check user's effective permissions |
Set-SPOSite -RestrictedAccessControl parameter not found |
Module version too old or sovereign cloud lacks the surface | Pin newer SPO Management Shell; use the SharePoint admin center flyout as fallback |
| Access review not sending notifications | Reviewers have no mailbox / are guest accounts; mail-flow restricted; review still queued | Confirm reviewers are licensed; check Exchange Online flow; wait for cycle start |
| DAG report shows broad sharing on a site you remediated | Report is cached/scheduled, not real-time | Force re-run from the report page; expect 24–48h refresh |
| Restricted SharePoint Search blocks Copilot for sanctioned sites | Site missing from the allow-list (max 100) | Add site or, better, complete RAC/RCD remediation and disable Restricted SharePoint Search |
Remove-SPOUser fails with "user does not exist" for Everyone except external users |
LoginName claim format is tenant-specific (spo-grid-all-users/<tenant>) |
Use Get-SPOUser -Site $url \| Where-Object LoginName -like '*spo-grid-all-users*' to discover the exact claim |
Issue: Microsoft 365 Copilot or a Copilot Studio agent returns content the user should not see
Symptoms
- A user prompts Copilot or an agent and receives text quoting documents from a site that should be invisible to that user.
- DAG report or audit log shows the site as broadly shared.
Likely causes
- The site still has
Everyone except external users(spo-grid-all-users) on a SharePoint group. - Microsoft 365 Copilot grounding pulled the content via the user's existing direct or transitive permissions (Copilot does not bypass permissions, but it surfaces anything the user already has rights to).
- The site is in the Restricted SharePoint Search allow-list inadvertently.
- RCD was expected but never enabled on the site.
Diagnostic steps
- Identify the source URL of the surfaced content — Copilot citations include the file path. Open the site in an InPrivate session as the test user.
- Inventory the user's effective permission to that site:
- Check RCD and RAC state:
- Confirm whether the site is in the Restricted SharePoint Search allow-list:
Fix
- Remove the broad claim using the
Remove-BroadClaimfunction inpowershell-setup.md§3. - If the site is Zone 3, enable RAC (binding to a named group) and RCD.
- Remove the site from Restricted SharePoint Search if it was added in error.
- After remediation, re-run Test 6 in
verification-testing.mdwith the same prompt and capture evidence of the corrected behavior.
Issue: Authorized user / agent service account cannot retrieve content
Symptoms
- A user who legitimately needs access reports "I don't have access" or the agent returns "no information found" for valid content.
- A Power Automate flow / agent service identity returns 401/403 against a site.
Likely causes
- Restricted Access Control is enabled on the site and the user / service identity is not in the bound group.
- Restricted Content Discovery is enabled and the user has no direct grant (RCD doesn't block access, but if there was no direct grant the user never had access in the first place).
- The container sensitivity label has Block access from unmanaged devices enabled and the device is not Intune-compliant.
- A Conditional Access policy is blocking the service principal.
Diagnostic steps
- Confirm RAC binding:
- Check the user's effective permissions:
- SharePoint admin center → site → Site permissions → Check permissions for the user.
- Check the container label's protection settings in Purview → Information protection → Labels → select label → Edit → Site & group settings.
- Check Entra sign-in logs for the user / service principal to identify any Conditional Access block.
Fix
- Add the user (or service identity) to the RAC-bound group.
- If the device-compliance label setting is the cause, either issue a managed device or relax the label to
Allow limited, web-only accessfor Zone 2 use cases. - For service principals, use a Conditional Access exclusion specifically scoped to that workload identity (do not exclude the entire app).
Issue: Container sensitivity label not appearing on a site
Symptoms
- The sensitivity dropdown in the SharePoint admin center → site Settings flyout doesn't show the desired label.
Get-SPOSite -Detailedreturns a blankSensitivityLabel.- A Graph
PATCH /groups/{id}withassignedLabelsreturns 400 or 403.
Likely causes
- The label policy is not published to an audience that includes the user attempting to apply it.
- The site is not group-connected (classic site, communication site without group). Container labels require an associated Microsoft 365 group or Entra security identity.
- The group already has an
assignedLabelsvalue and the new value conflicts with policy assignment rules. - The label is not configured for Groups & sites scope.
Diagnostic steps
- In Purview → Information protection → Label policies, confirm the policy that publishes the label includes the admin user's account in its scope.
- Check the label scope in Purview → Labels → open label → confirm
Groups & sitesis enabled. - Inspect the site:
Fix
- Re-publish the label policy with the correct audience; allow up to 24 hours for propagation.
- For non-group sites, either convert to a group-connected site (preferred for Zone 3) or apply the label exclusively at the file/library level via DLP / default library label.
- Clear existing
assignedLabelsvia Graph before applying a new one if a conflict exists.
Issue: External sharing still works despite tenant settings
Symptoms
- A user successfully shares a document externally even though tenant
SharingCapability = Disabled.
Likely causes
- The site-level
SharingCapabilitywas set to a more permissive value before the tenant was tightened, and SharePoint preserves the lesser of the two — but only when the tenant value is more permissive than the site. If a site showsSharingCapability=Disabledafter tightening, it is correctly blocked. If it still shows a more permissive value, the tenant change did not propagate or the site was excluded. - The user is a Site Collection Admin and bypassed standard sharing UI via API.
- A tenant-level B2B Direct Connect policy or cross-tenant access policy is permitting the share through Teams shared channels rather than SharePoint sharing.
Diagnostic steps
$tenant = Get-SPOTenant
$site = Get-SPOSite -Identity $SiteUrl -Detailed
"Tenant: $($tenant.SharingCapability) | Site: $($site.SharingCapability)"
Get-SPOSite -Identity $SiteUrl -Detailed | Select Url, AllowDownloadingNonWebViewableFiles, ConditionalAccessPolicy
SharingInvitationCreated and SharingSet operations on the document to identify the actual sharing path.
Fix
- Re-apply the desired site-level
SharingCapability: - Audit Site Collection Admins; remove non-admin users from that role.
- If sharing is occurring via Teams shared channels, address at the Entra cross-tenant access policy level; SharePoint sharing controls do not govern Teams shared channels.
Issue: Set-SPOSite -RestrictedAccessControl or RAC cmdlet not available
Symptoms
- PowerShell error:
A parameter cannot be found that matches parameter name 'RestrictedAccessControl'.
Likely causes
- The pinned
Microsoft.Online.SharePoint.PowerShellversion predates the RAC GA cmdlet surface. - SharePoint Advanced Management is not licensed in the tenant.
- The site is not eligible for RAC (must be group-connected with stable membership).
Fix
- Upgrade to a CAB-approved version of SPO Management Shell that exposes the RAC parameter:
- Verify SAM licensing in the Microsoft 365 admin center → Billing → Licenses. SAM ships with Microsoft 365 Copilot or as a standalone SKU.
- If the site is non-group-connected, fall back to the SharePoint admin center flyout UI (which uses the same back-end API but accepts a wider input set) or convert the site to a group-connected site.
Issue: Restricted Content Discovery does not suppress content from Copilot
Symptoms
- After enabling RCD, Microsoft 365 Copilot still returns content from the site for users who have direct access.
Cause
RCD suppresses sites from organization-wide search and Copilot grounding for users who do not have direct permission. Users with direct site permission can still ground Copilot against that site — that is by design. RCD is the wrong control for "I want to hide this site from its own members". For that scenario, use RAC or remove user permissions.
Fix
- Inventory who has direct access to the site:
- If the goal is to remove the site from Copilot grounding for everyone, also enable RAC bound to a small named group and remove the broader grants.
- Allow up to 24 hours for search-index changes to propagate after permission changes.
Issue: Access review not sending notifications or never completing
Symptoms
- Reviewers report no email; review status remains
In progressafter the duration window.
Likely causes
- Reviewer is a guest or service account without a mailbox.
- Reviewer mailbox is on litigation hold but unlicensed for Exchange Online.
- The review was created against a dynamic group that has no current members.
- Mail-flow rules (Exchange Online transport rules) are quarantining
noreply@accesscontrol.windows.netnotifications.
Diagnostic steps
- Entra admin center → Identity Governance → Access reviews → Reviews → open the instance → History tab — review the per-user notification status.
- Confirm reviewer licensing:
- Run an Exchange Online message trace for the reviewer.
Fix
- Replace mailbox-less reviewers with a governance group whose members are all licensed users.
- Adjust transport rules to allow Microsoft notification senders.
- Add a backup reviewer (typically the AI Governance Lead) on the access review definition.
How to confirm the configuration is active end-to-end
Via portal
- SharePoint admin center → Policies → Sharing — verify tenant baseline.
- SharePoint admin center → Active sites → select site → Settings flyout — verify Sensitivity, RAC, RCD.
- Microsoft Purview → Data Loss Prevention → confirm
FSI-DLP-SharePoint-AgentGroundingis inEnforce. - Microsoft Entra → Identity Governance → Access reviews — confirm cycle status.
Via PowerShell
$Url = 'https://contoso.sharepoint.com/sites/Agent-CustomerService'
$tenant = Get-SPOTenant
$site = Get-SPOSite -Identity $Url -Detailed
$broad = Get-SPOUser -Site $Url -Limit All | Where-Object LoginName -match 'spo-grid-all-users|^c:0\(\.s\|true$'
[PSCustomObject]@{
Url = $Url
TenantSharingCapability = $tenant.SharingCapability
SiteSharingCapability = $site.SharingCapability
SiteSensitivityLabel = $site.SensitivityLabel
RestrictedAccessControl = $site.RestrictedAccessControl
RestrictContentOrgWideSearch = $site.RestrictContentOrgWideSearch
BroadClaimCount = ($broad | Measure-Object).Count
} | Format-List
A healthy Zone 3 site returns: tenant Disabled, site Disabled, label set, RestrictedAccessControl=$true, RestrictContentOrgWideSearch=$true, BroadClaimCount=0.
Escalation path
- SharePoint Admin — site configuration, sharing, RAC/RCD, DAG reports.
- Purview Info Protection Admin — sensitivity label authoring and policy publication.
- Purview Compliance Admin — DLP policy authoring and incident triage.
- Entra Identity Governance Admin — access review configuration and notification flow.
- AI Governance Lead — agent grounding inventory disputes; sanctioned-source decisions.
- Compliance Officer — regulatory interpretation, evidence sufficiency for FINRA / SEC examinations.
- Microsoft Support — platform bugs, RAC API regressions, SAM licensing issues.
Back to Control 1.3 | Portal Walkthrough | PowerShell Setup | Verification Testing
Updated: April 2026 | Version: v1.4.0