Sign-in error codes and diagnosis
On this page
- Sign-in failure codes and Conditional Access diagnosis
- Provenance
- Diagnostic method — apply before reaching for any code
- Codes that indicate Conditional Access
- Two causes that are invisible from the error code alone
- Why a policy did or did not apply
- Codes that look like Conditional Access but are not
- Symptom-first table
- Microsoft's information-collection list
- Evidence request template
- Output shape for troubleshooting
Sign-in failure codes and Conditional Access diagnosis
Accuracy rule. Error-code text and semantics change. Every code below must be treated
as a hypothesis generator, not a verdict. The authoritative lookup is
https://login.microsoftonline.com/error?code=<number>, and the agent should point users
there when precision matters. Never invent a code or restate one with more confidence
than this file carries.
Provenance
Canonical CA set — the six codes Microsoft publishes on
Troubleshooting sign-in problems with Conditional Access
(retrieved 2026-07-28). State these confidently:
| Code | Error string |
|---|---|
| 53000 | DeviceNotCompliant |
| 53001 | DeviceNotDomainJoined |
| 53002 | ApplicationUsedIsNotAnApprovedApp |
| 53003 | BlockedByConditionalAccess |
| 53004 | ProofUpBlockedDueToRisk |
| 53009 | Application needs to enforce Intune protection policies |
Everything else in this file is adjacent — drawn from the general
Entra authentication and authorization error codes
reference and from field experience. Hedge those, and point to the lookup URL.
Diagnostic method — apply before reaching for any code
The code narrows the search. It rarely completes the diagnosis. Work in this order:
- Was Conditional Access involved at all? Sign-in log → the sign-in → **Conditional
Access** tab. Each policy shows Success / Failure / Not applied / Report-only. If every
policy shows Not applied or Success, the cause is elsewhere — licensing, role
assignment, app configuration, or the account itself.
- Which policy shows Failure? That is the policy to reason about. There may be more
than one.
- Which condition matched? Compare the sign-in's client app, device state, location,
platform, risk level and user type against that policy's conditions.
- Which grant control failed? MFA not satisfied, device not compliant, strength not
met, app not approved.
- Could the user have satisfied it? Check registered methods, device enrolment,
compliance state. A user who cannot comply needs a different fix from one who
did not.
- Smallest safe change. Fix the user or the device before you change the policy.
Changing a policy to unblock one person is how estates decay.
Codes that indicate Conditional Access
| Code | Meaning | First hypotheses |
|---|---|---|
| AADSTS53003 | Access blocked by Conditional Access | The generic CA block. Go to the CA tab — the code alone tells you nothing about which policy or why |
| AADSTS53000 | Device is not compliant | Device-compliance grant. Check Intune enrolment, compliance state, and whether benchmark guidance (unassigned = not compliant) was recently changed |
| AADSTS53001 | Device is not domain joined | Hybrid-join grant. Check the device's join type and whether it has synced |
| AADSTS53002 | Application used is not an approved application | Require approved client app grant. The user is on an unapproved client — check the app, not the account |
| AADSTS53004 | Cannot complete MFA proof-up due to risk | Registration blocked because the account or sign-in is flagged risky. Requires risk remediation before registration |
| AADSTS50076 | MFA required — user must perform multi-factor authentication | A policy requires MFA and the session has not satisfied it. Normal interrupt, not necessarily a fault |
| AADSTS50079 | User must enrol for MFA | Policy requires MFA; user has no registered method. This is the blocked, not challenged case — likely needs a TAP |
| AADSTS50072 | User must enrol for second factor (interrupt) | As above, at the enrolment interrupt stage |
| AADSTS50074 | Strong authentication required / user did not satisfy the challenge | MFA attempted and not completed |
| AADSTS50158 | External security challenge not satisfied | Custom control or external authentication method not completed. Check the third-party provider, not Entra |
| AADSTS50097 | Device authentication required | Device state could not be established. Often a browser or PRT problem rather than a policy problem |
| AADSTS50131 | Conditional Access failure (general bucket) | Covers several distinct causes including device state and policy evaluation. Must be resolved via the CA tab, not the code |
| AADSTS50173 | Fresh token required | Sign-in frequency or a revocation event. Expected behaviour after tightening 5.2.2.4 or 5.2.2.13 |
| AADSTS500121 | Authentication failed during a strong authentication request | MFA denied, timed out, or the user cancelled. Frequently just the user tapping Deny |
| AADSTS53009 | Application needs to enforce Intune protection policies | App protection policy grant. The app lacks an Intune app protection policy — not a device or user fault |
| AADSTS530032 | Blocked by a security policy at the tenant level | Distinct from an ordinary CA policy — check tenant restrictions and security policies |
Two causes that are invisible from the error code alone
Both come from Microsoft's troubleshooting guidance and both produce blocks that look
unrelated to the policy causing them. Check these before concluding a policy is misbehaving.
Service dependency. The app the user opened is not the resource being called. Microsoft's
example: the application is Azure portal, the resource is Azure Resource Manager. A policy
targeting one but not the other blocks in a way that appears unconnected.
→ In the sign-in log, read the Resource field, not just the Application field. When a user
says "that policy doesn't even target this app", this is usually why.
Audience. Signing in to Teams requests access to multiple resources — Teams chat, Outlook
calendar, Excel documents. A SharePoint restriction fires during what the user experiences as
a Teams sign-in. Audience appears under the Resource section after selecting a policy on
the Conditional Access tab, and lists every resource requested.
→ This is the answer to "why is a SharePoint policy blocking Teams?"
Why a policy did or did not apply
Select the ellipsis beside a policy in the sign-in event. Left side = the values collected
at sign-in; right side = whether they satisfied the policy.
Conditional Access policies only apply when **all conditions are satisfied or not
configured**.
If the event is still not enough: Basic info → Troubleshoot Event runs the sign-in
diagnostic. The What If tool simulates a hypothetical sign-in.
Codes that look like Conditional Access but are not
Getting this differential right is a large part of the agent's value — these regularly get
misdiagnosed as CA problems and lead people to weaken policies that were never at fault.
| Code | Actual cause | Tell |
|---|---|---|
| AADSTS50105 | User is not assigned to a role for the application | App assignment, not policy. CA tab shows no failure |
| AADSTS50057 | User account is disabled | Account state |
| AADSTS50020 | User account from an external identity provider does not exist in the tenant | B2B configuration or cross-tenant access settings |
| AADSTS700016 | Application not found in the directory | App registration / wrong tenant |
| AADSTS7000112 | Application is disabled | Service principal disabled |
| AADSTS500011 | Resource principal not found in the tenant | Missing service principal for the resource |
| AADSTS90072 | Account does not exist in the tenant and cannot access the application in this context | Guest / cross-tenant |
If the CA tab shows no policy failure, stop treating it as a Conditional Access problem
and say so plainly.
Symptom-first table
Users usually describe a symptom, not a code.
| Symptom | Likely cause | Confirm by |
|---|---|---|
| "Some users prompted for MFA, others not" | Overlapping policies, or an exclusion group containing the unprompted users | CA tab per user; compare exclusions |
| "Worked on my laptop, fails on my phone" | Device-compliance or platform condition; phone not enrolled | Device ID, join type, compliance state, platform |
| "Only fails in the browser" | Client-app condition, token protection (browser unsupported), or app-enforced restrictions | Client app field |
| "Only fails in Outlook desktop" | Legacy client app, or an approved-client-app requirement | Client app field; check legacy protocols |
| "Scan-to-email stopped working" | Legacy authentication blocked | Sign-in logs filtered to legacy client apps; identify the MFP |
| "Guest cannot open a shared file" | Device-compliance policy catching guests; or the Rights Management exclusion missing for labelled content | User type = Guest; check CA tab and sensitivity labels |
| "Prompted every single time" | Sign-in frequency Every time, or persistent browser set to never | Session controls on the applicable policy |
| "New starter cannot register MFA" | Register-security-info policy requires a managed device with no TAP path | CA tab on the registration attempt |
| "Admin cannot sign in after we tightened policy" | Phishing-resistant strength without pre-registration | Registered methods for that admin; check break-glass immediately |
| "PowerShell script broke after MFA change" | IE-based credential prompt cannot handle a security key | Which auth flow the script uses |
| "Sign-in fails only when travelling" | Location/geographic policy, or sign-in risk | Location and IP; risk level |
| "Service account automation failed" | All-users policy caught a non-interactive identity | Non-interactive sign-in logs |
| "It worked for an hour then stopped" | Token lifetime expiry after a policy change — the change was already live, the token had not expired yet | Timestamps against the policy modification time |
| "Nothing changed but users are blocked" | Something did change: licence assignment, group membership, device compliance drift, or a Microsoft-managed policy | Audit logs; policy modified timestamps |
Microsoft's information-collection list
For a user reporting a Conditional Access problem, Microsoft asks for:
user principal name · user display name · operating system name · timestamp (approximate is
fine) · target application · client application type (browser or client) · correlation ID
If the user sees a More details link on the error page, they can collect most of it
themselves. Correlation ID is the single most useful field — it identifies the exact sign-in.
Evidence request template
The agent should ask for exactly this, and nothing more:
From the Entra admin center → Entra ID → Monitoring & health → Sign-in logs, open the
failed sign-in and give me:
- Error code and failure reason
- The Conditional Access tab: which policies show Success, Failure, Not applied
- Client app, target resource
- Device ID, join type, compliance status
- Authentication requirement and authentication details
- User type, location
Do not send screenshots containing tokens, and do not send a full log export.
[VERIFY] portal navigation labels before asserting them as exact.
Output shape for troubleshooting
- Symptom — restated, so the user can correct a misreading before the analysis
- Most likely causes — ranked, with the reasoning for the ranking
- Evidence to collect — only the fields that would discriminate between those causes
- Analysis — which policy, which condition matched, which grant failed
- Safe remediation — smallest change first; fix the user or device before the policy
- Verification — how to prove it is fixed
- What needs tenant inspection — stated explicitly, never implied