Skip to content

Orbstack 2.1.2 🔥 bug: HTTP_PROXY env vars injected into containers despite network_proxy: none, breaking any inter-container HTTP(S) on user-defined Docker networks #2449

Description

@Housik

Summary

In OrbStack 2.1.2, every container started by Docker (default bridge and user-defined networks) receives HTTP_PROXY, HTTPS_PROXY, ALL_PROXY pointing to http://proxyproxy.orb.internal:8305, even when proxy is explicitly disabled in Settings (GUI shows None, CLI shows network_proxy: none).

The injected proxy then fails to route HTTP traffic between containers on user-defined Docker networks and returns 502 Bad Gateway for every inter-container HTTP request.

This breaks any docker-compose stack that relies on container-to-container HTTP.

Worked fine in 2.1.1. Regression introduced in 2.1.2.

Environment

Item Value
OrbStack 2.1.2 (2010200) — commit a1770d5
Host OS macOS 15 (Darwin 24.6.0), Apple Silicon
Docker network user-defined bridge and default bridge — both affected
Container images Verified with alpine, curlimages/curl, minio/mc, minio/minio

Configuration (proxy is OFF)

$ orb config show | grep -i proxy
network.proxy.exclude:
network_proxy: none

GUI: Settings → Network → Proxy = None.

Impact

  • Breaks docker compose up for stacks doing internal HTTP between services — observed with MinIO bucket initialization (mc mb returns 502 Bad Gateway), but applies to any S3 client, internal REST call, or curl-based healthcheck.
  • Init containers using condition: service_completed_successfully fail, blocking dependent services (docker compose exits non-zero).
  • Silent failure mode — application code just sees opaque 502s and the proxy is invisible from the user's perspective.

Workaround

Manually unset the proxy in every affected service in compose.yaml:

environment:
  HTTP_PROXY: ""
  HTTPS_PROXY: ""
  ALL_PROXY: ""
  http_proxy: ""
  https_proxy: ""
  all_proxy: ""
  NO_PROXY: "*"
  no_proxy: "*"

This should not be necessary when proxy is set to none.

Suggested fix

Honor network_proxy: none (and GUI None) by skipping *_PROXY env injection entirely for new containers — restoring 2.1.1 behavior.

Reproduction

Step 1 — confirm proxy is disabled

orb config show | grep network_proxy
# → network_proxy: none

Step 2 — inspect env vars in any container

docker run --rm alpine env | grep -i proxy

Actual output (proxy is supposedly none):

HTTP_PROXY=http://proxyproxy.orb.internal:8305
HTTPS_PROXY=http://proxyproxy.orb.internal:8305
ALL_PROXY=http://proxyproxy.orb.internal:8305
http_proxy=http://proxyproxy.orb.internal:8305
https_proxy=http://proxyproxy.orb.internal:8305
all_proxy=http://proxyproxy.orb.internal:8305
NO_PROXY=localhost,127.0.0.1,...,*.orb.internal,...

Expected output: no proxy variables at all.

Step 3 — demonstrate the 502 on inter-container HTTP

docker network create demo
docker run -d --name minio --network demo \
  -e MINIO_ROOT_USER=admin -e MINIO_ROOT_PASSWORD=admin12345 \
  minio/minio:latest server /data

# A) With injected proxy (default behavior in 2.1.2)
docker run --rm --network demo curlimages/curl:latest \
  -s -o /dev/null -w "HTTP %{http_code}\n" \
  http://minio:9000/minio/health/live
# → HTTP 502     (request goes through proxyproxy.orb.internal:8305)

# B) Bypassing the proxy
docker run --rm --network demo curlimages/curl:latest \
  --noproxy '*' -s -o /dev/null -w "HTTP %{http_code}\n" \
  http://minio:9000/minio/health/live
# → HTTP 200     (direct connection works fine)

The 502 is returned by proxyproxy.orb.internal:8305, not by MinIO — verified with curl -v:

* Established connection to proxyproxy.orb.internal (0.250.250.200 port 8305)
> GET http://minio:9000/minio/health/live HTTP/1.1
> Host: minio:9000
< HTTP/1.1 502 Bad Gateway
< Connection: close
< Content-Length: 0

Expected behavior

When network_proxy: none (or GUI = None), no *_PROXY environment variables should be injected into containers — matching 2.1.1 behavior and the documented contract.

Actual behavior

*_PROXY variables are injected unconditionally and the proxy returns 502 Bad Gateway for any inter-container HTTP request on user-defined networks (the very networks docker-compose uses by default).

Diagnostic report (REQUIRED)

OrbStack info:
Version: 2.1.2
Commit: a1770d56d56ee2ac0deadd1f025177313e242f45 (v2.1.2)

System info:
macOS: 15.7.4 (24G517)
CPU: arm64, 12 cores
CPU model: Apple M3 Pro
Model: Mac15,6
Memory: 36 GiB

Full report: https://orbstack.dev/_admin/diag/orbstack-diagreport_2026-05-10T09-47-10.103510Z.zip

Metadata

Metadata

Assignees

No one assigned

    Labels

    t/bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions