Typical reports
- "TF400813: The user is not authorized to access this resource"
- 401 or 403 from
git cloneor the REST API - Sign-in loops, or "You need permission" after signing in
- Pipelines queued but agents offline, or service connections failing
On 21 October 2026, for example, users in several countries reported Azure DevOps access errors while the general Azure status page showed no broad Azure outage. The first job is to tell the two cases apart.
Step 1: Is it the service?
- Check status.dev.azure.com. Azure DevOps has its own status page, separate from the Azure status page.
- Ask: is it everyone, or one team / one location / one authentication method?
- Try from a different network (a phone hotspot) and a private browser window.
| Pattern | Likely cause |
|---|---|
| Everyone, all locations, status page shows an incident | Service incident: wait, communicate, don't change settings |
| Only one office or VPN | Network, proxy or firewall |
| Only users covered by a new Conditional Access policy | Entra ID policy |
| Only automation (scripts, pipelines) | Expired PAT, service principal secret or workload identity issue |
| Only one organisation | Organisation policy or Entra connection change |
Step 2: Tenant-side checks
Entra sign-in logs. Filter by application Azure DevOps (and the user). A failure there shows the exact reason: Conditional Access, MFA, device compliance or an expired password.
az rest --method get \
--url "https://graph.microsoft.com/v1.0/auditLogs/signIns?\$filter=appDisplayName eq 'Azure DevOps' and status/errorCode ne 0&\$top=20" \
--query "value[].{user:userPrincipalName, err:status.errorCode, reason:status.failureReason, ca:conditionalAccessStatus}" -o table
Organisation policies. In Organisation settings > Policies, check whether someone recently changed: third-party OAuth access, SSH authentication, public projects, or IP-based Conditional Access policy validation.
PATs. A PAT that expired or was revoked returns 401 for scripts while browser users are fine. Admins can see PAT lifecycle policy under Organisation settings > Microsoft Entra.
Step 3: Network checks
Azure DevOps uses several host names (dev.azure.com, *.dev.azure.com, *.visualstudio.com, *.vsassets.io, login.microsoftonline.com and others). A proxy or firewall change that blocks one of them breaks sign-in or asset loading in ways that look like permissions errors. Compare with Microsoft's current allowed-domain list and test with:
curl -sI https://dev.azure.com/<org>/_apis/connectionData | head -1
Step 4: Pipelines
- Agents offline: self-hosted agents need outbound HTTPS to the same host names. Check the agent's
_diaglogs. - Service connections: prefer workload identity federation over secrets; secrets that expire are a common Monday-morning outage.
- Keep running during a service incident: you can't do much for Microsoft-hosted agents. Have a documented manual deployment path for critical fixes.
Keep the CLI extension patched
A security update for the Azure DevOps CLI extension (CVE-2026-69877) was published on 13 October 2026. Update it on build agents and admin workstations:
az extension update --name azure-devops
az extension show --name azure-devops --query version -o tsv
Checklist
- status.dev.azure.com checked before changing anything
- Scope of the problem established (users, locations, auth type)
- Entra sign-in logs reviewed for the failing users
- Recent policy, Conditional Access and proxy changes reviewed
- PATs and service connection secrets checked for expiry
- Azure DevOps CLI extension up to date on agents