Before You Open Claude or Codex: Check Your Egress IP Risk 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. 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. 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. A lot of advice online collapses into slogans: “use a clean IP,” “residential is safer,” “datacenter gets banned.” Reality is messier. usage type of residential DYN alone is not a green light. hosting locks out whole clouds. So 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. Open 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: curl https://ip99.com/v1/ip Anonymous 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. A live call on 15 Oct 2026 from a cloud egress returned values move as evidence ages; shape is stable : { "ip": "140.248.50.27", "computed at": "2026-10-15T13:09:35Z", "evidence state": "none", "risk": { "score": 0, "level": "none", "signals": "hosting" }, "network": { "asn": 54113, "usage type": "IDC" }, "geo": { "continent": "NA", "country": "US", "region": "Virginia", "city": "Ashburn", "tz": "America/New York" } } Here 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. curl https://ip99.com/v1/ip/8.8.8.8 Same day, Google Public DNS: { "ip": "8.8.8.8", "evidence state": "none", "risk": { "score": 0, "level": "none", "signals": "hosting" }, "network": { "asn": 15169, "usage type": "IDC" }, "geo": { "country": "US", "city": "Mountain View" } } Again: 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.” 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 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. | Say this | Do not say this | |---|---| | Risk hygiene before login | “Guaranteed no ban / 100% unban” | | Shared exits are higher-risk inputs to abuse systems | “Claude/OpenAI use IP99” unverified | | Evidence expires; re-check when you change networks | “Any VPN is fine if the score is 0” | | Free tier: 500 lookups/day anonymous | Tor detection IP99 has no Tor signal | Fine-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.” Risk 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. If 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 . your current egress curl https://ip99.com/v1/ip any IPv4 / IPv6 you care about curl https://ip99.com/v1/ip/8.8.8.8 Docs: 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. Know 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.