All permissions are read-only and delegated. ButWhy.Cloud cannot create, modify, or delete anything in your tenant. Every permission below is used solely to read configuration data for security assessment purposes.
When you click "Run Free Security Scan", you are redirected to Microsoft's standard OAuth 2.0 consent screen. You authenticate with your own Microsoft credentials and choose whether to grant consent. If you consent, Microsoft issues a short-lived access token scoped to your tenant. Our scanner uses that token to run the checks, then the token expires. We never see your password.
This scope is automatically included by Microsoft for all delegated OAuth flows and cannot be omitted.
Directory.Read.All
Reads Entra ID directory objects including users, groups, service principals, and app registrations. Used to check admin counts, guest users, app registrations with expiring secrets, and service principal configurations.
Policy.Read.All
Reads Conditional Access policies, authentication methods policy, and tenant-wide security policies. Used to assess MFA enforcement, legacy authentication blocking, and Conditional Access coverage gaps.
UserAuthenticationMethod.Read.All
Reads the authentication methods registered by users (e.g. whether MFA is configured). Used to identify users without MFA registered and assess authentication strength.
RoleManagement.Read.Directory
Reads Entra ID role assignments. Used to check Global Administrator counts, privileged role assignments, and whether PIM (Privileged Identity Management) is in use.
AuditLog.Read.All
Reads sign-in and audit logs. Used to detect risky sign-in patterns, legacy authentication usage, and review recent privileged actions.
Reports.Read.All
Reads Microsoft 365 usage and security reports. Used to assess MFA registration rates across the tenant and identify users who have not completed MFA setup.
SecurityEvents.Read.All
Reads security alerts and events from Microsoft Defender and other integrated security products. Used to check for active security alerts and Defender configuration status.
SecurityActions.Read.All
Reads available and completed security actions. Used to assess Secure Score improvement actions and their current status.
User.Read.All
Reads full profile data for all users. Used alongside Directory.Read.All to assess user configurations such as external/guest accounts, per-user MFA state, and account status.
DeviceManagementConfiguration.Read.All
Reads Intune device configuration profiles and policies. Used to check BitLocker enforcement, Windows Hello, device compliance policy existence, and configuration baselines.
DeviceManagementManagedDevices.Read.All
Reads the list of devices enrolled in Intune and their compliance status. Used to identify non-compliant devices and assess enrolment coverage.
DeviceManagementApps.Read.All
Reads Intune app protection and app configuration policies. Used to check mobile application management (MAM) policies and app protection policy coverage.
DeviceManagementServiceConfig.Read.All
Reads Intune service-level configuration including enrolment restrictions and terms and conditions. Used to assess enrolment policies and device management configuration.
Mail.ReadBasic
Reads basic mail properties (subject, sender, recipient) but not message body or attachments. Used to verify email security configurations such as external forwarding rules.
Mail.ReadBasic.Shared
Same as Mail.ReadBasic but also covers shared mailboxes. Used to check forwarding rules on shared mailboxes that could be used for data exfiltration.
User.Read
Reads the signed-in user's basic profile. Required by Microsoft for all delegated OAuth flows — used to identify the consenting user and their tenant.
If you have questions about any permission or want to discuss the security model before scanning, email hello@butwhy.cloud.