opencode-proxy-inject
v0.1.0
Published
OpenCode plugin: inject proxy env vars (ALL_PROXY/HTTPS_PROXY/NO_PROXY) at startup so Bun fetch routes through Clash mixed-port
Maintainers
Readme
opencode-proxy-inject
OpenCode plugin that injects proxy environment variables (ALL_PROXY, HTTPS_PROXY, NO_PROXY) into the Bun process at startup, so Bun's native fetch routes through a local proxy (e.g., Clash mixed-port=9999).
Problem
Bun does not read macOS system proxy settings, and OpenCode's shell.env only affects shell subprocess environments — not Bun's own network layer. When Clash TUN mode is intermittently unstable, direct connections to chatgpt.com fail with Unable to connect.
This plugin injects proxy vars into process.env before any plugin network requests occur.
Installation
{
"plugin": [
"[email protected]",
"opencode-openai-codex-auth"
]
}Order matters: place opencode-proxy-inject before opencode-openai-codex-auth so proxy is set before any OAuth requests.
Behavior
| Condition | Action |
|-----------|--------|
| Proxy port unreachable (300ms timeout) | Warn and skip injection |
| ALL_PROXY already set | Skip (never overwrite user config) |
| HTTPS_PROXY already set | Skip (never overwrite user config) |
| NO_PROXY not set | Set to localhost,127.0.0.1,::1,.local |
| NO_PROXY already set | Merge missing local entries (append only) |
Configuration
| Variable | Default | Description |
|----------|---------|-------------|
| OPENCODE_PROXY_URL | http://127.0.0.1:9999 | Override the proxy address |
Defaults
- Proxy:
http://127.0.0.1:9999(Clashmixed-port) - Local bypass (
NO_PROXY):localhost,127.0.0.1,::1,.local- This preserves direct access to local providers (e.g.,
127.0.0.1:8317)
- This preserves direct access to local providers (e.g.,
Verification
After OpenCode starts, check the startup log for:
[opencode-proxy-inject] Injected: ALL_PROXY, HTTPS_PROXY, NO_PROXY → http://127.0.0.1:9999 (NO_PROXY=localhost,127.0.0.1,::1,.local)If Clash is not running:
[opencode-proxy-inject] Proxy http://127.0.0.1:9999 unreachable (300ms timeout) — skipping env injection.Rollback
Remove opencode-proxy-inject from the plugin array in opencode.json. No other changes required.
When to Remove
Remove this plugin if OpenCode adds native proxy support, or if Clash TUN mode becomes stable enough that explicit proxy injection is no longer needed.
