Fix it now
Microsoft publishes 0x80240030 as WU_E_INVALID_PROXY_SERVER, the format of the proxy list was invalid, and 0x80240021 as WU_E_TIME_OUT, the operation did not complete because it timed out. The first is a parsing failure on the machine, the second is something too slow to finish. Neither has anything to do with your Windows licence.
netsh winhttp show proxy
netsh winhttp reset proxy
net stop wuauserv
net start wuauserv
- Read what the machine account is actually using. This is not your browser’s proxy: Windows Update runs in the machine context and reads the WinHTTP configuration.
- Test a scan with no proxy at all after the reset. If it works, the definition was the problem and you can set a correct one.
- If a proxy really is required, set it in the documented form, for example
netsh winhttp set proxy proxy-server="http=proxy.example.local:8080;https=proxy.example.local:8080" bypass-list="*.example.local;<local>". - Have the update endpoints allowed without authentication and excluded from TLS inspection, because a machine-context request cannot answer a credentials prompt.
- Rescan and watch what changes. A timeout that becomes a slow but successful scan points at server capacity rather than at client configuration.
Microsoft now marks netsh winhttp show proxy and set proxy as deprecated in favour of show advproxy and set advproxy, which take their settings as JSON. The older commands still work and are what most estates are documented around.
If the scan completes in a sensible time, stop here. Below is why there are two proxy configurations, and which of the five codes points at the client and which at the server.
Why it happens
Windows keeps separate proxy settings for interactive users and for services. Your browser uses the per-user settings, complete with your credentials. Windows Update runs in the machine context and uses the WinHTTP configuration, with no user, no credentials and no way to answer a prompt. That one difference accounts for most cases where browsing works perfectly and updating does not, and it is why checking the browser proves nothing.
0x80240030 is raised when that machine-level configuration cannot be interpreted at all. Microsoft’s wording is that the format of the proxy list was invalid. A typing mistake in the netsh string, a policy pushing a malformed value, or an automatic configuration script returning something unusable will all produce it. The client is not saying the proxy is unreachable; it is saying it cannot tell what it has been asked to use.
0x80240021 is a different complaint entirely. The exchange started and did not finish in time. That happens with a proxy that stalls, a configuration script that has to be fetched from somewhere slow before every request, or an update server carrying more catalogue than it can serve promptly. On managed networks the server end is the usual culprit, and the supporting codes tell you which end to look at: 0x80244010 is WU_E_PT_EXCEEDED_MAX_SERVER_TRIPS, the number of round trips to the server exceeded the maximum limit, which is a server-side symptom, while 0x8024001F is WU_E_NO_CONNECTION, no network connection was available, which is a client-side one.
The machine-level proxy definition is malformed
You have this one if 0x80240030 appears immediately, and netsh winhttp show proxy returns something odd, truncated or unexpected.
- Reset it with
netsh winhttp reset proxy, which returns the setting to DIRECT, and test a scan with no proxy. - If a proxy is required, set it again carefully with the full
proxy-serverandbypass-listsyntax, checking for stray spaces or smart quotes copied from a document. - If a policy or a script sets the value, correct it at source rather than on the client, refresh policy and restart
wuauserv.
An automatic configuration script is slow or unreachable
You have this one if 0x80240021 on a network that uses a proxy auto-configuration script, particularly for machines connecting over a VPN.
- Test whether the script host is reachable from the client at the time the scan actually runs, not just at the time you are looking.
- Configure an explicit WinHTTP proxy for the machine context instead of relying on the script. Services handle scripts less gracefully than browsers do.
- Confirm the bypass list covers internal hosts such as your update server so its traffic does not take a slow path out and back.
The proxy demands authentication the machine cannot provide
You have this one if Timeouts on the client, and proxy logs showing challenges that are never answered from that machine.
- Have the update endpoints exempted from authentication on the proxy.
- Where exemption is impossible, arrange for the machine account to be authorised transparently rather than by prompt.
- Confirm the exemption covers both metadata and content hosts, because they are different names.
An authentication challenge a service cannot answer usually surfaces as a timeout rather than a clear refusal, which is why this cause hides behind 0x80240021 instead of announcing itself.
The update server cannot answer quickly enough
You have this one if 0x80244010 or 0x80240021 across many managed clients at once, with the server under visible load.
- Decline superseded updates and run the server cleanup routine to shrink the catalogue every client has to work through.
- Raise or remove the private memory limit on the update server’s application pool, which is a frequent cause of repeated recycling under load.
- Stagger client scan schedules so they do not all arrive together.
- Retry from a client once the server is quiet and confirm the scan completes.
The client’s cached server state is stale
You have this one if 0x80244015, often after the update server was rebuilt, renamed or upgraded.
- Let the client retry. Microsoft’s description of this code is that the server was changed or the cookie was invalid and the client should refresh its internal cache and retry, which it does on its own.
- If it persists, stop
wuauservandbits, renameC:\Windows\SoftwareDistribution, start the services and rescan. - Confirm the client policy names the current server, and correct it if the name changed.
Full reference
The five codes, and which end each accuses
| Code | Published name | Published description | Points at |
|---|---|---|---|
0x80240030 |
WU_E_INVALID_PROXY_SERVER | The format of the proxy list was invalid | The client |
0x80240021 |
WU_E_TIME_OUT | The operation did not complete because it timed out | Either end |
0x8024001F |
WU_E_NO_CONNECTION | The operation did not complete because the network connection was unavailable | The client |
0x80244010 |
WU_E_PT_EXCEEDED_MAX_SERVER_TRIPS | The number of round trips to the server exceeded the maximum limit | The server |
0x80244015 |
WU_E_PT_REFRESH_CACHE_REQUIRED | The server was changed or the cookie was invalid; refresh the internal cache and retry | The server, then the client |
The proxy commands, current and deprecated
Microsoft’s netsh documentation now carries deprecation notices on two of the commands most estates are built around. They still function, and the replacements take a different kind of argument, so it is worth knowing both.
| Command | What it does | Status |
|---|---|---|
netsh winhttp show proxy |
Displays the machine-context proxy setting | Deprecated in favour of show advproxy |
netsh winhttp set proxy proxy-server=... bypass-list=... |
Sets the machine-context proxy and its exclusions | Deprecated in favour of set advproxy |
netsh winhttp show advproxy |
Displays the current advanced proxy setting | Current |
netsh winhttp set advproxy setting-scope=machine settings={...} |
Sets the advanced proxy from a JSON object with Proxy, ProxyBypass, AutoconfigUrl and AutoDetect | Current |
netsh winhttp reset proxy |
Resets the machine-context proxy to DIRECT | Current |
netsh winhttp import proxy source=ie |
Imports the per-user Internet Options settings | Current, and IE is the only documented source |
<local> in a bypass list means every short-name host. Getting your own update server into that list is usually the single most effective change on a managed network, because it stops internal traffic taking a slow trip through an external proxy.
Separating a slow server from a broken client
- Run the scan from a client on the same subnet as the update server with no proxy configured. If that is fast, the fault is in the path.
- Compare the timing across several clients. One slow machine is a client problem; every machine at nine in the morning is a scheduling and capacity problem.
- Look at the update server’s application pool for repeated recycles during scan windows.
- Check the size of the catalogue. A server that has never had superseded updates declined makes every client do more work on every scan.
- Only after that, start changing things on the client.
Where the evidence lives
| Source | How to reach it | What it shows |
|---|---|---|
| Windows Update trace | Get-WindowsUpdateLog |
Which host the client tried, and where it gave up |
| Proxy logs | On the proxy | Whether the request arrived at all, and whether it was challenged |
| IIS logs on the update server | C:\inetpub\logs\LogFiles |
The status the server actually returned, with timing |
| Machine proxy setting | netsh winhttp show proxy |
What the update client is configured to use, as opposed to what you think it uses |
One thing worth knowing about the server
If the timeouts trace back to a WSUS server, it is worth knowing where that product stands. Microsoft lists Windows Server Update Services among the features no longer in development, while confirming that existing capabilities and content remain available for current deployments. That is not a reason to rip it out this week, but it is a reason not to invest heavily in tuning an ageing instance when the estate could move to a serviced alternative.
Every code this article covers
| Code | What it points at | Source |
|---|---|---|
0x80240030 |
WU_E_INVALID_PROXY_SERVER. The format of the proxy list was invalid | Microsoft Learn |
0x80240021 |
WU_E_TIME_OUT. The operation did not complete because it timed out | Microsoft Learn |
0x8024001F |
WU_E_NO_CONNECTION. The operation did not complete because the network connection was unavailable | Microsoft Learn |
0x80244010 |
WU_E_PT_EXCEEDED_MAX_SERVER_TRIPS. The number of round trips to the server exceeded the maximum limit | Microsoft Learn |
0x80244015 |
WU_E_PT_REFRESH_CACHE_REQUIRED. The server was changed or the cookie was invalid, so the client must refresh its internal cache and retry | Microsoft Learn |
Confirm the fix worked
netsh winhttp show proxyreports the configuration you intended for the machine context.- A scan in Settings, Windows Update completes within a reasonable time.
- One update installs end to end and appears in the update history.
- On a managed network, several clients complete a scan in the same window rather than one at a time.
Questions people ask about this
Why does my browser reach the internet when Windows Update cannot?
They use different proxy configurations and different identities. The browser is you, with your credentials. The update client is the machine, using the WinHTTP settings, with no way to answer an authentication prompt.
Does any of this need a licence or a purchase?
No. These are network and server configuration problems. Updates are included with a licensed, supported installation and nothing here is solved by buying anything.
Is netsh winhttp reset proxy safe to run?
Yes, and it is a good diagnostic. It only clears the machine-level proxy setting back to DIRECT, and you can set it again immediately if the network genuinely requires one.
Should I switch to the advproxy commands?
Eventually. Microsoft marks show proxy and set proxy as deprecated in favour of show advproxy and set advproxy, which take their configuration as a JSON object with Proxy, ProxyBypass, AutoconfigUrl and AutoDetect. The older commands still work, so this is a migration rather than an emergency.
Our update server is slow rather than broken. Is that really the cause?
It can be. Round trip and timeout limits are finite, so a server that answers eventually but not promptly produces the same codes as one that never answers. Cleaning up the catalogue usually helps more than anything you change on the client.
