[BUG]
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?
Bug Report: Claude Desktop MCP Server Subprocesses Cannot Access Local Network on macOS Darwin 25.x
---
Summary
MCP servers spawned by Claude Desktop cannot connect to local network IP addresses (192.168.x.x). The same binaries work correctly when spawned from Terminal. This makes it impossible to use any locally-hosted MCP server (e.g., Home Assistant, self-hosted APIs) with Claude Desktop.
---
Environment
- macOS Darwin 25.4.0
- Claude Desktop (latest)
- Hardware: MacBook Pro Intel 16,1
---
Steps to Reproduce
- Configure a local-network MCP server in
claude_desktop_config.json, e.g.:
``json``
{
"mcpServers": {
"my-server": {
"command": "/path/to/uvx",
"args": ["some-mcp-server"],
"env": { "SERVER_URL": "http://192.168.1.x:PORT" }
}
}
}
- Restart Claude Desktop
- Invoke any tool from the MCP server
---
Expected Behavior
The MCP server subprocess connects to 192.168.1.x successfully, as it does when run from Terminal with the same environment variables.
---
Actual Behavior
The subprocess fails immediately with:
httpx.ConnectError: All connection attempts failed
The failure is instant (not a timeout), suggesting the OS is returning EHOSTUNREACH or ENETUNREACH rather than silently dropping packets.
---
Debugging Done
- Confirmed the target server is reachable:
curl http://192.168.1.x:PORTreturns 200 - Confirmed the same binary + token works from Terminal:
uvx --with httpx python -c "import httpx; print(httpx.get('http://192.168.1.x:PORT/api/', headers={...}).status_code)"returns 200 - Tried multiple MCP server implementations: uvx, Python venv, mcp-proxy — all fail identically when spawned by Claude Desktop
- Claude Desktop is not App Sandboxed —
codesign -d --entitlementsshows nocom.apple.security.app-sandboxentitlement - Local Network TCC permission: Claude Desktop is listed and enabled in System Settings → Privacy & Security → Local Network;
uvxis not listed (no prompt was ever shown) tccutil reset LocalNetworkfails with exit code 70 — unusual behavior that may be related- Workaround confirmed: Claude Code CLI (
claudein terminal) using"type": "http"direct connection in~/.claude/settings.jsonworks correctly, because the CLI process itself (not a subprocess) makes the HTTP connection
---
Impact
Any MCP server targeting a local network host is non-functional in Claude Desktop on this OS version. This affects Home Assistant, self-hosted Ollama, local databases, and any other homelab/local-network integration.
---
Hypothesis
Darwin 25.x may have introduced a new OS-level network policy or process group restriction that limits child processes of certain apps from routing to LAN subnets, even without formal App Sandbox. This is distinct from the Local Network TCC permission (which controls Bonjour/mDNS discovery) and appears to affect direct IP connections as well.
What Should Happen?
Expected Behavior
The MCP server subprocess connects to 192.168.1.x successfully, as it does when run from Terminal with the same environment variables.
Error Messages/Logs
Steps to Reproduce
Steps to Reproduce
- Configure a local-network MCP server in
claude_desktop_config.json, e.g.:
``json``
{
"mcpServers": {
"my-server": {
"command": "/path/to/uvx",
"args": ["some-mcp-server"],
"env": { "SERVER_URL": "http://192.168.1.x:PORT" }
}
}
}
- Restart Claude Desktop
- Invoke any tool from the MCP server
Claude Model
Not sure / Multiple models
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
Claude 1.569.0 (49894a) 2026-04-02T20:01:42.000Z
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
Debugging Done
- Confirmed the target server is reachable:
curl http://192.168.1.x:PORTreturns 200 - Confirmed the same binary + token works from Terminal:
uvx --with httpx python -c "import httpx; print(httpx.get('http://192.168.1.x:PORT/api/', headers={...}).status_code)"returns 200 - Tried multiple MCP server implementations: uvx, Python venv, mcp-proxy — all fail identically when spawned by Claude Desktop
- Claude Desktop is not App Sandboxed —
codesign -d --entitlementsshows nocom.apple.security.app-sandboxentitlement - Local Network TCC permission: Claude Desktop is listed and enabled in System Settings → Privacy & Security → Local Network;
uvxis not listed (no prompt was ever shown) tccutil reset LocalNetworkfails with exit code 70 — unusual behavior that may be related- Workaround confirmed: Claude Code CLI (
claudein terminal) using"type": "http"direct connection in~/.claude/settings.jsonworks correctly, because the CLI process itself (not a subprocess) makes the HTTP connection
---
Impact
Any MCP server targeting a local network host is non-functional in Claude Desktop on this OS version. This affects Home Assistant, self-hosted Ollama, local databases, and any other homelab/local-network integration.
---
Hypothesis
Darwin 25.x may have introduced a new OS-level network policy or process group restriction that limits child processes of certain apps from routing to LAN subnets, even without formal App Sandbox. This is distinct from the Local Network TCC permission (which controls Bonjour/mDNS discovery) and appears to affect direct IP connections as well.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗