[BUG] Claude Code desktop (macOS): resolves system PAC and injects a global HTTP_PROXY into child processes (loses per-domain routing)
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
With only a system PAC configured (no manual proxy, nothing in launchd/shell), the Claude Code desktop app injects HTTP_PROXY/HTTPS_PROXY, set to the PAC-resolved proxy address, into its own process and the tools it spawns. Because an env-var proxy is all-or-nothing, all child-process traffic (git, npm, telemetry) is routed to the proxy, not just the domains the PAC selects. Behind a selective/inspecting proxy this breaks non-selected traffic; developers are forced to NO_PROXY everything, bypassing the proxy entirely
What Should Happen?
Honor the PAC's per-domain decisions for child processes. Don't set a blanket HTTP_PROXY, or set a matching NO_PROXY so only PAC-selected domains use the proxy; at minimum make proxy propagation configurable
Error Messages/Logs
Steps to Reproduce
- scutil --proxy → ProxyAutoConfigEnable = 1 (…/proxy.pac), HTTPEnable = 0, HTTPSEnable = 0
- launchctl getenv HTTP_PROXY / HTTPS_PROXY → empty
- plain-terminal env | grep -i proxy → empty
- Inside the Claude Code desktop app, env | grep -i proxy → HTTP_PROXY/HTTPS_PROXY set to the PAC-resolved proxy
Claude Model
_No response_
Is this a regression?
No, this never worked
Last Working Version
_No response_
Claude Code Version
2.1.148
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
macOS 26.0, Claude for Mac 1.26832.0, Claude 2.1.148. (Related but distinct: #74913 - Claude Desktop hangs on PAC; this one over-proxies instead of hanging.)