Skip to content

Instantly share code, notes, and snippets.

@docularxu
Last active May 7, 2026 02:22
Show Gist options
  • Select an option

  • Save docularxu/db0053008b9f41328f29d39ffcf7c2b2 to your computer and use it in GitHub Desktop.

Select an option

Save docularxu/db0053008b9f41328f29d39ffcf7c2b2 to your computer and use it in GitHub Desktop.
在中国使用 Claude Code 解决 403 错误 - 完整指南(中文版)

在中国使用 Claude Code 解决 403 错误 - 完整指南(中文版)

在中国使用 Claude Code 解决 403 错误

2026 年 2 月 12 日

如果你在中国尝试使用 Claude Code,大概率会撞上 403 错误。本文覆盖三种使用场景的解决方案:

  • macOS 终端 (shell) - 在终端里直接使用 claude 命令行
  • VS Code 终端 - 在 VS Code 内置终端里使用 claude 命令行
  • VS Code Claude Code 扩展 - 使用 VS Code 里的 Claude Code 聊天面板

三种场景的根本原因和解决思路相同,但各有各的坑。

报错信息

你会看到以下错误之一:

OAuth error: Failed to fetch user roles: Request failed with status code 403
Unable to connect to Anthropic services
Failed to connect to api.anthropic.com: ERR_BAD_REQUEST
Note: Claude Code might not be available in your country.

我花了一上午搞定这个问题,把踩过的坑都记录下来,希望能帮你少走弯路。

问题根源

Anthropic 屏蔽了来自中国 IP 的 API 访问。这影响所有环节 - OAuth 登录、API 调用、CLI 和 VS Code 扩展。即使你有付费的 Claude Max 订阅,从中国 IP 发出的请求一律 403。

快速测试:

curl -I https://api.anthropic.com

如果返回 HTTP/2 403 - 说明被屏蔽了。如果超时 - 可能是 DNS 或防火墙问题。

这些方法不管用

❌ 反复重新登录

OAuth 授权码交换本身能成功(浏览器里拿到 code),但 roles 接口返回 403。重新 /login、清除凭证、换浏览器都没用。屏蔽是基于 IP 的,跟账号无关。

❌ 只设置 VS Code 的 http.proxy

在 VS Code 设置里加:

{
  "http.proxy": "http://127.0.0.1:7890"
}

亲测没用。Claude 扩展似乎不读 VS Code 的代理设置。

❌ 从 Dock/Finder 启动 VS Code

macOS 从 Dock 或 Finder 启动的 GUI 应用不会继承 shell 环境变量。所以即使你在 ~/.zshrc 里设了 HTTPS_PROXY,从 Dock 启动的 VS Code 也看不到。

正确的做法

✅ 第一步:配置代理

我用的是 Clash + 境外代理服务器。其他工具也行(V2Ray、Shadowsocks 等),只要能提供 HTTP 代理端口。

你需要知道代理的 HTTP 端口号,查看方法:

  • Clash: Settings → HTTP Port(默认 7890)
  • V2Ray: 配置文件的 inbounds 段,找 HTTP 代理端口
  • Shadowsocks: 通常是 1080(SOCKS)或查看客户端的 HTTP 代理设置

我的 Clash 跑在本地 7890 端口(你的可能不同,后续操作请替换成你自己的端口)。验证代理是否可用:

curl -I --proxy http://127.0.0.1:7890 https://api.anthropic.com

看到 HTTP/1.1 200 Connection established 后面跟一个非 403 的响应就对了(404 也行 - 说明请求到达了 Anthropic 的服务器)。

✅ 第二步:设置 HTTPS_PROXY 环境变量

macOS (zsh):

echo 'export HTTPS_PROXY="http://127.0.0.1:7890"' >> ~/.zshrc
source ~/.zshrc

Linux (bash):

echo 'export HTTPS_PROXY="http://127.0.0.1:7890"' >> ~/.bashrc
source ~/.bashrc

✅ 场景一:macOS 终端(Claude CLI)

设好 HTTPS_PROXY 后,直接登录:

claude /login

OAuth 流程正常完成 - 浏览器打开、拿到授权码、粘贴回来,roles 接口不再 403,因为流量走了代理。

如果之前登录失败过,先清除状态:

claude /logout
claude /login

登录成功后,claude 在任何终端会话中都能正常使用(前提是 HTTPS_PROXY 已设置)。

✅ 场景二:VS Code 终端

如果你从终端启动 VS Code,它的内置终端会继承 shell 的 HTTPS_PROXY。所以 claude 命令行在 VS Code 终端里也能用。

关键:必须从终端启动 VS Code,不能从 Dock/Finder 启动(见上面"不管用的方法")。

macOS 上,如果 code 命令被映射到了其他编辑器(我的映射到了 Cursor),用:

open -a "Visual Studio Code" .

可以设个别名方便使用:

echo 'alias vscode="open -a \"Visual Studio Code\""' >> ~/.zshrc
source ~/.zshrc
# 之后直接:
vscode .

✅ 场景三:VS Code Claude Code 扩展

Claude Code 扩展(VS Code 里的聊天面板)同样需要 HTTPS_PROXY 来连接 Anthropic 服务器。规则一样:从终端启动 VS Code,让扩展进程继承代理变量。

这样启动后,打开 Claude Code 聊天面板就能正常连接了。

✅ 附加:VS Code Remote SSH

如果你通过 VS Code SSH 到远程机器(比如 Linux 虚拟机),Claude 扩展运行在远程端。所以远程机器也需要设置 HTTPS_PROXY

我的环境:MacBook Pro 上跑 Parallels Ubuntu 虚拟机。Mac 的桥接网卡 IP 是 192.168.2.1,在虚拟机里:

echo 'export HTTPS_PROXY="http://192.168.2.1:7890"' >> ~/.bashrc
source ~/.bashrc

确保你的代理允许局域网连接(Clash 里打开 Allow LAN)。

然后在 Mac 端从终端启动 VS Code,打开 Remote SSH 会话,远程机器上的 Claude 扩展也能正常工作了。

总结

步骤 操作
1 配置代理/VPN(Clash、V2Ray 等)
2 在 shell 配置文件里设置 HTTPS_PROXY=http://127.0.0.1:<端口>
3 claude /logout 然后 claude /login 重新登录
4 从终端启动 VS Code(不要从 Dock 启动)
5 远程机器也要设 HTTPS_PROXY,指向代理的局域网 IP

问题的本质很简单:Anthropic 屏蔽中国 IP,macOS GUI 应用不继承 shell 环境变量。理解这两点,一切迎刃而解。


关于作者: Guodong Xu - Linux kernel developer, RISC-V upstream contributor

@futureisloading1-cmd
Copy link
Copy Markdown

找到用户目录下的.claude.json,在最外层json加一行hasCompletedOnboarding=true

@zaigebimiludexiyangyang
Copy link
Copy Markdown

code能跑,但是cowork还是跑不了 提示403

@YangXiaoguang
Copy link
Copy Markdown

Good job.

@chinaxiaoxiao-ops
Copy link
Copy Markdown

还有个问题,clashx要用pro版,开增强模式。

@sxLii
Copy link
Copy Markdown

sxLii commented Mar 19, 2026

谢谢老师!!

@momolibrary
Copy link
Copy Markdown

看到这里受到启发,突然意识到浏览器通了不一定命令行通,是两套不同的代理机制。

@dippingmonkey
Copy link
Copy Markdown

dippingmonkey commented Mar 20, 2026

@docularxu 版主请问下,如果之后回北美,设置了的环境变量会有影响吗?还是不用管

@shenfuqili
Copy link
Copy Markdown

牛逼,感谢分享

@a0388499
Copy link
Copy Markdown

code能跑,但是cowork还是跑不了 提示403

问题搞定了吗?我也是碰到这个问题,一直搞不定,cowork提示workspace安装失败。

@xiaoyaojun
Copy link
Copy Markdown

感谢大佬分享,解决了🙏

@a0388499
Copy link
Copy Markdown

感谢大佬分享,解决了🙏

可以指导我一下吗?非常感谢!

@xiaoyaojun
Copy link
Copy Markdown

感谢大佬分享,解决了🙏

可以指导我一下吗?非常感谢!

我没有使用cowork,就是Claude code CLI跑通了

@zaigebimiludexiyangyang
Copy link
Copy Markdown

code能跑,但是cowork还是跑不了 提示403

问题搞定了吗?我也是碰到这个问题,一直搞不定,cowork提示workspace安装失败。

开TUN模式可以,要记得这个权限确定没被屏蔽,可以搜一下相关的。
但是我的VPN是那种超级老的,SSR那种格式的,我用的软件没有TUN模式。
我没解决,反正cowork和code功能差不多,就用code了。
而且现在code或者chat或者cowork(应该是也可以,没连成功就没用过)都已经可以连chrome浏览器了直接,够我用了。
cowork走的是虚拟机貌似只能靠TUN模式,可以看一下这个帖子:https://www.xugj520.cn/en/archives/claude-cowork-flaws-preview-review.html
帖子内容这段:“ 2.1 代理切换问题:为什么 403 错误并非你的错
用户看到的画面:
“如果我的本地代理工具没有处于 TUN 模式,Cowork 就无法拦截自身的请求。该功能会直接失效——返回 403 错误。”
底层原理:
与许多现代桌面应用程序一样,Claude macOS 应用程序也是基于 Web 框架(例如 Electron)构建的。它的网络请求通常会遵循操作系统的代理设置。
但这里的关键词是“通常”。
HTTP/HTTPS 代理:如果应用程序明确支持,则可以正常工作。某些网络库,特别是用于实时通信的库,不会自动继承系统代理配置。
TUN模式:高级代理工具(Clash、Surge、Quantumult X)中的一项功能,它会创建一个虚拟网络接口。无论源应用程序是否“知道”代理的存在,它都会捕获所有IP流量。
Cowork 似乎使用了与 Claude 主聊天界面不同的网络协议栈。可能是 WebSocket,也可能是自定义传输层。无论是什么,它都无法很好地兼容标准的 HTTP 代理。
可量化的影响:
设想 联合办公功能 错误
无代理 已被防火墙阻止 连接超时
仅限 HTTP 代理 100% 无效 HTTP 403 禁止访问
已启用 TUN 模式 功能齐全 没有任何
为什么是 403 错误?
403 Forbidden 错误通常意味着:“您已连接到服务器,但您无权访问。” 当请求绕过代理直接从某些地区发出时,服务器无法收到预期的授权标头或 IP 白名单,因此会拒绝连接。错误代码本身是正确的,但对于诊断根本原因毫无帮助。
用户心得:
这并非 Cowork 的漏洞,而是预览版中网络工程方面的疏忽。解决方法是启用 TUN 模式,虽然有效,但会占用 5% 到 10% 的系统资源,并且需要用户了解 TUN 模式是什么。
成熟的产品要么是:
为所有网络调用实现显式 HTTP 代理支持
或者显示清晰的诊断信息:“我们检测到您的网络配置可能会阻止 Cowork 的连接。请按以下步骤操作。”
目前,它两者都做不到。”

@a0388499
Copy link
Copy Markdown

code能跑,但是cowork还是跑不了 提示403

问题搞定了吗?我也是碰到这个问题,一直搞不定,cowork提示workspace安装失败。

开TUN模式可以,要记得这个权限确定没被屏蔽,可以搜一下相关的。 但是我的VPN是那种超级老的,SSR那种格式的,我用的软件没有TUN模式。 我没解决,反正cowork和code功能差不多,就用code了。 而且现在code或者chat或者cowork(应该是也可以,没连成功就没用过)都已经可以连chrome浏览器了直接,够我用了。 cowork走的是虚拟机貌似只能靠TUN模式,可以看一下这个帖子:https://www.xugj520.cn/en/archives/claude-cowork-flaws-preview-review.html 帖子内容这段:“ 2.1 代理切换问题:为什么 403 错误并非你的错 用户看到的画面: “如果我的本地代理工具没有处于 TUN 模式,Cowork 就无法拦截自身的请求。该功能会直接失效——返回 403 错误。” 底层原理: 与许多现代桌面应用程序一样,Claude macOS 应用程序也是基于 Web 框架(例如 Electron)构建的。它的网络请求通常会遵循操作系统的代理设置。 但这里的关键词是“通常”。 HTTP/HTTPS 代理:如果应用程序明确支持,则可以正常工作。某些网络库,特别是用于实时通信的库,不会自动继承系统代理配置。 TUN模式:高级代理工具(Clash、Surge、Quantumult X)中的一项功能,它会创建一个虚拟网络接口。无论源应用程序是否“知道”代理的存在,它都会捕获所有IP流量。 Cowork 似乎使用了与 Claude 主聊天界面不同的网络协议栈。可能是 WebSocket,也可能是自定义传输层。无论是什么,它都无法很好地兼容标准的 HTTP 代理。 可量化的影响: 设想 联合办公功能 错误 无代理 已被防火墙阻止 连接超时 仅限 HTTP 代理 100% 无效 HTTP 403 禁止访问 已启用 TUN 模式 功能齐全 没有任何 为什么是 403 错误? 403 Forbidden 错误通常意味着:“您已连接到服务器,但您无权访问。” 当请求绕过代理直接从某些地区发出时,服务器无法收到预期的授权标头或 IP 白名单,因此会拒绝连接。错误代码本身是正确的,但对于诊断根本原因毫无帮助。 用户心得: 这并非 Cowork 的漏洞,而是预览版中网络工程方面的疏忽。解决方法是启用 TUN 模式,虽然有效,但会占用 5% 到 10% 的系统资源,并且需要用户了解 TUN 模式是什么。 成熟的产品要么是: 为所有网络调用实现显式 HTTP 代理支持 或者显示清晰的诊断信息:“我们检测到您的网络配置可能会阻止 Cowork 的连接。请按以下步骤操作。” 目前,它两者都做不到。”

非常感谢!虽然问题还没解决 哎。。。。。。。。。。

@dacodingbee
Copy link
Copy Markdown

还有个问题,clashx要用pro版,开增强模式。

我也想问问看这个问题,我有Clash X Meta 和 Clash X Pro。我现在的VPN引导我用Clash X Meta。我想问问看,安全起见,最好的Clash X设置是什么样的?我现在的设置是:Proxy (Rule), 美国节点, Ton mode 刚打开(看到上面贴子说要打开),Allow connect from Lan.

@forrest0012
Copy link
Copy Markdown

哇哦 完美解决

@anitiue
Copy link
Copy Markdown

anitiue commented Apr 1, 2026

新出的claude cowork app怎么搞?好像从终端启动没办法正常用

我也是诶,同问。刚刚用新的Claude Cowork 试了显示403

通过上述各位的方法均无法使用,包括但不限于使用TUN模式。
使用的是claude的PC客户端软件(Windows),code可以使用,但是cowork一直显示403,无法获取授权。代理工具为flclash和clash。

如果各位情况跟我一样的话,可以尝试下述方法;
打开系统设置-网络和internet-代理-手动设置代理服务(点击编辑)-勾选“请勿将代理服务器用于本地(intranet)地址”。

目前代理工具为flclash,规则模式。在勾选上述选项后,cowork可以使用了。(早前已经根据zala13提示修改了环境,不清楚是否必须)
希望能帮助到各位。

@dacodingbee
Copy link
Copy Markdown

code能跑,但是cowork还是跑不了 提示403

问题搞定了吗?我也是碰到这个问题,一直搞不定,cowork提示workspace安装失败。

开TUN模式可以,要记得这个权限确定没被屏蔽,可以搜一下相关的。 但是我的VPN是那种超级老的,SSR那种格式的,我用的软件没有TUN模式。 我没解决,反正cowork和code功能差不多,就用code了。 而且现在code或者chat或者cowork(应该是也可以,没连成功就没用过)都已经可以连chrome浏览器了直接,够我用了。 cowork走的是虚拟机貌似只能靠TUN模式,可以看一下这个帖子:https://www.xugj520.cn/en/archives/claude-cowork-flaws-preview-review.html 帖子内容这段:“ 2.1 代理切换问题:为什么 403 错误并非你的错 用户看到的画面: “如果我的本地代理工具没有处于 TUN 模式,Cowork 就无法拦截自身的请求。该功能会直接失效——返回 403 错误。” 底层原理: 与许多现代桌面应用程序一样,Claude macOS 应用程序也是基于 Web 框架(例如 Electron)构建的。它的网络请求通常会遵循操作系统的代理设置。 但这里的关键词是“通常”。 HTTP/HTTPS 代理:如果应用程序明确支持,则可以正常工作。某些网络库,特别是用于实时通信的库,不会自动继承系统代理配置。 TUN模式:高级代理工具(Clash、Surge、Quantumult X)中的一项功能,它会创建一个虚拟网络接口。无论源应用程序是否“知道”代理的存在,它都会捕获所有IP流量。 Cowork 似乎使用了与 Claude 主聊天界面不同的网络协议栈。可能是 WebSocket,也可能是自定义传输层。无论是什么,它都无法很好地兼容标准的 HTTP 代理。 可量化的影响: 设想 联合办公功能 错误 无代理 已被防火墙阻止 连接超时 仅限 HTTP 代理 100% 无效 HTTP 403 禁止访问 已启用 TUN 模式 功能齐全 没有任何 为什么是 403 错误? 403 Forbidden 错误通常意味着:“您已连接到服务器,但您无权访问。” 当请求绕过代理直接从某些地区发出时,服务器无法收到预期的授权标头或 IP 白名单,因此会拒绝连接。错误代码本身是正确的,但对于诊断根本原因毫无帮助。 用户心得: 这并非 Cowork 的漏洞,而是预览版中网络工程方面的疏忽。解决方法是启用 TUN 模式,虽然有效,但会占用 5% 到 10% 的系统资源,并且需要用户了解 TUN 模式是什么。 成熟的产品要么是: 为所有网络调用实现显式 HTTP 代理支持 或者显示清晰的诊断信息:“我们检测到您的网络配置可能会阻止 Cowork 的连接。请按以下步骤操作。” 目前,它两者都做不到。”

code能跑,但是cowork还是跑不了 提示403

问题搞定了吗?我也是碰到这个问题,一直搞不定,cowork提示workspace安装失败。

开TUN模式可以,要记得这个权限确定没被屏蔽,可以搜一下相关的。 但是我的VPN是那种超级老的,SSR那种格式的,我用的软件没有TUN模式。 我没解决,反正cowork和code功能差不多,就用code了。 而且现在code或者chat或者cowork(应该是也可以,没连成功就没用过)都已经可以连chrome浏览器了直接,够我用了。 cowork走的是虚拟机貌似只能靠TUN模式,可以看一下这个帖子:https://www.xugj520.cn/en/archives/claude-cowork-flaws-preview-review.html 帖子内容这段:“ 2.1 代理切换问题:为什么 403 错误并非你的错 用户看到的画面: “如果我的本地代理工具没有处于 TUN 模式,Cowork 就无法拦截自身的请求。该功能会直接失效——返回 403 错误。” 底层原理: 与许多现代桌面应用程序一样,Claude macOS 应用程序也是基于 Web 框架(例如 Electron)构建的。它的网络请求通常会遵循操作系统的代理设置。 但这里的关键词是“通常”。 HTTP/HTTPS 代理:如果应用程序明确支持,则可以正常工作。某些网络库,特别是用于实时通信的库,不会自动继承系统代理配置。 TUN模式:高级代理工具(Clash、Surge、Quantumult X)中的一项功能,它会创建一个虚拟网络接口。无论源应用程序是否“知道”代理的存在,它都会捕获所有IP流量。 Cowork 似乎使用了与 Claude 主聊天界面不同的网络协议栈。可能是 WebSocket,也可能是自定义传输层。无论是什么,它都无法很好地兼容标准的 HTTP 代理。 可量化的影响: 设想 联合办公功能 错误 无代理 已被防火墙阻止 连接超时 仅限 HTTP 代理 100% 无效 HTTP 403 禁止访问 已启用 TUN 模式 功能齐全 没有任何 为什么是 403 错误? 403 Forbidden 错误通常意味着:“您已连接到服务器,但您无权访问。” 当请求绕过代理直接从某些地区发出时,服务器无法收到预期的授权标头或 IP 白名单,因此会拒绝连接。错误代码本身是正确的,但对于诊断根本原因毫无帮助。 用户心得: 这并非 Cowork 的漏洞,而是预览版中网络工程方面的疏忽。解决方法是启用 TUN 模式,虽然有效,但会占用 5% 到 10% 的系统资源,并且需要用户了解 TUN 模式是什么。 成熟的产品要么是: 为所有网络调用实现显式 HTTP 代理支持 或者显示清晰的诊断信息:“我们检测到您的网络配置可能会阻止 Cowork 的连接。请按以下步骤操作。” 目前,它两者都做不到。”

我试过了,开TUN Mode可以正确打开cowork(明天我再来测试一下)。除了这个办法,我也让claude code帮我诊断一下我的问题,告诉他机型、服务器设置等情况,告诉他问题,他会顺着问题一步步带你梳理。

@ztxdcyy
Copy link
Copy Markdown

ztxdcyy commented Apr 2, 2026

没那么复杂,开tun模式就ok了。按照你说的在terminal里启动没用呀

@healthandhappiness
Copy link
Copy Markdown

cool ,you are right

@pinkroseelml
Copy link
Copy Markdown

完美解决 感谢 vscode正常连接了 我的情况是v2rayN+curl 404报错
补充一个windows设置 HTTPS_PROXY 环境变量
在控制面板->系统->高级设置系统->用户变量新建一个HTTPS_PROXY 把你自己本地端口号放进去http://127.0.0.1:7890
再通过code . 打开vscode就可以了
再次感谢大佬

@pinkroseelml
Copy link
Copy Markdown

完美解决 感谢 vscode正常连接了 我的情况是v2rayN+curl 404报错 补充一个windows设置 HTTPS_PROXY 环境变量 在控制面板->系统->高级设置系统->用户变量新建一个HTTPS_PROXY 把你自己本地端口号放进去http://127.0.0.1:7890 再通过code . 打开vscode就可以了 再次感谢大佬

我的v2rayN开启tun模式不知道为什么不生效 谷歌也能正常打开访问页面 所以才来采用这个方法

@Jf710001011
Copy link
Copy Markdown

牛批,感谢大佬。我以前用clash 比较顺,突然今天clash 用不了,改成v2ray, 终端打开vscode 有效

@KeepGoing-W
Copy link
Copy Markdown

感谢大佬,问题解决了,nice

@BebopElysium
Copy link
Copy Markdown

感谢大佬,很快就解决了

@XuJ20230901
Copy link
Copy Markdown

其实就是浏览器走了代理流量,cli终端没走代理流量。解决办法就是要么vpn模式换成全局流量都走代理,或者设置本地环境变量,代理地址改为和vpn的端口号一样。403错误就是鉴权失败,中国ip被拦截了。

@XuJ20230901
Copy link
Copy Markdown

类似的问题也会出现在opencode的连接别的模型上

@dacodingbee
Copy link
Copy Markdown

我的Claude账号不幸今天还是被禁了。想请教一下到底是什么原因?我已经遵循了博主的操作,外加开了TUN模式,每次在Terminal打开Claude桌面版,但还是,,,没有用。。。有点崩溃,因为已经用了几个月了,Skills, Projects, 很多东西都安装在Claude上

@q540259671-wq
Copy link
Copy Markdown

完美解决 感谢 vscode正常连接了 我的情况是v2rayN+curl 404报错 补充一个windows设置 HTTPS_PROXY 环境变量 在控制面板->系统->高级设置系统->用户变量新建一个HTTPS_PROXY 把你自己本地端口号放进去http://127.0.0.1:7890 再通过code . 打开vscode就可以了 再次感谢大佬

nb哥,药到病除了

@Felicity0710
Copy link
Copy Markdown

感谢大佬,问题解决了!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment