Azure Virtual Desktop Connection Errors: What Each Error Code Means

AVD connection errors organized by where they come from: session host agent events such as INVALID_REGISTRATION_TOKEN and 3703, WVDErrors codes such as ConnectionFailedNoHealthyRdshAvailable, and the messages users see in the client, each with its cause and fix.

By David, , updated

Azure Virtual Desktop (AVD) connection errors come from one of three places: the user's client, the AVD service's own diagnostics (the WVDErrors table in Log Analytics), or the AVD agent on the session host, which logs event IDs such as 3277, 3703 and 3019. Find which layer produced the code and you've found the fix: client codes point at the user's device or sign-in, WVDErrors codes point at assignment or host availability, and agent events point at registration or blocked network endpoints.

The short version: start with the user's error code and the time, then look up the same connection in WVDErrors by user and time. If the host is the problem, read the session host's Application event log for WVD-Agent events. Most "can't connect" tickets come down to a missing assignment, no available host, an expired registration key or a blocked required URL.


Where AVD error codes come from

LayerWhere you see itWhat it usually means
ClientThe error dialog in Windows App or the Remote Desktop client, with a hex codeSign-in, network or a problem the service reported back to the client
AVD serviceWVDErrors and WVDConnections in Log Analytics, once you've turned on host pool diagnosticsFeed, assignment, brokering and host availability
Session host agentEvent Viewer → Windows Logs → Application, sources WVD-Agent, WVD-Agent-Updater, RDAgentBootLoader and MsiInstallerAgent registration, broker reachability, stack listener

Connections that never reach the AVD service, because the user's network blocked them, don't appear in the service diagnostics at all (Microsoft Learn). If a user reports an error and WVDConnections has no record of the attempt, look at the user's network first.


Session host agent errors (Event Viewer, Application log)

These come straight from Microsoft's agent troubleshooting guide (Troubleshoot Azure Virtual Desktop Agent issues). Each one makes the host unavailable or unhealthy, so users either can't land on it or can't connect at all.

Event and codeMeaningFix
3277 INVALID_REGISTRATION_TOKEN or EXPIRED_MACHINE_TOKENThe registration key isn't validGenerate a new registration key, set it under HKLM\SOFTWARE\Microsoft\RDInfraAgent, set IsRegistered to 0, restart RDAgentBootLoader
3277 INVALID_FORMThe agent can't reach the brokerCheck firewall and DNS: browse to the BrokerResourceIdURI value plus /api/health and expect RD Broker is Healthy
3277 ENDPOINT_NOT_FOUNDThe broker found no host to send the user toMake sure hosts are on, registered, under their session limit and running the agent
3277 InstallationHealthCheckFailedExceptionThe stack listener isn't workingCheck the listener, reinstall the side-by-side stack
3277 InstallMsiExceptionAnother installer is running, or policy blocks msiexec.exeCheck Turn off Windows Installer in Resultant Set of Policy
3277 DownloadMsiExceptionNot enough disk space for the agentFree space or enlarge the disk
3703 RD Gateway Url: is not accessibleThe agent can't reach the gateway URLsAllow the required URLs through your firewall or proxy
3019The agent can't reach the web socket transport URLsUnblock the required URLs, check proxy and DNS
3389 MissingMethodExceptionAgent update failed and rolled back, .NET older than 4.7.2Update .NET Framework to 4.7.2 or later
NAME_ALREADY_REGISTEREDA host with the same name is already registeredRemove the stale session host, redeploy with a unique name

Two agent conditions don't come with an event code but are just as common:

  • Remote Desktop Agent Loader stopped. If RDAgentBootLoader won't stay running after you start it, it's usually a registration failure: see the 3277 token errors above. If it times out at boot, Microsoft suggests setting it to Automatic (Delayed Start) and raising ServicesPipeTimeout.
  • Stack listener not listening. Run qwinsta.exe. The rdp-tcp and rdp-sxs entries should both show Listen. If not, reinstall the side-by-side stack from the SxSStack*.msi under C:\Program Files\Microsoft RDInfra.

AVD service errors (WVDErrors)

With diagnostics turned on for your host pools, workspaces and application groups, every failed attempt lands in WVDErrors. To find a user's errors:

WVDErrors
| where UserName == "user@contoso.com"
| take 100

The CodeSymbolic column names the error, and the ServiceError column tells you whose problem it is: false means something an admin can fix, true means escalate to Microsoft with the CorrelationId. The codes you'll see most:

CodeSymbolicMeaningWhere to look
ConnectionFailedNoHealthyRdshAvailableNo session host could take the connection: none healthy, all in drain mode, all at their session limit, or none runningSession host status and capacity; Start VM on Connect if hosts are deallocated
ConnectionFailedUserNotAuthorizedThe user isn't assigned to the app group, or the resource was unpublishedApplication group assignments
ConnectionFailedAdTrustedRelationshipFailureThe host can't authenticate to the domainDomain controller reachability, the computer object's trust
ConnectionFailedClientDisconnectThe client went away during the connectionThe user's network, and whether the session was on UDP or TCP

Use the same query with | summarize count(UserName) by CodeSymbolic to see whether one user or a whole pool is affected.


Client-side codes and messages

The client shows a short message and a hex code. Microsoft doesn't publish one reference table for these, so read them together with the service and agent logs above. The common ones:

What the user seesUsually meansFirst check
It appears that your system administrator has not yet configured any resourcesThe user has no AVD resources assignedApplication group assignment, and that the group is a security group, not a distribution group
No desktops after sign-in, after a tenant or subscription moveAssignments tied to the old Microsoft Entra tenantReassign users; re-register the Microsoft.DesktopVirtualization resource provider
Sign-in blocked by Conditional AccessThe user can't reach the Azure Virtual Desktop, Windows 365 or Windows Cloud Login appsSign-in logs, Conditional Access policy scope
A code such as 0x3000047 when connectingThe service couldn't hand the user to a hostWVDErrors for the same user and time, then host health
Repeated disconnectsNetwork drops between client and hostConnectionFailedClientDisconnect in WVDErrors, and the transport the session used

Before anything else, rule out the client: update Windows App, try the user from Windows App in a web browser, and check their round-trip time with the Azure Virtual Desktop Experience Estimator (Basic troubleshooting for Windows App).

Every AVD connection error belongs to one layer: the client, the AVD service or the session host's agent. Find the layer first and the fix is usually one setting.


Where Atlas AVD helps

  • Hosts that never registered don't hide. When Add VMs builds a host, Atlas fetches the registration token and installs the AVD agent, and a host that doesn't register in time fails its deployment job instead of sitting in the pool unnoticed.
  • Unhealthy hosts in one filter. The Session Hosts list filters to Needs Assistance, and an agent health view shows every host's AVD agent version and health. Session host needs assistance explains each health check.
  • Diagnostics on by default. For the pools it deploys, Atlas turns on AVD Insights diagnostics into your own Log Analytics workspace, so WVDErrors has data when you need it.
  • Start from the user. The Users page shows each user's session host, state and last latency, and opening a user shows connection history and a latency graph.
  • Alerts before tickets. Alert rules cover unavailable VMs, latency and pools at capacity, delivered to Teams, Slack or a signed webhook.

That's the real Atlas AVD console in our demo environment; the users and sessions are sample data. For running AVD at scale, see AVD fleet management.


FAQ

How do I find the cause of an AVD connection error?

Note the error code and time, then query WVDErrors in Log Analytics for that user. If the service points at the host, check the session host's Application event log for WVD-Agent events.

What does INVALID_REGISTRATION_TOKEN mean?

The session host's registration key isn't valid or has expired. Generate a new key for the host pool, write it to the agent's registry key, set IsRegistered to 0 and restart the RDAgentBootLoader service.

What does ConnectionFailedNoHealthyRdshAvailable mean?

No session host in the pool could accept the connection: the hosts are unhealthy, in drain mode, at their session limit or turned off.

Why can a user sign in but see no desktops?

They usually aren't assigned to an application group, or they're in a distribution group rather than a security group. After a tenant move, assignments need to be redone.

Why are connection attempts missing from my AVD logs?

Connections that never reach the AVD service, because of the user's network, aren't recorded in AVD diagnostics. Check the user's network and firewall.

What if the user connects but sees a black screen?

That's a sign-in problem on the host, not a connection error. See AVD black screen.

Last updated 9 November 2026. Microsoft details are drawn from Microsoft Learn as of November 2026: Troubleshoot Azure Virtual Desktop Agent issues, Azure Virtual Desktop service connections, Azure Virtual Desktop diagnostics log analytics and Basic troubleshooting for Windows App. WVDErrors code descriptions summarize Microsoft's diagnostics documentation; confirm against the codes in your own workspace.