Before anything about proxies: the repo you are reading is probably not the one that answers the question.
OpenHands/OpenHands carries 88,810 stars and the project's whole history. Its own manifest now says what it is:
"name": "@openhands/agent-canvas", "description": "Agent Canvas UI for OpenHands"
That is the interface. The agent, its tools and its runtime moved to a separate repo, OpenHands/software-agent-sdk, which has 1,155 stars. The old All-Hands-AI path redirects to the interface. So every older guide lands in the wrong place. We read both on 22 September 2026.
Which repository answers what
| The interface repo | The agent SDK | |
|---|---|---|
| The browser tool | ✕ no | ✓ yes |
| The runtime and sandbox | ✕ no | ✓ yes |
| Anything about proxies | ✕ no | ✓ yes |
| The stars and the search results | ✓ yes | ✕ no |
A gap of seventy-seven to one between where the stars are and where the code is. That is why this page exists.
The browser tool, and what it exposes
In the SDK, the browser tool is a wrapper. Its own docstring is plain about it:
Executor that wraps browser-use MCP server for OpenHands integration
And its constructor takes exactly two options:
| Option | Default | What it controls |
|---|---|---|
headless | True | whether the browser shows a window |
allowed_domains | empty list | which hosts the browser may visit |
| a proxy | absent | nothing, because there is no such parameter |
Both values pass straight down. The server file beneath adds no proxy either. So at this layer the option does not exist.
The frustrating part, said plainly: the browser underneath does support proxies. We read it directly for another page here. This is a wrapper hiding an option, not a browser that lacks one.
The allowed domains list is a different control
It is easy to see that option and think it is the network setting. It is not.
An allow list decides what the agent may reach. A proxy decides where it reaches from. A site that refuses server addresses still refuses you with every domain allowed. And a proxy will not get you to a host the list leaves out.
This series keeps meeting that split. It is the third time in a week that a sandboxed agent answers the network question with a list of hosts.
Three things called proxy here, and none of them yours
| What you will find | What it actually is |
|---|---|
scripts/proxy-utils.mjs in the interface | a development helper that forwards to a backend |
src/api/cloud/proxy.ts in the interface | a client for their hosted API |
docker_runtime/proxy.py in the SDK | the agent server forwarding to its own container runtime |
That last one is the decoy. It lists the hop by hop headers of the HTTP standard, with a comment that they must not be forwarded by a proxy. That reads like proxy support. It is the server talking to its own runtime.
What it would take
Two honest options. Patch the executor so it passes a proxy to the session it wraps. Or route the whole container the agent runs in, and leave the app out of it.
Neither is a setting, and we would rather say that than imply one exists.
Which proxy type fits it?
The lane an address would touch is the browser tool, once something is passing your address to it.
Residential, for hosts that answer 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.
Route the container instead and one container means one address. That suits address authentication, with no password in an environment your agent can read back. 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.
What breaks
- You read the repo with the stars. That is the interface. The agent is in the SDK.
- Your old bookmark redirected. The project changed owner, and the old path lands on the interface.
- You set an allowed domains list expecting a route. It controls what, not from where.
- You found a proxy module and configured it. That is the server talking to its own runtime.
- You looked for a proxy option on the browser tool. There are two options and that is not one.
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.
What this page does not cover
We read the code as text and did not run OpenHands. We did not watch the browser tool start a session, and we did not test the allowed domains list. We did not trace whether the browser underneath reads its own proxy variables here. So the page says what the wrapper exposes, rather than claiming the lane cannot be routed. One method note. Two repos in this series returned misleading zero results from code search. So every absence here was checked against a full file tree, which reported itself untruncated at 2,586 entries. Both repositories move quickly. We will check by 22 October 2026 whether the browser executor has gained a proxy option, whether the split has changed, and whether the old path still redirects.
Where to go from here
Proxies for browser-use is the browser underneath, where the proxy support lives. Proxies for Roo Code is another project where the feature people want is not where they expect. Proxies for Open Interpreter is the other agent here that moved repo and changed language.
Sources
- The interface repository's identity and its complete file tree: package.json and the GitHub trees API at release v1.21.0, OpenHands/OpenHands, read 22 September 2026.
- The redirect from the old path, the organisation listing and the star counts: GitHub API, read 22 September 2026.
- The browser executor, its docstring and its two constructor options: openhands-tools/openhands/tools/browser_use/impl.py, OpenHands/software-agent-sdk, default branch, read 22 September 2026.
- The browser server with no proxy handling: openhands-tools/openhands/tools/browser_use/server.py, same source.
- The runtime forwarder and its hop by hop headers: openhands-agent-server/openhands/agent_server/docker_runtime/proxy.py, same source.
- The proxy support of the browser underneath: our own reading of browser-use 0.13.10, 19 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.


