Most tools let a specific setting override a general one. Huginn does the opposite, on purpose. It is the most carefully built proxy design we have read in this series.
There are three levels and the most general one wins. While it is set, an agent cannot even save a proxy of its own. We read release v2026.09.22 on 22 September 2026.
Which setting decides the route
| Used | Ignored | |
|---|---|---|
| The instance variable | ✓ yes | ✕ no |
| The opt-in variable, with the agent flag | ✓ yes | ✕ no |
| An agent's own proxy, instance one set | ✕ no | ✓ yes |
| An agent's own proxy, instance one unset | ✓ yes | ✕ no |
The three levels, in order
| Level | Set by | When it applies |
|---|---|---|
| Instance proxy | OUTBOUND_PROXY | always, and it forbids the others |
| Opt-in proxy | AGENT_PROXY plus a flag on the agent | when the instance one is unset and the agent asks |
| Per-agent proxy | a proxy option on the agent | only when neither of the above is in force |
Their own comment states the rule plainly:
Instance-wide egress proxy for outbound HTTP(S) requests, configured with the OUTBOUND_PROXY environment variable. When set, every HTTP client that Huginn builds is routed through it and Agents may not choose a proxy of their own.
One nice detail on the third level. The per-agent value is interpolated, so it can be built from Huginn's own templating rather than pasted in.
It refuses bad combinations when you save
No other project in this series does this. Five checks run when an agent is saved, each with its own message:
| Refused | Why |
|---|---|
| a proxy that is not a string | wrong type |
| any proxy, while the instance one is set | "proxy cannot be set because outbound requests of this Huginn instance go through OUTBOUND_PROXY" |
| a proxy combined with the opt-in flag | the two contradict each other |
| a flag that is neither true nor false | wrong value |
| the opt-in flag with no opt-in variable set | nothing to opt into |
So a mistake surfaces in the editor, not three days later in a failed run. That is worth more than most features.
Only http and https, checked at boot
The value must parse as an HTTP URL with a host. Anything else raises an error naming the variable and the form it wants. So a SOCKS address is refused here.
Both variables are validated when the application starts. The opt-in one is read at boot purely to check it. A typo fails at once, rather than on the first run of whichever agent needed it.
It then sets the default for both HTTP libraries the project uses. Their comment says it applies to clients that do not set one explicitly. A client that chose its own keeps it.
The instruction most projects never give
This is the line worth taking away, and it inverts everything else in this series:
Point it at a proxy that refuses private and link-local destinations to keep Agents from reaching internal services.
Elsewhere the application guards itself and treats your proxy as a complication. Activepieces installs filtering agents as its transport. It needs an allow list before it will talk to a proxy on a private address.
Huginn hands that job to the proxy. So if you run this, your proxy is the security control rather than only a route. Pick one that says no to internal addresses.
Which proxy type fits it?
The lane is your agents fetching the open web, which is most of what Huginn does.
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.
One instance, one address, which suits address authentication. It also keeps a password out of an agent option that other users of the instance can read. 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 you use the instance variable, remember what their comment asks of it. Pick a proxy that refuses private destinations, not one that will fetch your own network.
What breaks
- Your agent will not save a proxy. The instance variable is set, and that forbids it.
- Your SOCKS address is refused. Only http and https URLs are accepted.
- The opt-in flag errors. You turned it on without setting the opt-in variable.
- A typo stops the app at boot. Both variables are validated on startup, which is the point.
- One client is not routed. The proxy is a default, and a client that set its own keeps it.
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 Huginn. We did not watch an agent request leave through a proxy, and we did not trigger the validation messages. We did not test whether every agent type honours that default. It is the one place a client could still choose for itself. This project releases almost daily and names its releases by date. We will check by 22 October 2026 whether the instance variable still comes first, whether the URL check still refuses anything but http and https, and whether the five validation messages still exist.
Where to go from here
Proxies for Activepieces is the mirror image, where the application guards itself and your proxy needs permission. Proxies for n8n is the workflow tool people compare this one to. Proxies for LibreChat shows a product with two resolvers instead of three levels.
Sources
- The instance proxy, the opt-in proxy, the URL validation, the startup check and the instruction about private destinations: lib/outbound_proxy.rb. huginn/huginn, release v2026.09.22 of 21 September 2026, read 22 September 2026.
- The order of precedence and the five validation messages: app/concerns/agent_proxy_concern.rb, same release.
- Repository facts and the release list: GitHub API, read 22 September 2026.
- The contrasting design: our own reading of Activepieces 0.91.1, 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.


