Claude Code / Codex exit check
A clean browser doesn’t mean Claude Code is clean. The terminal’s exit needs its own check.Run this in your terminal:
curl -sL ipjudge.org/en/cc | bashRead-only: it installs, changes and uploads nothing. It asks api.anthropic.com, claude.ai, api.openai.com and chatgpt.com which IP they see, compares with the no-proxy exit, and checks IPv6 and the time zone. Below is the browser-side check — compare its “IP used for Claude”.
Checking your network exit…
Start hereThe first suggested action appears when checks finish.Can you use these AI platforms?
By each company’s official regions + the exit you actually reach them fromNext step
Based on what your exit actually showsHow to fix
Most serious first · what happened → how to fix itWhen all checks finish, issues and fixes are listed here, most serious first.
Who sees which of your IPs
Grouped by exitShown when the checks finish.
IP details
The exit that opened this siteLooking up…
Browser and connection checks
13 checks · tap for details · run only between your browser and our probeShow all 13 checks
Proxies often route by domain: the IP that opened this site is not necessarily the one Claude or ChatGPT sees. The first two checks ask claude.ai and chatgpt.com directly.
Run the check from inside Claude Code
With IP Judge’s Agent Skill installed, ask Claude Code (or Codex / Cursor) to check the terminal exit. It runs the same read-only check and lays out what it observed, what it flagged and what it could not finish. The check changes no settings; anything unfinished is labelled as such rather than treated as a pass. Source.
npx skills add ipjudge/ipjudge --skill ipjudge-exit-check --agent claude-code
Does the terminal exit relate to residential IP?
Long Claude Code tasks are sensitive to connection stability: if the exit IP changes mid-run, the SSE stream drops and the task stalls. So beyond confirming the terminal actually uses a proxy, the exit needs to stay put. IP type is another lead — community reports show datacenter ranges being challenged more often, but that is user observation, not a published Anthropic rule.
Setting up a proxy for the terminal →FAQ
Why do the terminal and browser use different exits?
Many proxy apps default to “system proxy” mode: browsers follow it, terminals don’t. Without HTTPS_PROXY, Claude Code goes direct. TUN / enhanced mode, or setting the variables, fixes it.
How do I set a proxy for the terminal?
Add this to ~/.zshrc or ~/.bashrc (use your proxy app’s HTTP / mixed port, often 7890 or 7897):
export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890Open a new terminal and run the check again. Per Claude Code’s docs, it only reads https_proxy / HTTPS_PROXY / http_proxy / HTTP_PROXY — no SOCKS, and no ALL_PROXY. You can also put them in the env block of ~/.claude/settings.json, which is the only place background Claude Code sessions read.
What about Windows?
Run the same command in Git Bash or WSL. In PowerShell, curl.exe -s https://api.anthropic.com/cdn-cgi/trace shows the ip= and loc= lines.
Further reading
Related guides
These go deeper on the problems aboveWhich exit do Claude Code / Codex use?
A clean browser doesn’t mean a clean terminal. Run this in your terminal:
curl -sL ipjudge.org/en/cc | bash
Is the residential IP you bought really a home line?
The check looks at the IP itself, not the seller’s description: type, native or broadcast, blocklists and proxy flags, each with its evidence. For several IPs:
curl -s ipjudge.org/en/ip/THE_IP