Microsoft Graph Permission Lookup Least privilege, without the digging
Sites.ReadWrite.All

Read and write documents and list items across SharePoint sites.

Least-privilege guidance: Use Sites.Selected when app-only access can be limited to named sites.
Implementation playbook

Grant it correctly and verify the token

Microsoft Graph authorizes the endpoint, token type, permission claim, user role, and resource together.

1

Why access still fails

  • The app was granted a permission that does not cover the exact endpoint or method.
  • The token contains delegated scopes when the app needs application roles, or application roles when a signed-in user is required.
  • Consent was not completed, the token was not refreshed, or the signed-in user lacks the required Entra role or license.
  • Tenant-wide application access is broad; selected-site grants are usually safer.
2

Recommended setup

  1. Confirm the exact endpoint and HTTP method, then select Sites.ReadWrite.All only if its Microsoft method documentation lists it.
  2. Choose delegated or application access and confirm this record supports that mode.
  3. Grant admin consent only after the application, publisher, tenant, and requested permission have been reviewed.
  4. Acquire a new token after the permission or consent change; old tokens do not gain new claims.
  5. Retest the smallest read or write operation before expanding the application workflow.
3

Verify

  1. Use Get-MgContext to confirm tenant, account, authentication type, and delegated scopes.
  2. For delegated tokens, verify the scp claim; for app-only tokens, verify the roles claim contains the expected permission.
  3. Confirm the token audience is Microsoft Graph and retry the exact endpoint with a new request ID.
4

Escalate when

  • The endpoint documentation lists this permission, a new token contains the correct claim, and the request still returns 401/403.
  • The same operation works for one identity or tenant but not another after role, license, ownership, and Conditional Access are compared.
  • You can provide the UTC time, sanitized request/response, request ID, tenant/app IDs, token type, and granted permission list.
Inspect the active Graph PowerShell context
Get-MgContext | Select-Object ClientId,TenantId,Account,AuthType,Scopes

Read-only. For app-only access, inspect the access token roles claim as well.

Permission evidence template
Permission: Sites.ReadWrite.All
Access mode: <delegated | application>
Endpoint and method: <GET https://graph.microsoft.com/v1.0/...>
UTC timestamp: <yyyy-mm-dd hh:mm:ssZ>
Request ID: <guid>

Template only. Do not paste access tokens or secrets into tickets.

Permission modes

Delegated
Supported — admin consent required
Application
Supported — admin consent required

Common uses

  • Update SharePoint list items
  • Upload site documents
  • Modify site content
Advertisement