From the notebook
AADSTS65001 Consent Required: Microsoft Entra Fix Guide
Fix AADSTS65001 consent required errors by tracing requested and granted permissions, tenant policy, admin approval, and application consent evidence.
The user signs in, completes MFA, and then the application stops with AADSTS65001: the user or administrator has not consented to use the application. It is tempting to press Grant admin consent and move on. That can clear the error, but it can also authorize a publisher to access data across the tenant when the real problem was a wrong scope, wrong tenant, stale grant, or blocked user-consent path.
An AADSTS65001 consent required error means Microsoft Entra could not find a permission grant that satisfies the permissions in the current OAuth or OpenID Connect request. Capture the client application, resource API, tenant, requested scopes, and existing grants first. Then repair the smallest missing authorization: user consent where policy permits it, an approved admin-consent workflow, or a deliberately reviewed tenant-wide grant.
Grab a coffee and keep the failed request open. Microsoft's consent troubleshooting guide identifies AADSTS65001 as an OAuth 2.0 or OpenID Connect consent failure and says to compare the request with the permissions granted to the enterprise application. It also makes an important distinction: adding API permissions to an app registration does not grant them to the tenant-local service principal. (Microsoft's consent troubleshooting guide)
AADSTS65001 consent required: the short answer
Work through this sequence:
- Capture the error, timestamp, request ID, correlation ID, sign-in tenant, application ID, resource, redirect URI, and
scopeparameter from the failed request. - Resolve the application ID to the exact enterprise application in the tenant that received the request.
- Separate delegated permissions from application permissions. An interactive user flow normally uses delegated scopes; an app-only workload uses application permissions and always needs administrator consent.
- Compare the requested scopes with the application's existing delegated permission grants and app-role assignments. Do not confuse configured permissions on the app registration with granted permissions on the service principal.
- Check user-consent settings, permission classifications, publisher verification, risk-based blocking, and whether the application requires user assignment.
- If approval is required, review the publisher, resource API, permission type, privilege, business owner, user population, and requested scope before granting anything.
- Apply the narrowest approved repair, allow for replication, then retest the original flow and preserve the successful sign-in and consent audit events.
The order matters. AADSTS65001 is an authorization failure at the permission-consent boundary. Resetting a password, changing MFA, rotating a client secret, or disabling Conditional Access does not create the missing permission grant.
Understand what Microsoft Entra is evaluating
Four objects and values shape the decision:
- The client application asks for an access token.
- The resource application or API owns the requested permissions. Microsoft Graph is a common resource, but it is not the only one.
- The tenant-local service principal represents the client application and holds its effective grants in that tenant.
- The authorization request carries a
scopevalue for delegated access, or uses/.defaultto request the statically configured permission set in scenarios that include application permissions.
Microsoft distinguishes two permission types. Delegated permissions let an application act on behalf of a signed-in user and are represented by OAuth 2.0 permission grants. Application permissions, also called app roles, let the application act without a user and are represented by app-role assignments. Application permissions always require administrator consent. (permissions and consent overview, permission-request patterns)
That creates three different states that can look identical in a ticket:
- Configured but not granted: the app registration lists a permission, but no user or administrator has consented to it in this tenant.
- Granted but not requested correctly: the service principal has a grant, but the runtime request asks for another resource or scope.
- Requested but blocked: the permission could be valid, but tenant consent policy, publisher risk, assignment requirements, or the user's authority prevents consent.
Do not treat the portal's configured API-permissions list as proof that consent exists. The grant is a separate authorization object.
Step 1: preserve the failed request
Record this evidence before anyone clicks an approval button:
- the complete AADSTS65001 message;
- timestamp with time zone, request ID, and correlation ID;
- signed-in user's object ID and home tenant;
- tenant ID or authority used by the request;
- client application ID and display name;
- resource application or API;
- requested
scope, including whether/.defaultis used; - redirect URI and the application's launch path;
- whether the failure is interactive or app-only;
- last known successful time and the most recent app, permission, publisher, or tenant-policy change.
In the Microsoft Entra admin center, browse to Entra ID > Monitoring & health > Sign-in logs and open the exact failure. Microsoft's sign-in troubleshooting guidance recommends isolating the event by user or application and using its failure details rather than diagnosing from a screenshot alone. (troubleshoot Microsoft Entra sign-in errors)
If you can inspect the authorization request safely, record the names and values of client_id, tenant, redirect_uri, and scope. Do not put authorization codes, access tokens, refresh tokens, client secrets, cookies, or full client assertions in the incident record.
The tenant is critical. Consent is tenant-local. A permission granted in the publisher's home tenant does not automatically create the corresponding grant in a customer tenant.
Step 2: locate the exact enterprise application
Use the application ID from the failure, not its display name. Under Entra ID > Enterprise apps > All applications, search for that Application ID and confirm the object belongs to the tenant in the failed request.
The recent AADSTS700016 application-not-found guide covers the earlier lookup boundary. AADSTS65001 usually means Entra got far enough to evaluate permission consent, so recreating an app registration is not the first move.
For a read-only Microsoft Graph PowerShell inventory:
$appId = "00000000-0000-0000-0000-000000000000"
Connect-MgGraph -Scopes "Application.Read.All", "Directory.Read.All"
$sp = Get-MgServicePrincipal -Filter "appId eq '$appId'" `
-Property "id,appId,displayName,accountEnabled,appRoleAssignmentRequired"
$sp | Select-Object Id, AppId, DisplayName, AccountEnabled,
AppRoleAssignmentRequired
Get-MgServicePrincipalOauth2PermissionGrant `
-ServicePrincipalId $sp.Id -All |
Select-Object Id, ClientId, ConsentType, PrincipalId, ResourceId, Scope
Get-MgServicePrincipalAppRoleAssignment `
-ServicePrincipalId $sp.Id -All |
Select-Object Id, ResourceDisplayName, ResourceId, AppRoleId
The first grant collection represents delegated access; the second represents application permissions assigned to the client service principal. Microsoft's Graph and PowerShell references document both relationships and note that recently changed delegated grants can have replication delay. (list a service principal's delegated grants, Graph PowerShell delegated-grant cmdlet, Graph PowerShell app-role-assignment cmdlet)
If the ID resolves to no local service principal, verify the authority tenant and onboarding state. Do not create a look-alike object merely to make the search return something.
Step 3: compare requested and granted permissions
Build a permission diff with one row per requested value:
| Check | What to prove | Common failure |
|---|---|---|
| Resource | Which API owns the permission? | A short scope name is assumed to mean Microsoft Graph when the app calls a custom API. |
| Permission value | Is the exact delegated scope or app role exposed by that resource? | Display text is compared instead of the permission value or ID. |
| Permission type | Is the flow delegated or app-only? | An application permission is expected to work in an interactive delegated flow, or the reverse. |
| Configured request | Does the app registration list required static permissions when /.default is used? |
A permission exists only in code or only in the portal. |
| Effective grant | Does the tenant-local service principal have the needed grant? | “Configured” is mistaken for “consented.” |
| Grant scope | Does it apply to this user or all principals as intended? | A single-user delegated grant is mistaken for tenant-wide consent. |
For delegated grants, inspect ConsentType, PrincipalId, ResourceId, and Scope together. A grant with ConsentType of Principal applies to the identified user; a grant for all principals is tenant-wide. For app-only access, map each AppRoleId to the resource service principal's published app roles before translating it into a friendly permission name.
Microsoft's troubleshooting sequence says to compare the request's scopes with the enterprise application's Permissions pane and to remember that openid, profile, email, and offline_access are not normally displayed there like API permissions. (consent issue troubleshooting)
If the application recently added a new feature, the new runtime scope may simply be absent from an older consent grant. If the request asks for more privilege than the documented feature needs, stop and send it back to the application owner or publisher. The fix is not to normalize an unexplained privilege increase.
Step 4: identify why the user cannot consent
The fact that a permission is marked as not requiring admin consent in a reference does not guarantee that this user can grant it in this tenant. Tenant policy can be stricter.
Check Entra ID > Enterprise apps > Consent and permissions > User consent settings. Microsoft recommends allowing user consent only for applications from verified publishers and only for selected permissions, rather than treating consent as an unrestricted convenience. Permission classifications and app-consent policies determine which combinations qualify. (configure user consent)
Then check these gates:
- Permission requires administrator consent: application permissions always do; some delegated permissions do as well.
- User consent is disabled or restricted: the tenant's policy can require admin approval even for a permission whose default classification would allow user consent.
- Publisher or app risk blocks the prompt: publisher verification is a useful signal, but it is not a security review by itself. Microsoft's risk-based step-up behavior can prevent user consent to many newly registered, unverified multitenant applications that request more than basic sign-in/profile access. (publisher verification and risk-based consent)
- Assignment is required: when an enterprise application requires assignment, Microsoft says user consent is not allowed; administrators should grant the approved tenant-wide permissions and separately assign allowed users or groups. (manage application access)
- Wrong account or tenant: a guest, partner, or administrator may have authenticated in a directory that has no valid grant for the application.
- The user cancelled or the app suppressed interaction: a noninteractive token request cannot display a required consent prompt. The application owner must send the user or administrator through an appropriate interactive authorization path.
If the sign-in instead reaches AADSTS50105, permission consent is no longer the only gate. Use the AADSTS50105 assignment-required guide to validate the separate application-assignment boundary.
Step 5: choose the smallest safe repair
There are four legitimate outcomes.
Allow user consent under policy
Use this only when the application, publisher, delegated permission, and user scenario satisfy the tenant's approved user-consent policy. The user should complete the application's normal interactive authorization flow and review the actual permissions shown.
Do not relax the tenant-wide user-consent policy for one ticket. If the app does not meet policy, route it through administrator review.
Use the admin consent workflow
When users cannot consent, the admin consent workflow gives them an in-product way to submit a business justification for review. Configure it under Entra ID > Enterprise apps > Consent and permissions > Admin consent settings. Microsoft notes that being named as a reviewer does not elevate a person's permission to approve; the reviewer still needs an administrative role capable of granting the requested permissions. The workflow can take up to an hour to become enabled. (configure the admin consent workflow)
Use the workflow to gather the application owner, publisher, requested resource, permission type, privilege, affected users, data-handling purpose, and removal plan. Approval should be a security decision, not a response-time shortcut.
Grant tenant-wide administrator consent
Use this only when organization-wide consent is the approved design. Under the enterprise application, open Permissions, inspect every requested permission, and grant consent with the least-privileged role that is authorized for that permission set.
Microsoft's current role boundary is specific: Privileged Role Administrator can grant consent for apps requesting any permission for any API. Cloud Application Administrator, Application Administrator, and AI Administrator can grant consent except for Microsoft Graph app roles, meaning Microsoft Graph application permissions. (grant tenant-wide admin consent)
Tenant-wide consent is not the same as tenant-wide application access. You can still set Assignment required? and assign only approved users or groups. Consent authorizes what the app may do; assignment controls who may sign in to it.
Reject or narrow the request
Reject the request when the publisher cannot be verified to your standard, the business owner is missing, the app asks for unrelated permissions, an app-only permission is proposed for an interactive feature without justification, or the data access cannot be governed.
Ask the publisher or application owner to remove unused static permissions or request incremental delegated consent only when a feature needs it. Microsoft's developer guidance recommends listing admin-privileged permissions explicitly and using least privilege rather than collecting a broad consent grant “just in case.” (update an app's requested permissions)
Step 6: validate the repair
Retest from the same tenant, user, launch path, and application version that produced the failure:
- Record the approved change and the exact permissions granted.
- Allow the consent object to replicate.
- Start a fresh private browser session or a clean application authorization attempt.
- Confirm the request uses the expected client ID, tenant, resource, redirect URI, and scope.
- Confirm AADSTS65001 is gone and a new sign-in event succeeds or reaches the next legitimate control.
- Validate the application's function with the least-privileged pilot user.
- Re-run the read-only grant inventory and map every effective permission to the approval record.
- Capture the sign-in and directory-audit evidence.
Do not validate only with a highly privileged administrator. Their ability to approve during the test can change the state you are trying to observe.
If the app still fails, compare the new request with the post-change grant. A repeated AADSTS65001 usually means the repair targeted the wrong tenant or service principal, the app requested an additional scope, the grant applied to another principal, or the new request could not interactively prompt.
Evidence and rollback
Microsoft Entra audit logs distinguish delegated permission grants, app-role assignments, and user consent. Relevant application-management activities include Add delegated permission grant, Consent to application, and Add app role assignment to the service principal. Use the actor, target, permission details, correlation identifiers, and timestamp to prove what changed. (application permission audit logs)
Keep:
- the failed and successful sign-in events;
- the before-and-after permission inventory;
- application and resource service-principal object IDs;
- publisher and ownership evidence;
- requested and approved permission values and types;
- reviewer and grant actor;
- affected user population and assignment boundary;
- expiry, reassessment, or removal condition.
Rollback is not “delete the enterprise application” unless the application itself is unauthorized. Revoke the specific delegated grant or app-role assignment that was introduced, retest dependent features, and confirm the removal in audit logs. Broad deletion can remove SSO, assignments, provisioning, ownership, and other configuration that was not part of the consent incident.
Failure patterns worth recognizing
The permission is visible under App registrations, but the error remains. The permission is configured, not necessarily granted. Inspect the tenant-local enterprise application's effective grants.
The admin approved in the wrong tenant. Consent is tenant-local. Compare the approval tenant with the authority and resource tenant in the failed request.
The application added a new scope. Existing grants do not silently authorize later permission additions. Review the delta instead of reapproving the whole application without comparison.
The app uses /.default, but the owner expects a dynamic scope. /.default uses the statically configured permission set. Align the app registration and runtime flow with the application's intended permission model.
The user sees “Need admin approval,” but the permission looks low impact. Tenant user-consent policy, permission classification, publisher/risk controls, or assignment requirements can still force administrator review.
Consent succeeds, then access is denied. Permission consent may be fixed. Check enterprise-application assignment, Conditional Access, licensing, and the application's own authorization separately.
A daemon receives AADSTS65001. App-only access requires application permissions and administrator consent; there is no interactive user who can create that grant during the client-credentials flow.
AADSTS65001 administrator checklist
- Capture the exact failed request, tenant, client, resource, scope, request ID, and correlation ID.
- Resolve the client ID to the tenant-local enterprise application.
- Separate delegated permissions from application permissions.
- Compare requested permissions with effective grants, not only configured permissions.
- Map permission IDs to the correct resource service principal.
- Check user-consent policy, permission classifications, publisher verification, and risk blocking.
- Check whether assignment is required and keep consent separate from sign-in entitlement.
- Use the admin consent workflow when formal review is required.
- Review the complete permission set before tenant-wide consent.
- Use the least-privileged authorized administrator role.
- Retest with the original user and request path after replication.
- Preserve audit evidence and define a reassessment or removal condition.
The useful mental model is: client, resource, permission type, runtime scope, tenant-local grant, then consent policy. Follow that chain and AADSTS65001 becomes a precise authorization problem instead of a vague instruction to “ask an admin.” More importantly, the repair authorizes only the access the application can justify.
About the author
MU.AMicrosoft 365 / Entra Engineer
MU.A is the editorial byline for Sentinel Identity, covering Microsoft Entra, Microsoft 365, and identity administration. Send corrections or questions through the contact page.
Feedback
Was this article helpful?
Anonymous — no account or comment required.
Related reading
Microsoft Entra Account Recovery: Deployment Guide
Deploy Microsoft Entra account recovery with Verified ID, Face Check, claim validation, staged testing, monitoring, troubleshooting, and safe rollback.
Microsoft 365 Cross-Tenant Calendar Sharing Migration
Migrate Microsoft 365 cross-tenant calendar sharing safely. Inventory OrgRel, map scopes, coordinate testing, preserve rollback, and verify both tenants.
AADSTS50034 User Account Not Found: Microsoft Entra Fix
Fix AADSTS50034 user account not found errors by verifying the sign-in name, target tenant, directory object, guest state, sync health, and Windows evidence.