[BUG]

Resolved 💬 3 comments Opened Apr 7, 2026 by mc0leman Closed Apr 7, 2026

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

  1. 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" }
}
}
}
``

  1. Restart Claude Desktop
  2. 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:PORT returns 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 --entitlements shows no com.apple.security.app-sandbox entitlement
  • Local Network TCC permission: Claude Desktop is listed and enabled in System Settings → Privacy & Security → Local Network; uvx is not listed (no prompt was ever shown)
  • tccutil reset LocalNetwork fails with exit code 70 — unusual behavior that may be related
  • Workaround confirmed: Claude Code CLI (claude in terminal) using "type": "http" direct connection in ~/.claude/settings.json works 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

  1. 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" }
}
}
}
``

  1. Restart Claude Desktop
  2. 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:PORT returns 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 --entitlements shows no com.apple.security.app-sandbox entitlement
  • Local Network TCC permission: Claude Desktop is listed and enabled in System Settings → Privacy & Security → Local Network; uvx is not listed (no prompt was ever shown)
  • tccutil reset LocalNetwork fails with exit code 70 — unusual behavior that may be related
  • Workaround confirmed: Claude Code CLI (claude in terminal) using "type": "http" direct connection in ~/.claude/settings.json works 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.

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗