tunnel-doctor
An agent skill by daymade, from daymade/claude-code-skills. Tags: debugging, macos, networking, troubleshooting, vpn.
What it does
Diagnoses concrete tunnel and proxy-path failures across macOS and Windows/WSL: Tailscale routing, proxy env/system bypass, SSH double tunneling, VM/container propagation, stalled DNS, TUN DIRECT split-brain, Windows-host TUN cascades, and single-hop or chained proxy node/exit throughput. Use when Tailscale ping works but SSH/HTTP fails, browser returns 503 while curl works, Git SSH closes through the proxy, Docker pull/build fails behind TUN, getaddrinfo stalls while nslookup is fast, raw probes report physically impossible results, domestic DIRECT-routed sites fail while proxied sites work, a blocked port could be your tunnel or the destination's firewall, or the proxy is reachable but real downloads and full Git clones crawl. Also use when Git reports "failed to begin relaying via HTTP", ssh -vvv freezes at "debug2: resolving", ping works but dig times out, or setting up Tailscale SSH to WSL. Use debugging-network-issues only when the root cause remains unknown or belongs to an application/protocol layer.
Install
With the skills CLI, which installs into Claude Code, Codex, Cursor and other agents:
npx skills add daymade/claude-code-skills --skill tunnel-doctor
Or copy the skill folder into Claude Code's skills directory by hand (~/.claude/skills for every project, or .claude/skills inside one):
git clone --depth 1 https://github.com/daymade/claude-code-skills
cp -r claude-code-skills/tunnel-doctor ~/.claude/skills/tunnel-doctor
Safety box score
Grade F, high risk: 67 of 100 risk points, rated 2026-10-20. The grade rates what the skill and its scripts can reach on the machine of whoever installs it, across eight categories from shell execution to secrets access. How the score works.
This skill is a macOS/WSL network repair toolkit: it shells out to local commands, probes remote hosts, and can restart VPN/proxy apps or rewrite proxy/SSH/Docker configs. The main risks are system-wide network changes, touching SSH key and shell config files, and one especially risky install path that pipes a downloaded script straight into `sh`.
| Category | Level | Why |
|---|---|---|
| Code & shell execution | 3 (high) | It runs local shell commands throughout and the helper script uses `subprocess.run(...)`; the skill also includes `curl -fsSL https://tailscale.com/install.sh | sh`, which executes downloaded code. |
| Network access | 2 (moderate) | It actively sends traffic to remote hosts and local LAN services (`curl`, `dig @223.5.5.5`, `git push`, `scp`, Shadowrocket API calls), but mainly for bounded diagnostics and repair. |
| Filesystem reach | 3 (high) | It reads and writes outside the project in persistent user/system locations like `~/.zshrc`, `~/.ssh/config`, `~/.orbstack/config/docker.json`, and `~/Library/.../default.db`. |
| Secrets & credentials | 3 (high) | It explicitly touches sensitive material such as `~/.ssh/id_ed25519`, `~/.ssh/known_hosts`, and `.env` files, so installing it grants access to credential-bearing files. |
| Privilege & persistence | 3 (high) | It uses root-level network repair commands (`sudo route delete`, `sudo killall -HUP mDNSResponder`) and global config changes like `git config --global`, which can alter the host’s system state. |
| Instruction hijack surface | 0 (none) | I did not find remote-instruction fetching, hidden text, or prompts to bypass safeguards; the document is procedural rather than manipulative. |
| Irreversible actions | 2 (moderate) | It can restart VPN/proxy apps, change live routing, and perform repo-pushing workflows (`git push origin main`), but those actions are presented as user-directed repairs rather than unattended automation. |
| Transparency | 0 (none) | All shipped files are readable markdown or Python; there are no binaries, packed blobs, or unpinned remote installers besides the explicit shell-download command already noted. |
Before installing
- Read `scripts/quick_diagnose.py` and confirm you want a helper that shells out to `curl`, `route`, `ifconfig`, and `scutil`.
- Check `SKILL.md` for edits to `~/.zshrc`, `~/.ssh/config`, and `git config --global`; install only if those persistent changes are acceptable.
- Verify you can tolerate root-level network resets like `sudo killall -HUP mDNSResponder` and route deletion on this machine.
- If this account holds sensitive SSH keys or `.env` files, test the skill in a scratch account first.
Rated 2026-10-20 by an automated review of 10 files from the skill's repository.
Source
- Repository
- daymade/claude-code-skills (all skills from this repository)
- Path
- tunnel-doctor/SKILL.md
- Branch
- main
- Updated
- 2026-09-20
Related skills
- debugging-network-issues — Investigates network, streaming, and protocol failures with falsification-first layered experiments.
- macos-permissions — Diagnose and fix macOS TCC permission dialogs and silent denials — Screen Recording, Microphone, Camera, Accessibility, Automation (Apple Events).
- windows-remote-desktop-connection-doctor — Diagnose Windows App (Microsoft Remote Desktop / Azure Virtual Desktop / W365 / direct PC) connection issues on macOS.
- agents-debug — Use when your agent or environment is broken — wrong answers, errors, timeouts, tool failures, or CLI issues. Reads traces and logs to diagnose root causes.
- app-platform-troubleshooting — Debug running App Platform applications by accessing containers, analyzing logs, running diagnostics, and applying fixes.
- chrome-mcp-troubleshooting — Diagnose and fix Claude in Chrome MCP extension connectivity issues.