dsh-wsl-fetch
Manifest validRegisters a wsl-proxy ctx.web fetch provider so official web_fetch uses undici ProxyAgent through HTTP(S)_PROXY instead of connecting from WSL to a DNS-pinned public IP (the official path that produce
dsh-wsl-fetch
Kit: dsh-wsl-kit. Use
KIT_SET=dailyorllm(both install this plugin).
Version / Works-with one-liner: see Compatibility below (kept in sync with dsh-wsl-kit).
DeepSeek Harness plugin: make official web_fetch use the Windows HTTP proxy from WSL.
Compatibility
| Field | Value |
|-------|-------|
| Plugin | dsh-wsl-fetch 0.1.1 |
| Minimum dsh | ≥ 0.1.2 (web UI one-shot ?token= on Windows relay :3081) |
| Latest verified | See dsh-wsl-kit Compatibility (currently 0.1.5-rc.1) — single source of truth for the suite |
| Kit set | daily (also in github / full; fetch+net also in llm) |
| Cloud Flash | Use model id deepseek-flash (V4.1 Flash) in ~/.dsh/settings.yaml / llm-deepseek — not configured by this plugin |
| Agent Teams | Upstream experimental; not required here |
Suite floor versions: kit check-plugin-versions.sh. Fault tree: TROUBLESHOOTING.md.
Scope: in-process official web_fetch via undici ProxyAgent. Requires HTTP(S)_PROXY. Cloudflare 403/1010 through Clash needs a DIRECT rule — outside this plugin.
Why
Official dsh-web-fetch-http resolves DNS in WSL, then connects directly to that public IP with a custom undici Agent. That bypasses NODE_USE_ENV_PROXY. DeepSeek API can work (global fetch + proxy) while Mattermost/docs web_fetch fails with TypeError: fetch failed.
dsh-wsl-net only injects proxy env into child bash/npm. It cannot fix in-process web_fetch.
This plugin registers fetch provider wsl-proxy and, when HTTPS_PROXY / HTTP_PROXY is set, selects it so web_fetch uses undici ProxyAgent.
Private/localhost URLs stay blocked.
Install
dsh plugin --profile web add github:173787247/dsh-wsl-fetch
Or via kit: KIT_SET=daily bash install.sh (includes this plugin).
Local checkout:
dsh plugin --profile web add /path/to/dsh-wsl-fetch
Restart with kit restart-dsh-web.sh (NODE_USE_ENV_PROXY=1 + proxy env). Open a new session.
Awesome listing: awesome-dsh-plugin entry (#4736 merged).
Config
- id: dsh-wsl-fetch
name: dsh-wsl-fetch
config:
timeoutMs: 30000
maxRedirects: 5
retries: 2
retryDelayMs: 400
| Key | Default | Meaning |
|-----|---------|---------|
| timeoutMs | 30000 | Fetch deadline |
| maxRedirects | 5 | Same-site redirects (www ↔ apex allowed) |
| retries | 2 | Extra attempts after transient proxy/network failure |
| retryDelayMs | 400 | Base delay between retries (× attempt) |
| maxResponseBytes | 5000000 | Body byte cap |
| maxBodyChars | 100000 | Decoded char cap |
| userAgent | product UA | Request User-Agent |
If HTTP(S)_PROXY is missing, the plugin stays registered but unavailable; official http remains selected.
What success / failure look like
- Log:
[dsh-wsl-fetch] web_fetch via proxy (...:port) provider=wsl-proxy→ provider is active. - Red fetch UI with that log line → per-URL proxy/TLS/site failure (retry another source). Not “plugin missing”.
- Cloudflare 403 / 1010 through Clash → site WAF; add Clash DIRECT for that host. This plugin cannot override WAF.
Test
npm test
# live proxy path (same as dsh web_fetch)
bash scripts/stress.sh
Changelog
See CHANGELOG.md.
License
MIT
Similar plugins
by izwarm195
dsh-net-tools: reliable outbound networking for sandboxed DSH agents — net_fetch (proxy CONNECT-tunnel HTTP fetch) and net_proxy_status (proxy diagnostics).
★ 3
MIT
JavaScript
Aug 17, 2026
dsh plugin --profile web add dsh-net-toolsExpose the DSH Web GUI over IPv6 or IPv4 from WSL2 through a reverse proxy (Lucky): /wan up sets up the socat relay, Windows portproxy, firewall, and trusted-host fence, with a Settings card plus comm
★ 0
dsh plugin --profile web add dsh-wsl-exposePer-execution HTTP/SOCKS5 proxy routing for Agent fetches, LLM providers, and shell commands, with settings-backed hot reload, approval-gated controls, and credential-safe status.
★ 0
dsh plugin --profile web add dsh-proxy-routingby smanx
HTTP + WebSocket 反向代理:把局域网端口转发到本地 DSH 服务
★ 20
JavaScript
Sep 5, 2026
dsh plugin --profile web add @smanx/dsh-proxyby Yurzi
Configurable non-public address allowlists for DeepSeek Harness web_fetch
★ 4
↓ 297/wk
MIT
TypeScript
Sep 11, 2026
dsh plugin --profile web add dsh-web-fetch-enhancedby mafeis
Route agent network requests through a local HTTP/CONNECT/SOCKS5 proxy.
★ 11
MIT
JavaScript
Sep 15, 2026
dsh plugin --profile web add dsh-net-proxy