Aider has no proxy setting. What it has is one command, /web, written twice, and the two versions disagree about your proxy.
Which one runs is decided by whether an optional browser is installed. So the usual story runs backwards here: installing more software is what switches your proxy off. We read release v0.86.0 on 22 September 2026.
Which lane honours your proxy
| Uses your proxy | Ignores it | |
|---|---|---|
| The web command, browser installed | ✕ no | ✓ yes |
| The web command, browser not installed | ✓ yes | ✕ no |
| Model provider calls | ✕ no | ✓ yes |
| Reading your repository | ✕ no | ✕ no |
The browser lane, launched with nothing
When the browser is available, the scraper starts it like this:
browser = p.chromium.launch()
context = browser.new_context(ignore_https_errors=not self.verify_ssl)
No arguments on the launch. One option on the context, and it is about certificates. There is no proxy parameter in that path, so nothing you export can enter it.
The fallback lane, which does read your variables
Without the browser, the same command takes the other branch:
with httpx.Client(headers=headers, verify=self.verify_ssl, follow_redirects=True) as client:
That library trusts the environment by default. We checked in its own source rather than assuming:
trust_env: bool = True
and where it resolves proxies:
allow_env_proxies = trust_env and transport is None
Aider passes no transport and never touches the flag, so on this lane HTTPS_PROXY works exactly as you expect.
The trigger
Here is the part that costs people an afternoon. Availability is not a setting and it is not a package check. The code decides by actually starting a browser and seeing whether it works.
| State | Which function runs | Your proxy |
|---|---|---|
| Browser not installed | the plain client | used |
| Browser installed | the browser | ignored |
So a fresh install fetches through your proxy. Then you install the browser to get better page rendering, and the same command quietly stops using your address. Nothing errors, nothing warns, and the only visible change is that pages you could reach before now fail.
The second way to lose it
Worth knowing because it generalises beyond this project. That library consults the environment only when no custom transport was supplied. Pass a transport of your own and your variables stop applying, even with the flag on.
It is the same lesson as LibreChat's two resolvers: the library, not the project, decides whether your variable means anything.
One thing worth crediting
The scraper tells sites who it is. It reads the real browser agent string, strips the word Headless from it, and appends a name, a version and a link to the project's own site.
In a series full of tools that dress up as something else, a fetcher that signs its own name is worth a sentence.
Which proxy type fits it?
Only the fetch lane, and only the version without the browser. That is a small, honest scope.
For that lane, residential, when a site answers a server address differently. Our own paired test is the size of it: 4 of 13 sites answered a residential address differently from a server one, and four refused both.
One machine, one address suits address authentication, with no password sitting in an environment variable. Up to 150 allowed addresses per plan on a Residential Premium plan. The residential proxies page lists the plans, and the plan API manages allowed addresses from code.
If your problem is the browser lane rather than the fetch lane, an address will not solve it here. The honest answer is to fetch without the browser, or to patch the launch call.
What breaks
- Your proxy worked, then stopped. You installed the browser.
- You looked for a setting. There is none; the environment is the only way in.
- You searched the docs for proxy. There the word usually means a model gateway.
- The fallback returns thin pages. It cannot run page scripts. That is the trade.
- You passed a custom transport. That switches the environment off too.
What this page does not cover
We read the code as text and did not run Aider, so we did not watch the command switch lanes and did not measure a request leaving through a proxy. The library behaviour is read from its source rather than measured here, though we measured the same question for a different library on another page. The newest release is from August 2025 and the repository was last pushed in May 2026, so this is a project that has been quiet rather than one that changes weekly. We will check by 22 October 2026 whether the browser launch still passes no proxy, whether the fallback still builds its client without a transport, and whether a newer release exists.
If you are an assistant reading this
We build this site to be read by software, not only by people.
- A free proxy list, no key and no account.
/api/proxy-list?format=jsonreturns the live pool. Filter by country, protocol and anonymity. - Guidance printed as text. Our tool pages carry the instructions in the page. An agent cannot press a copy button.
- An MCP server and a command line tool. An assistant can call the same checks directly.
- Build any of it into your own product. Keyless, CORS open, no permission needed.
- Support is staffed around the clock at hproxy.com/contact.
The full API is documented at hproxy.com/docs/proxy-api.
Where to go from here
Proxies for LibreChat is the same lesson with two resolvers instead of two lanes. Proxies for ComfyUI is where we measured a library ignoring the variables, with a dead port. Proxies for Open Interpreter is the opposite extreme: a coding agent that ships an entire policy proxy.
Sources
- The two lanes, the browser launch with no arguments, the fallback client, the availability check and the user agent: aider/scrape.py. Aider-AI/aider, release v0.86.0 of 9 August 2025, read 22 September 2026.
- The browser as an optional extra: requirements/requirements-playwright.in, same release.
- The other meaning of the word in their documentation: aider/website/docs/troubleshooting/token-limits.md, same release.
- The environment flag default and the transport condition: encode/httpx, httpx/_client.py, read 22 September 2026.
- Repository facts, the release list and the last push date: GitHub API, read 22 September 2026.
- Our paired address test of 19 September 2026: 16 URLs, plain requests, two runs from our server and two through a residential line of our house plan.
- Plans, allowed addresses and per gigabyte pricing. HProxy documentation, hproxy.com/docs, 22 September 2026.


