ChatGPTClaudeGrok / X / CursorGemini

DSH proxy bypass: seven request paths that stay direct

TroubleshootingPublished 2026-10-21Author: DeepSeek Plugin Market
DeepSeek HarnessproxyHTTPS_PROXYNO_PROXYtroubleshooting
DSH keeps seven request paths direct by design: loopback, Workflow workers, Node PTC, OTel, private web_fetch, OS proxy settings and old Node subprocesses.

“Proxy configured but half the requests bypass it” is not always a DeepSeek Harness bug; several paths stay direct by design. The official docs list loopback, model-written code, telemetry, and private fetches among them. Rule those out first, then check environment variables, SOCKS, and certificates.

DeepSeek Harness: Seven paths that stay direct

Check this list before assuming the proxy failed. Seven:(source)

  1. Loopback — localhost, 127.0.0.0/8, ::1, and 0.0.0.0 always bypass. Expected: the Web UI and local services do not loop through the proxy.
  2. Workflow workers — model-orchestrated workers do not receive proxy settings. Expected: scripts cannot read the proxy URL.
  3. Node PTC runtime — the programmatic tool runtime also receives no proxy. Expected: model code does not carry proxy credentials.
  4. OTel telemetry — the exporter uses Node’s own HTTP client and bypasses the proxy. Expected: when egress is blocked it fails, without affecting the main flow.
  5. Private web_fetch — a literal private address such as http://10.0.0.5/ is rejected, not handed to the proxy. Expected: the proxy cannot be used to reach private space.
  6. OS proxy settings — DSH does not read them. Expected: browser-only proxying is normal.
  7. Old Node subprocesses — Node below 22.21 does not honor proxy variables. Expected: subprocess behavior can differ on the same machine.

Outside this list, model calls, web search, page fetches, and HTTP MCP servers are expected to use the proxy.

DeepSeek Harness: Four NO_PROXY rules

NO_PROXY matches hosts, not networks; a wrong format silently does nothing. Four rules:(source)

  1. Entries are hostnames — example.com also matches its subdomains. Expected: api.example.com bypasses too.
  2. Leading . or *. is equivalent — both forms mean the same thing. Expected: no need to debate syntax.
  3. A port is optional — for example internal.example.com:8080. Expected: bypass only that port.
  4. CIDR does not work — copying 10.0.0.0/8 has no effect. Expected: list hostnames explicitly.

Loopback does not need an entry; DSH always bypasses it to avoid routing its own UI through the proxy.

DeepSeek Harness: SOCKS and ALL_PROXY

SOCKS is not supported; a socks5:// value is skipped and the scheme goes direct. Behavior:(source)

  • socks5:// is reported and skipped — the startup output mentions it. Expected: that scheme bypasses.
  • It does not borrow an HTTP proxy — even with HTTP_PROXY set, https: stays direct. Expected: do not assume one variable covers both.
  • ALL_PROXY works as a fallback — setting it alone covers both protocols. Expected: explicit HTTPS_PROXY is still clearer.

To use a SOCKS proxy, point the variables at the proxy software’s HTTP port instead of using a socks5:// URL.

DeepSeek Harness: Subprocesses and certificates

Proxy variables are inherited by tools DSH runs, but not every subprocess honors them. Three points:(source)

  1. bash, git, gh, and MCP subprocesses inherit — they read standard variables. Expected: command-line tools use the proxy.
  2. Node subprocesses need 22.21+ — older versions go direct. Expected: check the subprocess Node version.
  3. TLS interception needs the CA — if the proxy is reachable but certificate errors persist, set NODE_EXTRA_CA_CERTS to the corporate CA before startup. Expected: chain validation succeeds.

Proxy URL passwords are ordinary environment variables and reach subprocesses, including commands written by the model. Use a credential-free entry point or authentication outside the URL when this matters.

DeepSeek Harness: Three ways to verify

Do not just check whether the proxy app is running; check where the specific request went. Three:(source)

  1. Ask the agent to fetch a page — dsh --profile headless "fetch https://example.com" while watching the proxy log. Expected: the request appears.
  2. Check the environment — env | grep -i proxy. Expected: variables are visible in the startup environment.
  3. Try TUN mode — transparent to programs that ignore variables. Expected: if TUN works, the problem is variable inheritance.

If the results disagree, trust the actual request path; “the browser opens the page” does not prove DSH uses the proxy.

DeepSeek Harness: Three proxy mechanisms

“Browser works, terminal does not” is not a DSH bug; three mechanisms are independent. Compare:(source)

MechanismWho follows itAffects DSH
OS proxy settingsSafari, Chrome, Edge, etc.No
HTTP_PROXY / HTTPS_PROXYcurl, git, npm, pip, DSHYes
TUN modeAll programsTransparent

So the first question is: which mechanism did you change? OS settings do not affect DSH; environment variables do not affect an already-started process without a restart; TUN bypasses variables and takes over traffic.

A symptom-to-path decision tree

Classify the symptom to eliminate half of the false alarms. Order:

  1. Only the browser works — OS settings and terminal variables are separate; export HTTPS_PROXY or use TUN. Expected: terminal commands start using the proxy.
  2. Model calls work, tools do not — check whether the tool is a Node subprocess below 22.21. Expected: upgrade the subprocess Node or use TUN.
  3. Page fetch rejected — check for a literal private address; those are rejected rather than proxied. Expected: no false proxy diagnosis.
  4. No request in the proxy log — compare with the direct-path list; it may be designed to bypass. Expected: stop changing variables that do not apply.
  5. Connection but certificate error — TLS interception; add NODE_EXTRA_CA_CERTS. Expected: chain validation succeeds.

If the tree still does not resolve it, inspect proxy authentication, ports, and upstream rules; do not start by reinstalling.

DeepSeek Harness FAQ

HTTPS_PROXY is set, but model calls still time out—why? Check protocol support, authentication, and certificate trust first, then whether the variable is present in the startup environment. SOCKS and CIDR are two frequent traps.

Can telemetry use the proxy? OTel uses Node’s own HTTP client and bypasses the proxy. To isolate it, disable telemetry rather than expecting the proxy to cover it.

What does NO_PROXY= do?* It bypasses everything. Useful for temporary debugging, not for a permanent configuration.

The short version: separate “designed to bypass” from “should proxy”; once the seven direct paths are ruled out, check variables, SOCKS, certificates, and subprocess versions.

ChatGPTClaudeGrok / X / CursorGemini

FAQ

Why do some requests not appear in the proxy log after setting HTTPS_PROXY?

DeepSeek Harness: not every request uses the proxy. DeepSeek Harness keeps loopback, Workflow workers, Node PTC runtime, OTel telemetry, private web_fetch, OS proxy settings, and old Node subprocesses on direct paths by design. Check the bypass list before assuming the proxy is broken.

Why does the browser use the proxy while dsh does not?

DeepSeek Harness: OS proxy settings and HTTP_PROXY/HTTPS_PROXY are separate mechanisms. Browsers read the OS setting; curl, git, npm, pip, and DSH read environment variables. DSH does not read the OS proxy setting. Export the variables or use TUN mode.

Does DeepSeek Harness support SOCKS proxies?

DeepSeek Harness: no. A socks5:// value is reported and skipped at startup, and that scheme goes direct. Even with HTTP_PROXY set, https requests do not borrow it. Point the variables at the proxy’s HTTP port.

Can NO_PROXY contain CIDR ranges?

DeepSeek Harness: no. NO_PROXY matches hostnames or domain suffixes; CIDR ranges do not work. localhost and 127.0.0.0/8 always bypass the proxy, so they do not need entries.

Why does a Node tool inside a subprocess bypass the proxy?

DeepSeek Harness: a Node subprocess must be version 22.21 or newer to honor proxy variables; older Node goes direct. A value DSH rejects, such as a SOCKS URL, also means direct for Node tools.

Related Terms

NO_PROXY
NO_PROXY lists direct targets by hostname or domain suffix, with an optional port and wildcard support. CIDR ranges do not work, and loopback always bypasses the proxy.— DeepSeek Harness docs - Network proxy
TUN mode
TUN mode routes traffic through a virtual network interface and is transparent to all programs. It does not depend on HTTP_PROXY and can proxy programs that ignore environment variables.— DeepSeek Harness docs - Network proxy
NODE_EXTRA_CA_CERTS
NODE_EXTRA_CA_CERTS tells Node to trust an additional CA bundle. Node reads it only at process startup; a TLS-intercepting corporate proxy needs it.— DeepSeek Harness docs - Network proxy
PTC runtime
The PTC runtime executes model-written programs in DeepSeek Harness. The Node implementation does not receive proxy configuration, so model scripts cannot read a proxy URL that may contain credentials.— DeepSeek Harness reference - PTC runtime

Sources