[BUG] **Claude Code CLI cannot access local network on macOS — missing Info.plist causes TCC Local Network permission to fail silently**

Resolved 💬 4 comments Opened Feb 23, 2026 by mcburnia Closed Mar 24, 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?

Title: Claude Code CLI binary cannot access local network devices on macOS (bundle_id: null in nehelper)

Environment:

macOS 15.4 (Darwin 24.6.0), Apple Silicon
Claude Desktop 1.1.4010
Claude Code CLI 2.1.49
Binary path: ~/Library/Application Support/Claude/claude-code/2.1.49/claude
Description:
The Claude Code CLI binary is unable to connect to devices on the local network (e.g., SSH to another machine on the same subnet). Connections to the internet and the default gateway work fine, but any connection to another LAN device returns errno 65: No route to host.

Root Cause:
The CLI binary is a standalone Mach-O executable signed as com.anthropic.claude-code but it is not an .app bundle and has no embedded Info.plist. macOS requires NSLocalNetworkUsageDescription in an Info.plist to properly grant Local Network permissions via TCC.

System log evidence (log stream --predicate 'subsystem == "com.apple.networkd" OR subsystem == "com.apple.network"'):

UserEventAgent: (com.apple.networkextension) Got local network blocked notification: pid: 2449, uuid: 16498C8A-1897-307F-AD07-860AF071CE77, bundle_id: (null)
nehelper: [com.apple.networkextension:] Draining local network replies for TEAMID.com.anthropic.claude-code with allowed: 0

Key observations:

bundle_id: (null) — macOS cannot resolve the binary's bundle identity
allowed: 0 — access is denied despite the Local Network toggle being "on" in System Settings
The "Claude Terminal" entry in System Settings > Privacy & Security > Local Network toggles itself back to "off" on each restart of Claude Code
Process chain:

Claude.app (com.anthropic.claudefordesktop)
→ disclaimer (identifier: "disclaimer", no bundle ID)
→ claude CLI (com.anthropic.claude-code, no Info.plist)
→ /bin/zsh (shell executing commands)

Code signing details of CLI binary:

Identifier=com.anthropic.claude-code
Format=Mach-O thin (arm64)
Flags=0x10000(runtime)
Info.plist=not bound ← this is the problem
TeamIdentifier=Q6L2SF6YDW

Entitlements (CLI binary):

com.apple.security.cs.allow-jit = true
com.apple.security.cs.allow-unsigned-executable-memory = true
com.apple.security.cs.disable-library-validation = true

No com.apple.security.network.client or local network entitlements present.

Workaround:
Set up an SSH tunnel from a regular terminal: ssh -N -L 2222:localhost:22 user@server, then Claude Code connects via ssh -p 2222 user@localhost.

Expected fix:
The Claude Code CLI binary needs an embedded Info.plist with NSLocalNetworkUsageDescription, or it needs to be distributed as a proper .app bundle, so that macOS TCC can correctly associate and enforce Local Network permissions.

What Should Happen?

xpected Behavior:

When the "Claude Terminal" Local Network toggle is set to "on" in System Settings, the Claude Code CLI should be able to connect to devices on the local network (e.g., SSH to other machines on the same subnet). The toggle should persist across restarts.

Error Messages/Logs

UserEventAgent: (com.apple.networkextension) Got local network blocked notification: pid: 2449, uuid: 16498C8A-1897-307F-AD07-860AF071CE77, bundle_id: (null)
nehelper: [com.apple.networkextension:] Draining local network replies for TEAMID.com.anthropic.claude-code with allowed: 0

Steps to Reproduce

Have a second machine on your local network (e.g., 192.168.1.107)
Open Claude Code and run any command that connects to a LAN device (e.g., ssh user@192.168.1.107)
Observe No route to host error
Toggle "Claude Terminal" to on in System Settings → Privacy & Security → Local Network
Retry — still fails
Restart Claude Code — toggle has reverted to off

Claude Model

Opus

Is this a regression?

Yes, this worked in a previous version

Last Working Version

_No response_

Claude Code Version

andimcburnie@Andis-MacBook-Pro ~ % claude --version zsh: command not found: claude andimcburnie@Andis-MacBook-Pro ~ %

Platform

Other

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

Everything was working fine until I received a pop up on my laptop asking if I wanted to grant claude code access to other devices on my network and because claude and I had been working fine for days, I thought it may be some anomaly, so I clicked NO. We have spent the past day trying to fix it and the best we have come up with is a tunnel workaround.

View original on GitHub ↗

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