Microsoft Graph Permissions: What Your AI Agents Can Reach

Key Takeaways

Limit AI Agent Permissions: Grant agents only the access required for their tasks, avoiding unnecessary organization-wide permissions.
Review Agent Identities: Understand how agents access company data, including inherited permissions and shared credentials.
Audit Access Regularly: Remove excessive permissions, outdated approvals, and credentials belonging to retired agents.
Prevent Data Oversharing: Restrict broad sharing links, control permission approvals, and assign clear ownership to every agent.

Microsoft Graph gives AI agents access to company data, but not every agent uses the same identity. Copilot works within what the signed-in user can view, so content from a SharePoint site opened to the whole company years ago can surface in a response. App-registered agents can work differently. Granted the Files.Read.All application permission, an agent can read files across SharePoint and OneDrive with no user present.

Microsoft Entra Agent ID adds another layer, since agent identities can receive permissions directly or inherit eligible grants from a blueprint. The same permission name therefore carries different reach, and delegated Files.Read.All stops at the files the signed-in user can open.

What Are Microsoft Graph Permissions?

Microsoft Graph permissions are the privileges an app must be granted before the Microsoft identity platform authorizes it to access data through Microsoft Graph. Each permission controls access to a specific resource type, such as users, groups, files, or mail, and defines which operations the app can perform. Microsoft Entra role-based access control (RBAC) can also grant access, so Graph permissions are not always the only factor in what an app or agent can reach.

Types of Microsoft Graph Permissions

Microsoft Graph supports delegated and app-only access. The permission type determines whether an agent acts within a user’s access rights or independently.

Delegated Permissions

Delegated permissions, also called scopes, let an app act on behalf of a signed-in user. Effective access is the overlap between the app’s granted permissions and the user’s rights. Delegated Mail.Read, for example, allows reading the signed-in user’s mailbox. Users can consent to permissions that don’t require admin consent, subject to tenant policies. All others need administrator approval.

Application Permissions

Application permissions, also called app roles, let an app access Microsoft Graph without a signed-in user. Access follows the permission’s scope rather than a user’s rights. Application Mail.Read, for example, allows reading all organizational mailboxes by default. These permissions require admin consent. For Microsoft Graph application permissions, granting that consent requires at least the Privileged Role Administrator role, or a custom directory role with permission to grant permissions to applications.

Delegated vs. Application Permissions: Key Differences

Category Delegated Permissions Application Permissions
Identity App acting on behalf of a signed-in user App acting independently
Effective Access Intersection of app permissions and user rights Resources covered by the permission
Consent User or administrator, depending on permission and tenant policy Administrator
Mail.Read Reach  Signed-in user’s mailbox All organizational mailboxes by default
Consent Record oAuth2PermissionGrant appRoleAssignment

‍

When to Use Each Permission Type

The right type depends on whether a user is present when the agent runs.

  • Agent Works for a Signed-In User. Use delegated permissions, which Microsoft recommends whenever they meet the app’s requirements.
  • Agent Runs Unattended. Use application permissions for work such as scheduled jobs and background services.

In either case, grant only what the task requires, following the least privilege principle in NIST SP 800-53.

  • User Profiles. An app that reads a user’s profile needs User.Read, not User.ReadWrite.
  • SharePoint. Sites.Selected requires explicit access assignments to selected sites.
  • Mailboxes. Use Exchange Online RBAC for Applications in new configurations, and remove any tenant-wide mail permission granted in Microsoft Entra ID, since an unscoped grant there overrides the Exchange scoping.

Which Identity Does Your AI Agent Use?

An agent’s identity and authentication setup determine whose access it uses and where to look for permission grants. Check these 4 aspects.

  • Copilot and the Signed-In User: Copilot surfaces organizational data the user is authorized to view. Broad SharePoint access can therefore expose content through responses that employees might otherwise never discover.
  • Copilot Studio Agents and Entra Agent ID: New agents receive Entra Agent IDs, with connector scopes attached at publication. These describe connector access rather than raw Graph permissions. Tools configured with maker-provided credentials can retrieve data or perform actions using the maker’s access instead of the user’s.
  • App-Registered Agents and Application Permissions: Custom agents using conventional app service principals can operate unattended with application permissions. These can include high-risk Graph permissions that Microsoft blocks for Entra agent identities.
  • Blueprint Inheritance and Grant Visibility: Agent identities can inherit eligible permissions granted to their blueprint principal. These inherited permissions appear in runtime tokens but not as grants on the individual identity in the Entra admin center or Microsoft Graph.

Where Graph Permission Risk Builds Up

Permission risk grows as agents multiply, their tasks change, and unused access goes unreviewed. OWASP lists excessive permissions as a root cause of excessive agency in LLM applications.

  1. Consent Sprawl Across Agent Deployments: New agents can introduce delegated and application grants. Users can approve some delegated permissions without an admin, subject to tenant policies. Without coordinated reviews, security teams can lose track of who granted access and why.
  2. Broad Scopes Left After the Use Case Changes: Changing an agent’s task doesn’t automatically revoke its permissions. Access approved for a pilot or one-off migration can remain long after the original need ends.
  3. Permissions That Persist After Retirement: Taking an agent out of use doesn’t necessarily remove its underlying grants or credentials. If its identity remains enabled with valid credentials and permissions, it may retain access after the business considers it retired.

High-Risk Microsoft Graph Permissions

Some Graph permissions reach far beyond what most agents need, especially as application permissions. Most carry the .All constraint, though application mail permissions can cover every mailbox by default even without it.

Permission What It Allows (Application) Why It’s High Risk Options to Reduce Access
Files.ReadWrite.All Read, create, update, and delete files in all site collections One grant covers every SharePoint and OneDrive file Sites.Selected or Files.SelectedOperations.Selected
Sites.FullControl.All Full control of all site collections Goes beyond content access to full site control Sites.Selected with a scoped role
Mail.ReadWrite Create, read, update, and delete mail in all mailboxes Tenant-wide by default despite having no .All suffix Mail.Read or Mail.ReadBasic, scoped with RBAC for Applications
Directory.ReadWrite.All Read and write directory data such as users and groups Broad directory changes across users and groups Resource-specific permissions such as Group.ReadWrite.All, GroupMember.ReadWrite.All, or User.ReadUpdate.All
User.ReadWrite.All Create, read, update, and delete users, subject to operation-specific restrictions Can update many properties, including for users in privileged admin roles, though sensitive properties are limited to non-admin and lesser-privileged users User.ReadUpdate.All, User.Create, or User.Read.All
RoleManagement.ReadWrite.Directory Manage directory roles and role membership Lets an app grant privileges to itself, other apps, or any user RoleManagement.Read.Directory when read access is enough
Application.ReadWrite.All Create, read, update, and delete apps and service principals Credential management lets an app act as other apps and use their privileges Application.ReadWrite.OwnedBy, when managing owned apps is sufficient

These options depend on the agent’s task, and they only reduce access once the broader grant is removed.

How to Audit Agent Graph Permissions

An audit has to cover every identity type, including grants that never appear on the agent itself. Work through it in 3 stages.

1. Discover

Start with a full inventory of agents and the grants attached to them.

  • List Agents and Service Principals: Pull every service principal with GET /servicePrincipals, following all result pages, and review agent identities in their own view in the Microsoft Entra admin center. Review blueprint-principal grants alongside each blueprint’s inheritance configuration, since only eligible grants flow to child identities.
  • Pull Delegated and Application Permission Grants: Query /servicePrincipals/{id}/oauth2PermissionGrants for delegated grants and /servicePrincipals/{id}/appRoleAssignments for application grants. Also check /roleManagement/directory/roleAssignments, since apps granted certain directory permissions before December 2020 may still hold the directory roles assigned with them.

2. Assess

With the inventory in hand, measure each agent’s reach against what it does.

  • Flag Tenant-Wide Access: Prioritize application permissions with the .All constraint, application mail permissions, and any directory role assignments.
  • Match Permissions to Agent Purpose: Compare each grant with the agent’s actual task, and use Microsoft Graph activity logs, where enabled, to review API usage. Write access on a read-only agent is a strong candidate for removal.
  • Confirm Agent Ownership and Consent Path: Identify owners or sponsors, distinguish tenant-wide from user-specific delegated consent, and check audit logs for who approved the grants.

3. Remediate

Fix what the assessment surfaces, prioritizing unnecessary access to sensitive resources or privileged actions.

  • Remove Unused Permissions: Delete grants the agent doesn’t use, remove leftover directory roles, and disable or delete identities for retired agents along with their credentials.
  • Use Delegated Access Where Appropriate: Move agents that act for a user to delegated permissions where the design allows, and narrow remaining app-only access with Sites.Selected for SharePoint or RBAC for Applications for Exchange mailboxes.
  • Restrict Consent and Open Sharing Links: Limit user consent to low-risk permissions from verified publishers, since attackers abuse consent prompts to steal application access tokens, and remove unnecessary organization-wide links and broad site access.

Common Microsoft Graph Permission Errors and Troubleshooting

Most Graph authorization failures return a 403, though token, consent, and Conditional Access problems can surface as 401, 400, or Entra AADSTS codes. Check the response body and whether the failure occurred during token acquisition or the Graph request, since the status code alone doesn’t identify the cause.

Error Likely Cause Fix
401 Unauthorized Access token is missing, invalid, or expired Send a valid access token as Authorization: Bearer <token>, ideally acquired with MSAL
403 Forbidden Required permission wasn’t requested or granted Request the least privileged permission listed in the API reference and complete consent
403 Forbidden with permissions in place Token type doesn’t match permission type Use client credentials for application permissions and delegated flows for delegated permissions
403 Forbidden on a delegated call Signed-in user lacks access or a license for the data Check the user’s own rights and licensing
403 Forbidden with a valid token Token was issued for a different API (aud claim mismatch) Request the token for Microsoft Graph
400 interaction_required (token acquisition) or 403 insufficient_claims (Graph request) Conditional Access requires extra claims, such as MFA Handle the claims challenge through MSAL, with interactive authentication where applicable
AADSTS65001 User or administrator hasn’t consented to the app Complete the consent flow or have an admin grant consent
AADSTS90094 Requested permissions need admin consent the user can’t give Have an admin grant consent in the Microsoft Entra admin center
403 ErrorAccessDenied, “Access to OData is disabled” Exchange EWS allow or block policy blocks the app Have an Exchange admin update the allow or block list (changes take time to apply)
403 despite Sites.Selected consent No explicit permission assignment to the target site, or the assigned role doesn’t allow the operation Grant the required role on that site and acquire a token containing the Selected permission
400 with an explicit blocked-permission message Permission is blocked for agent identities Choose a narrower permission that agents can hold
200 OK with null member properties App can’t read some object types in a group or relationship Add the least privileged read permission for those object types, if those properties are required
App reaches mailboxes outside its Exchange scope Unscoped Entra grant still applies alongside RBAC for Applications Remove the corresponding unscoped Entra permission grant after confirming the required scoped RBAC assignment

‍

How Opsin Secures Agent Permissions and Identity

Manual audits capture permissions at a single point in time, whereas agents and their access keep changing. Opsin Security brings each connected agent’s identity, permissions, data access, and original purpose into one continuously updated view. 

  • Agent Identity and Permission Mapping: Opsin normalizes agents from Copilot, Copilot Studio, ChatGPT Enterprise, Claude, and Gemini into a single model. Its agent identity security maps each connected agent to its owner, permissions, and users to show where sensitive data could be exposed.
  • AI Exposure Mapping: Opsin simulates real user queries to find the sensitive data AI tools can surface before employees discover it. An AI risk assessment delivers these exposure paths with a prioritized remediation roadmap within 24 hours.
  • Continuous Access Monitoring: Opsin tracks permission drift, broken inheritance, and open sharing links across Microsoft 365 and Google Workspace. Ongoing oversharing protection keeps that picture current as new files, sites, and agents appear.
  • Risk Graph Prioritization: The Risk Graph weighs an agent’s purpose, identity, data, access, and behavior together, so a sensitive connection alone doesn’t make an agent high risk. With agent runtime security, Opsin compares monitored activity with each agent’s intended purpose and ranks the highest-risk agents with evidence and root cause.
  • Root-Cause Remediation: Teams can quarantine an agent, block an action, or remove excessive access at the source, which can reduce exposure for other agents sharing that access path. Through AI agent governance, Opsin routes each finding to the person who built the agent, along with the specific change required. 

Conclusion

An agent can stay within its Microsoft Graph permissions and still reach data its task never required. For every agent, security teams should be able to explain whose identity it uses, what access it has, and why that access is necessary. That includes inherited blueprint grants and maker-provided connections that a permission list alone can miss.

Opsin connects identity, access, purpose, and behavior to help teams prioritize those reviews as agents change. The goal is to give agents enough access to do their jobs and to catch the point where that access stops serving their purpose.

Table of Contents
Frequently Asked Questions

Can an AI agent access Microsoft 365 data that its users cannot see?

Plus and minus symbol icon to expand or collapse

Yes, an AI agent using application permissions can access Microsoft 365 resources beyond an individual user's rights, depending on its granted permissions and resource-level restrictions.

  • Identify the authentication model: Determine whether each agent uses delegated permissions or application permissions.
  • Test effective access: Use a non-privileged test account to compare what a user can retrieve directly with what the agent can access.
  • Review sensitive resources: Prioritize SharePoint sites, OneDrive files, and Exchange mailboxes containing confidential information.

For additional guidance on preventing unintended data exposure, explore Microsoft Copilot security.

Does granting Microsoft Graph admin consent make an AI agent secure?

Plus and minus symbol icon to expand or collapse

No, administrator consent authorizes requested permissions but does not guarantee that those permissions are necessary, appropriately scoped, or safe over time.

  • Review before approval: Require a documented business purpose and technical justification for each requested permission.
  • Separate access types: Evaluate delegated and application permissions independently because their effective reach differs.
  • Schedule access reviews: Reassess permissions whenever an agent's owner, task, or connected resources change.

Learn how to establish ongoing oversight through AI governance.

How can security teams detect hidden Microsoft Graph permissions inherited by Entra agent identities?

Plus and minus symbol icon to expand or collapse

Security teams can identify inherited access by correlating agent identities with their blueprint principals, eligible permission grants, and inheritance configurations.

  • Map identity relationships: Maintain a record linking each agent identity to its blueprint principal.
  • Inspect inherited grants: Compare blueprint permissions and inheritance settings against permissions represented in agent runtime tokens.
  • Validate effective access: Test representative Graph operations using the agent's actual authentication context.
  • Monitor configuration changes: Flag new blueprint grants or inheritance changes that expand access without modifying the individual agent.

Explore how agent identity security helps organizations understand agent ownership, permissions, and exposure.

How can organizations prevent permission drift across hundreds of AI agents?

Plus and minus symbol icon to expand or collapse

Organizations can reduce permission drift by continuously comparing each agent's effective access against its approved purpose and expected operations.

  • Establish permission baselines: Define approved Graph permissions, resources, and operations for each agent use case.
  • Automate change detection: Monitor application grants, delegated consent, directory role assignments, and scoped resource permissions.
  • Correlate access with activity: Use available Graph activity logs to identify permissions that are unused or inconsistent with the agent's responsibilities.
  • Trigger targeted remediation: Investigate unexpected privilege increases and revoke unnecessary grants after confirming operational dependencies.

See how an actionable agent governance framework can support consistent controls across growing agent deployments.

How does Opsin help security teams prioritize AI agents with excessive Microsoft Graph permissions?

Plus and minus symbol icon to expand or collapse

Opsin helps teams prioritize agent risk by connecting permissions with agent identity, intended purpose, sensitive data exposure, and observed behavior rather than treating every broad permission as equally dangerous.

  • Build contextual visibility: Map connected agents to their owners, accessible resources, and intended business functions.
  • Identify meaningful exposure: Examine whether an agent's permissions create paths to sensitive information outside its operational requirements.
  • Prioritize investigation: Focus on agents whose access and activity present the greatest potential business impact.
  • Support targeted response: Use evidence and root-cause context to determine which permissions or access paths require remediation.

Discover how the Opsin platform brings together the context needed to assess and prioritize enterprise AI risks.

About the Author
LinkedIn Bio >
Itamar Fayler
Itamar Fayler is a Founding Member of Technical Staff at Opsin, where he works across engineering, product, strategy, and research to secure enterprise AI deployments. Previously an AI Technical Lead at Qualia, where he helped scale the product from concept to multi-million dollar ARR, Itamar holds a B.S. in Computer Science and Economics from Yale University.
LinkedIn Bio >
Itamar Fayler

Microsoft Graph Permissions: What Your AI Agents Can Reach

Microsoft Graph gives AI agents access to company data, but not every agent uses the same identity. Copilot works within what the signed-in user can view, so content from a SharePoint site opened to the whole company years ago can surface in a response. App-registered agents can work differently. Granted the Files.Read.All application permission, an agent can read files across SharePoint and OneDrive with no user present.

Microsoft Entra Agent ID adds another layer, since agent identities can receive permissions directly or inherit eligible grants from a blueprint. The same permission name therefore carries different reach, and delegated Files.Read.All stops at the files the signed-in user can open.

What Are Microsoft Graph Permissions?

Microsoft Graph permissions are the privileges an app must be granted before the Microsoft identity platform authorizes it to access data through Microsoft Graph. Each permission controls access to a specific resource type, such as users, groups, files, or mail, and defines which operations the app can perform. Microsoft Entra role-based access control (RBAC) can also grant access, so Graph permissions are not always the only factor in what an app or agent can reach.

Types of Microsoft Graph Permissions

Microsoft Graph supports delegated and app-only access. The permission type determines whether an agent acts within a user’s access rights or independently.

Delegated Permissions

Delegated permissions, also called scopes, let an app act on behalf of a signed-in user. Effective access is the overlap between the app’s granted permissions and the user’s rights. Delegated Mail.Read, for example, allows reading the signed-in user’s mailbox. Users can consent to permissions that don’t require admin consent, subject to tenant policies. All others need administrator approval.

Application Permissions

Application permissions, also called app roles, let an app access Microsoft Graph without a signed-in user. Access follows the permission’s scope rather than a user’s rights. Application Mail.Read, for example, allows reading all organizational mailboxes by default. These permissions require admin consent. For Microsoft Graph application permissions, granting that consent requires at least the Privileged Role Administrator role, or a custom directory role with permission to grant permissions to applications.

Delegated vs. Application Permissions: Key Differences

Category Delegated Permissions Application Permissions
Identity App acting on behalf of a signed-in user App acting independently
Effective Access Intersection of app permissions and user rights Resources covered by the permission
Consent User or administrator, depending on permission and tenant policy Administrator
Mail.Read Reach  Signed-in user’s mailbox All organizational mailboxes by default
Consent Record oAuth2PermissionGrant appRoleAssignment

‍

When to Use Each Permission Type

The right type depends on whether a user is present when the agent runs.

  • Agent Works for a Signed-In User. Use delegated permissions, which Microsoft recommends whenever they meet the app’s requirements.
  • Agent Runs Unattended. Use application permissions for work such as scheduled jobs and background services.

In either case, grant only what the task requires, following the least privilege principle in NIST SP 800-53.

  • User Profiles. An app that reads a user’s profile needs User.Read, not User.ReadWrite.
  • SharePoint. Sites.Selected requires explicit access assignments to selected sites.
  • Mailboxes. Use Exchange Online RBAC for Applications in new configurations, and remove any tenant-wide mail permission granted in Microsoft Entra ID, since an unscoped grant there overrides the Exchange scoping.

Which Identity Does Your AI Agent Use?

An agent’s identity and authentication setup determine whose access it uses and where to look for permission grants. Check these 4 aspects.

  • Copilot and the Signed-In User: Copilot surfaces organizational data the user is authorized to view. Broad SharePoint access can therefore expose content through responses that employees might otherwise never discover.
  • Copilot Studio Agents and Entra Agent ID: New agents receive Entra Agent IDs, with connector scopes attached at publication. These describe connector access rather than raw Graph permissions. Tools configured with maker-provided credentials can retrieve data or perform actions using the maker’s access instead of the user’s.
  • App-Registered Agents and Application Permissions: Custom agents using conventional app service principals can operate unattended with application permissions. These can include high-risk Graph permissions that Microsoft blocks for Entra agent identities.
  • Blueprint Inheritance and Grant Visibility: Agent identities can inherit eligible permissions granted to their blueprint principal. These inherited permissions appear in runtime tokens but not as grants on the individual identity in the Entra admin center or Microsoft Graph.

Where Graph Permission Risk Builds Up

Permission risk grows as agents multiply, their tasks change, and unused access goes unreviewed. OWASP lists excessive permissions as a root cause of excessive agency in LLM applications.

  1. Consent Sprawl Across Agent Deployments: New agents can introduce delegated and application grants. Users can approve some delegated permissions without an admin, subject to tenant policies. Without coordinated reviews, security teams can lose track of who granted access and why.
  2. Broad Scopes Left After the Use Case Changes: Changing an agent’s task doesn’t automatically revoke its permissions. Access approved for a pilot or one-off migration can remain long after the original need ends.
  3. Permissions That Persist After Retirement: Taking an agent out of use doesn’t necessarily remove its underlying grants or credentials. If its identity remains enabled with valid credentials and permissions, it may retain access after the business considers it retired.

High-Risk Microsoft Graph Permissions

Some Graph permissions reach far beyond what most agents need, especially as application permissions. Most carry the .All constraint, though application mail permissions can cover every mailbox by default even without it.

Permission What It Allows (Application) Why It’s High Risk Options to Reduce Access
Files.ReadWrite.All Read, create, update, and delete files in all site collections One grant covers every SharePoint and OneDrive file Sites.Selected or Files.SelectedOperations.Selected
Sites.FullControl.All Full control of all site collections Goes beyond content access to full site control Sites.Selected with a scoped role
Mail.ReadWrite Create, read, update, and delete mail in all mailboxes Tenant-wide by default despite having no .All suffix Mail.Read or Mail.ReadBasic, scoped with RBAC for Applications
Directory.ReadWrite.All Read and write directory data such as users and groups Broad directory changes across users and groups Resource-specific permissions such as Group.ReadWrite.All, GroupMember.ReadWrite.All, or User.ReadUpdate.All
User.ReadWrite.All Create, read, update, and delete users, subject to operation-specific restrictions Can update many properties, including for users in privileged admin roles, though sensitive properties are limited to non-admin and lesser-privileged users User.ReadUpdate.All, User.Create, or User.Read.All
RoleManagement.ReadWrite.Directory Manage directory roles and role membership Lets an app grant privileges to itself, other apps, or any user RoleManagement.Read.Directory when read access is enough
Application.ReadWrite.All Create, read, update, and delete apps and service principals Credential management lets an app act as other apps and use their privileges Application.ReadWrite.OwnedBy, when managing owned apps is sufficient

These options depend on the agent’s task, and they only reduce access once the broader grant is removed.

How to Audit Agent Graph Permissions

An audit has to cover every identity type, including grants that never appear on the agent itself. Work through it in 3 stages.

1. Discover

Start with a full inventory of agents and the grants attached to them.

  • List Agents and Service Principals: Pull every service principal with GET /servicePrincipals, following all result pages, and review agent identities in their own view in the Microsoft Entra admin center. Review blueprint-principal grants alongside each blueprint’s inheritance configuration, since only eligible grants flow to child identities.
  • Pull Delegated and Application Permission Grants: Query /servicePrincipals/{id}/oauth2PermissionGrants for delegated grants and /servicePrincipals/{id}/appRoleAssignments for application grants. Also check /roleManagement/directory/roleAssignments, since apps granted certain directory permissions before December 2020 may still hold the directory roles assigned with them.

2. Assess

With the inventory in hand, measure each agent’s reach against what it does.

  • Flag Tenant-Wide Access: Prioritize application permissions with the .All constraint, application mail permissions, and any directory role assignments.
  • Match Permissions to Agent Purpose: Compare each grant with the agent’s actual task, and use Microsoft Graph activity logs, where enabled, to review API usage. Write access on a read-only agent is a strong candidate for removal.
  • Confirm Agent Ownership and Consent Path: Identify owners or sponsors, distinguish tenant-wide from user-specific delegated consent, and check audit logs for who approved the grants.

3. Remediate

Fix what the assessment surfaces, prioritizing unnecessary access to sensitive resources or privileged actions.

  • Remove Unused Permissions: Delete grants the agent doesn’t use, remove leftover directory roles, and disable or delete identities for retired agents along with their credentials.
  • Use Delegated Access Where Appropriate: Move agents that act for a user to delegated permissions where the design allows, and narrow remaining app-only access with Sites.Selected for SharePoint or RBAC for Applications for Exchange mailboxes.
  • Restrict Consent and Open Sharing Links: Limit user consent to low-risk permissions from verified publishers, since attackers abuse consent prompts to steal application access tokens, and remove unnecessary organization-wide links and broad site access.

Common Microsoft Graph Permission Errors and Troubleshooting

Most Graph authorization failures return a 403, though token, consent, and Conditional Access problems can surface as 401, 400, or Entra AADSTS codes. Check the response body and whether the failure occurred during token acquisition or the Graph request, since the status code alone doesn’t identify the cause.

Error Likely Cause Fix
401 Unauthorized Access token is missing, invalid, or expired Send a valid access token as Authorization: Bearer <token>, ideally acquired with MSAL
403 Forbidden Required permission wasn’t requested or granted Request the least privileged permission listed in the API reference and complete consent
403 Forbidden with permissions in place Token type doesn’t match permission type Use client credentials for application permissions and delegated flows for delegated permissions
403 Forbidden on a delegated call Signed-in user lacks access or a license for the data Check the user’s own rights and licensing
403 Forbidden with a valid token Token was issued for a different API (aud claim mismatch) Request the token for Microsoft Graph
400 interaction_required (token acquisition) or 403 insufficient_claims (Graph request) Conditional Access requires extra claims, such as MFA Handle the claims challenge through MSAL, with interactive authentication where applicable
AADSTS65001 User or administrator hasn’t consented to the app Complete the consent flow or have an admin grant consent
AADSTS90094 Requested permissions need admin consent the user can’t give Have an admin grant consent in the Microsoft Entra admin center
403 ErrorAccessDenied, “Access to OData is disabled” Exchange EWS allow or block policy blocks the app Have an Exchange admin update the allow or block list (changes take time to apply)
403 despite Sites.Selected consent No explicit permission assignment to the target site, or the assigned role doesn’t allow the operation Grant the required role on that site and acquire a token containing the Selected permission
400 with an explicit blocked-permission message Permission is blocked for agent identities Choose a narrower permission that agents can hold
200 OK with null member properties App can’t read some object types in a group or relationship Add the least privileged read permission for those object types, if those properties are required
App reaches mailboxes outside its Exchange scope Unscoped Entra grant still applies alongside RBAC for Applications Remove the corresponding unscoped Entra permission grant after confirming the required scoped RBAC assignment

‍

How Opsin Secures Agent Permissions and Identity

Manual audits capture permissions at a single point in time, whereas agents and their access keep changing. Opsin Security brings each connected agent’s identity, permissions, data access, and original purpose into one continuously updated view. 

  • Agent Identity and Permission Mapping: Opsin normalizes agents from Copilot, Copilot Studio, ChatGPT Enterprise, Claude, and Gemini into a single model. Its agent identity security maps each connected agent to its owner, permissions, and users to show where sensitive data could be exposed.
  • AI Exposure Mapping: Opsin simulates real user queries to find the sensitive data AI tools can surface before employees discover it. An AI risk assessment delivers these exposure paths with a prioritized remediation roadmap within 24 hours.
  • Continuous Access Monitoring: Opsin tracks permission drift, broken inheritance, and open sharing links across Microsoft 365 and Google Workspace. Ongoing oversharing protection keeps that picture current as new files, sites, and agents appear.
  • Risk Graph Prioritization: The Risk Graph weighs an agent’s purpose, identity, data, access, and behavior together, so a sensitive connection alone doesn’t make an agent high risk. With agent runtime security, Opsin compares monitored activity with each agent’s intended purpose and ranks the highest-risk agents with evidence and root cause.
  • Root-Cause Remediation: Teams can quarantine an agent, block an action, or remove excessive access at the source, which can reduce exposure for other agents sharing that access path. Through AI agent governance, Opsin routes each finding to the person who built the agent, along with the specific change required. 

Conclusion

An agent can stay within its Microsoft Graph permissions and still reach data its task never required. For every agent, security teams should be able to explain whose identity it uses, what access it has, and why that access is necessary. That includes inherited blueprint grants and maker-provided connections that a permission list alone can miss.

Opsin connects identity, access, purpose, and behavior to help teams prioritize those reviews as agents change. The goal is to give agents enough access to do their jobs and to catch the point where that access stops serving their purpose.

Turn agent sprawl into risk clarity

See every agent, what it can reach, and what to fix.
See Opsin in action →