{"slug": "before-you-open-claude-or-codex-check-your-egress-ip-risk", "title": "Before You Open Claude or Codex: Check Your Egress IP Risk", "summary": "A developer published guidance on checking egress IP risk before authenticating to AI services such as Claude and Codex, arguing that shared residential proxies, recycled VPN exits and dial-up pools routinely appear in fraud and abuse telemetry. The post demonstrates the free IP99 lookup service and its API, which returns fields including evidence_state (active, stale or none), risk score and signals such as proxy, vpn, dialup_pool and hijacked_proxy, with an anonymous tier of 500 lookups per day. The author stresses the tool offers no guarantee of account safety and is intended only for pre-login hygiene checks.", "body_md": "If you use [Claude](https://claude.ai) or [Codex](https://openai.com/codex) — or any AI product whose abuse systems lean hard on network signals — the path you use to log in matters. Shared residential proxies, recycled VPN exits, and dial-up pools show up constantly in fraud and abuse telemetry. Platforms do not publish their exact rules, and this post is **not** a bypass guide. What you *can* do is basic **egress hygiene**: know what your current public IP looks like *before* you authenticate.\n\n[IP99](https://ip99.com/?utm_source=devto&utm_medium=article&utm_campaign=ip99&utm_content=claude-codex-check) (by ThreatHunter) is a free, no-key IP risk and geolocation lookup. It will not guarantee that Claude or Codex keep your account. What it *can* do is tell you whether the address you are about to present already carries fresh proxy-class evidence — and whether that evidence is still active or already aged out.\n\nA lot of advice online collapses into slogans: “use a clean IP,” “residential is safer,” “datacenter gets banned.” Reality is messier.\n\n`usage_type` of residential (`DYN`) alone is not a green light.` hosting` locks out whole clouds.\nSo the useful habit is smaller: before a sensitive login, look up *this* egress *now*, read the evidence state, then decide whether to switch networks — the same way you would avoid a café Wi‑Fi for banking without pretending you cracked the bank’s risk model.\n\nOpen [what-is-my-ip](https://ip99.com/en/what-is-my-ip?utm_source=devto&utm_medium=article&utm_campaign=ip99&utm_content=claude-codex-check) or call the free API with no address path — IP99 answers about the client that reached it:\n\n```\ncurl https://ip99.com/v1/ip\n```\n\nAnonymous tier: **500 lookups/day** per client IP, no signup. Signed-in accounts get a higher daily quota via a self-serve key. Same fields either way.\n\nA live call on **15 Oct 2026** from a cloud egress returned (values move as evidence ages; shape is stable):\n\n```\n{\n  \"ip\": \"140.248.50.27\",\n  \"computed_at\": \"2026-10-15T13:09:35Z\",\n  \"evidence_state\": \"none\",\n  \"risk\": {\n    \"score\": 0,\n    \"level\": \"none\",\n    \"signals\": [\"hosting\"]\n  },\n  \"network\": {\n    \"asn\": 54113,\n    \"usage_type\": \"IDC\"\n  },\n  \"geo\": {\n    \"continent\": \"NA\",\n    \"country\": \"US\",\n    \"region\": \"Virginia\",\n    \"city\": \"Ashburn\",\n    \"tz\": \"America/New_York\"\n  }\n}\n```\n\nHere `hosting` is a **network property** (IDC / CDN-class space), not a proxy verdict. `evidence_state: none` with score 0 means IP99 holds **no current verifiable risk evidence** for this address — a coverage gap or a quiet address, **not** a certificate of safety.\n\n```\ncurl https://ip99.com/v1/ip/8.8.8.8\n```\n\nSame day, Google Public DNS:\n\n```\n{\n  \"ip\": \"8.8.8.8\",\n  \"evidence_state\": \"none\",\n  \"risk\": { \"score\": 0, \"level\": \"none\", \"signals\": [\"hosting\"] },\n  \"network\": { \"asn\": 15169, \"usage_type\": \"IDC\" },\n  \"geo\": { \"country\": \"US\", \"city\": \"Mountain View\" }\n}\n```\n\nAgain: datacenter property, no active proxy-class hit in this feed. Useful as a sanity check that your client and parser work — not as “8.8.8.8 is safe for logins.”\n\n`evidence_state`` active` (fresh evidence still scoring), `stale` (seen before, aged past the window, score 0 — weak feature only), `none` (never seen / no current evidence).`risk.score` / `risk.level`` risk.signals``proxy`, `vpn`, `dialup_pool`, `hijacked_proxy`, `cloud_phone`, `cloud_service` as proxy-class cues. Treat `mobile` as network context. Do not hard-block on the latter alone.`network.usage_type` + `network.asn`\n`hijacked_proxy` deserves a special note: the holder is often a victim whose device was borrowed by malware. For personal pre-checks, treat it as “this egress is contaminated *right now*” and move — not as a reason to accuse a household.\n\n| Say this | Do not say this | \n|---|---|\n| Risk hygiene before login | “Guaranteed no ban / 100% unban” | \n| Shared exits are higher-risk *inputs* to abuse systems | “Claude/OpenAI use IP99” (unverified) | \n| Evidence expires; re-check when you change networks | “Any VPN is fine if the score is 0” | \n| Free tier: 500 lookups/day anonymous | Tor detection (IP99 has **no** Tor signal) | \n\nFine-grained co-tenancy (`share_tier` T0–T3) is a **Pulse** professional field for operators who choose whether to block an IP. For personal pre-checks, the practical cue is simpler: proxy-class signals plus a non-`none` evidence state usually means “pick another egress.”\n\nRisk data on IP99 updates on the order of **seconds** (the product states a 10-second refresh cadence), while many static blocklists refresh on days. The score is designed to **decay** as evidence ages. An address that was a proxy exit last week may be a quiet NAT today — which is exactly why a screenshot from last month is a bad decision input, and a two-minute lookup before you open Claude or Codex is a better one.\n\nIf you are wiring tools into Claude Code, Cursor, or another MCP client, the same lookup is exposed as `ip_risk_lookup` on `https://ip99.com/mcp` (anonymous Streamable HTTP; OAuth account URL if you want the signed-in quota). Humans can stick to the website or `curl`.\n\n```\n# your current egress\ncurl https://ip99.com/v1/ip\n\n# any IPv4 / IPv6 you care about\ncurl https://ip99.com/v1/ip/8.8.8.8\n```\n\nDocs: [ip99.com/api](https://ip99.com/api?utm_source=devto&utm_medium=article&utm_campaign=ip99&utm_content=claude-codex-check). Quotas and overseas self-serve plans: [ip99.com/en/pricing](https://ip99.com/en/pricing?utm_source=devto&utm_medium=article&utm_campaign=ip99&utm_content=claude-codex-check). IP99 is built by ThreatHunter.\n\nKnow the exit you present. Re-check when the path changes. Treat 0 as “no current evidence,” not as a free pass — and you will make fewer avoidable login mistakes without pretending any API can promise an unban.", "url": "https://wpnews.pro/news/before-you-open-claude-or-codex-check-your-egress-ip-risk", "canonical_source": "https://dev.to/ip99/before-you-open-claude-or-codex-check-your-egress-ip-risk-3002", "published_at": "2026-10-15 13:14:25+00:00", "updated_at": "2026-10-15 13:20:09.508249+00:00", "lang": "en", "topics": ["ai-tools", "ai-products", "developer-tools"], "entities": ["Claude", "Codex", "OpenAI", "IP99", "ThreatHunter", "Google Public DNS"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/before-you-open-claude-or-codex-check-your-egress-ip-risk", "markdown": "https://wpnews.pro/news/before-you-open-claude-or-codex-check-your-egress-ip-risk.md", "text": "https://wpnews.pro/news/before-you-open-claude-or-codex-check-your-egress-ip-risk.txt", "jsonld": "https://wpnews.pro/news/before-you-open-claude-or-codex-check-your-egress-ip-risk.jsonld"}}