Use case

Proxies for OpenHands: you are reading the wrong repository

Where OpenHands actually fetches from, why its browser tool exposes only two options, and what the allowed domains list controls instead.

HProxy Team··Updated September 22, 2026·6 min read
HProxy.Use case

Free proxies won't hold up here.

Shared datacenter IPs get flagged and dropped fast. When it has to hold, gaming, streaming, accounts, you need mobile and residential IPs that read as a real device, from $0.44/GB, pay as you go.

See plans & pricing

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

Which repository answers what
The interface repoThe 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
Source: OpenHands v1.21.0 and software-agent-sdk, read 22 September 2026

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:

OptionDefaultWhat it controls
headlessTruewhether the browser shows a window
allowed_domainsempty listwhich hosts the browser may visit
a proxyabsentnothing, 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 findWhat it actually is
scripts/proxy-utils.mjs in the interfacea development helper that forwards to a backend
src/api/cloud/proxy.ts in the interfacea client for their hosted API
docker_runtime/proxy.py in the SDKthe 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=json returns 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.

Frequently asked questions

How do I set a proxy in OpenHands?
The browser tool does not offer one. It exposes headless mode and an allowed domains list, and nothing else.
Which repository should I read?
The agent SDK. The repo carrying the stars and the project history is now the interface.
The browser underneath supports proxies though?
It does. OpenHands wraps it and does not surface that option, so this is a wrapper question rather than a capability one.
What does the allowed domains list do?
It limits which hosts the browser may visit. It does not change the address it visits them from.
I found a proxy file in the SDK, is that it?
No. That is the agent server forwarding requests to its own container runtime, not a setting for your traffic.

Proxies that don't die mid-job

Residential, ISP, datacenter and mobile, verified by the same engine that runs tens of millions of checks. They read as a real device and hold up under load. Pay as you go, and your balance never expires. $0.44/GB is the 2,000 GB+ rate; a single gigabyte is $0.50/GB, with no minimum order.

129M+ proxy checks run · 100+ countries · HTTP / HTTPS / SOCKS · re-checked every few minutes · no signup

HProxy.

Honest guides and comparisons on proxies, scraping and staying unblocked, from the team that runs the network.

RSS feed