Claude Code 所有请求都超时,但 curl 测端点却是通的
更新于 2026-08-21
一句话:多半是 shell 里残留的网络相关环境变量指向了一个当前环境不可用的地址,每个请求都要先撞一次超时。
现象
claude里发任何消息都要等很久,最后失败- 但用 curl 直接打 API 端点,秒回 200
- 现象是「什么都慢、什么都失败」,没有具体报错指向
原因
客户端会读取 shell 里的网络相关环境变量。如果这些变量指向的地址在当前环境里根本不可达,每个请求都会先尝试连接它、等到超时、才可能回退或直接失败。
curl 之所以正常,往往是因为你测试时用的是另一个终端,或者显式加了参数绕过。
诊断
env | grep -iE "proxy|PROXY"
有输出就说明存在这类变量。逐个确认它们指向的地址在当前环境是否真的可达:
# 举例:如果变量指向 127.0.0.1:某端口,测一下那个端口通不通
curl -sI --max-time 3 http://127.0.0.1:端口号 || echo "该地址在当前环境不可用"
解决
确认不需要这些变量时,在当前会话清掉再试:
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY
claude --version
如果确认要永久清掉,检查这几个文件里有没有相关的 export 语句:
grep -nE "proxy|PROXY" ~/.bashrc ~/.zshrc ~/.profile 2>/dev/null
WSL 环境要特别注意
WSL 和 Windows 是两套独立的网络栈。.bashrc 里写的 127.0.0.1:某端口,在 WSL 里指的是 WSL 自己的回环地址,而不是 Windows 侧的同名端口。如果那个端口只在 Windows 上监听,WSL 里就是连不通的。
结论:WSL 里跑的命令通常直接走默认网络即可。配置了不可用的地址,反而让每个请求都先超时一轮。
怎么确认修好了
env | grep -i proxy # 应无输出
time claude --version # 应在 1 秒内返回
相关
如果清掉环境变量后仍然超时,那问题不在这里,改用 curl 单独验证端点与密钥,把客户端因素排除掉再排查。
还没把 Claude Code 跑起来?
Code2AI(code2ai.codes)提供官方 Claude Code 命令行的订阅制接入, 配置两个环境变量即可开始使用,支持全系列 Claude 模型,额度在控制台实时可查。