最近在 Windows 上折腾 Claude Code 时,遇到了一个非常迷惑的问题:
claude --version 能正常输出 2.1.141 (Claude Code),说明命令已安装成功、PATH 配置正确
但只要输入 claude 或 claude "hello",终端就会一直卡住,没有任何报错输出
更诡异的是:执行几条命令后偶尔能恢复正常,但重新打开终端后问题再次复发。
一开始我怀疑过各种可能:Claude Code 没装好、PowerShell 版本太低、Node.js /nvm 环境有问题、Windows 终端兼容性不好……但最终定位下来,真正的问题其实非常简单:PowerShell 中残留了无效的代理环境变量,导致 Claude Code 的网络请求被阻塞。
关键还在于:我一开始的“修复”只是清掉了当前终端会话里的变量,并没有删除用户级的全局环境变量,所以每次重开终端,这些代理变量又会自动回来,Claude 就再次卡住。
一、问题现象
执行以下命令:
claude --version
输出正常:
2.1.141 (Claude Code)
这说明:
- Claude Code 已经安装成功
- 命令已经注册到 PATH
- npm 全局安装没有问题
- 可执行文件本身没有损坏
但是执行:
claude
终端就会一直卡住,没有输出,也没有报错,看起来“死掉了一样”。
这种问题很容易被误判成安装问题,但它实际上已经不是“安装阶段”的问题,而是“运行阶段”的问题。
永久解决方案:删除用户级环境变量
方案一:使用 PowerShell 命令删除
[Environment]::SetEnvironmentVariable("HTTP_PROXY", $null, "User")
[Environment]::SetEnvironmentVariable("HTTPS_PROXY", $null, "User")
[Environment]::SetEnvironmentVariable("ALL_PROXY", $null, "User")
方案二:使用图形界面删除
如果你不想用 PowerShell,也可以用 Windows 图形界面操作:
- 打开“开始菜单”,搜索 “环境变量”
- 点击 “编辑系统环境变量”
- 点击 “环境变量” 按钮
- 在 “用户变量” 列表里查找:
- HTTP_PROXY
- HTTPS_PROXY
- ALL_PROXY
- 选中它们,点击 删除
如果你怀疑系统级环境变量里也有相同的值,也可以顺便检查 “系统变量” 区域
解决方案来自网络。
醉里不知天在水 𢵗水捧月扰清波。