切换语言
中文 English 翻译中 日本語 翻译中
切换主题

Cursor 企业网络代理配置:从 HTTP_PROXY 到证书导入的完整方案

"Cursor 官方企业网络配置文档,详细说明了环境变量、settings.json 和启动参数三种代理配置路径"

"Cursor 论坛用户反馈 HTTP/2 请求不走代理设置的问题及解决方案"

点击 Send,Cursor 的 Agent 面板弹出 Network error。明明全局代理开着,为什么还是连不上?

答案藏在 Electron v25+ 的网络栈里——Cursor 和 VS Code、操作系统各用一套代理配置,互不相通。这篇把企业网络代理配置从头捋一遍:HTTP_PROXY 环境变量、settings.json 代理配置、HTTP/2 协议兼容问题、SSL 证书导入,以及 Anygress 透明代理。Windows、Mac、WSL2 三种环境都覆盖。

为什么 Cursor 不继承系统代理?

Cursor 基于 Electron v25+ 构建。Electron 的网络栈和 Chrome 一样,不自动继承操作系统或父进程的代理设置。这和 VS Code 不同——VS Code 能读到系统代理,Cursor 却要用自己的一套配置。

更麻烦的是环境变量。你在终端里 export HTTP_PROXY=...,然后从 Dock 或桌面图标启动 Cursor,那个变量根本不会传过去。只有从同一个终端窗口启动 cursor 命令,变量才生效。

所以企业网络下最靠谱的方法是:直接改 Cursor 的 settings.json。


官方文档怎么说?

根据 Cursor 的 Network Configuration 文档,企业部署时有三种代理配置路径:

  1. 环境变量HTTP_PROXYHTTPS_PROXYNO_PROXY(仅终端启动有效)
  2. settings.jsonhttp.proxyhttp.proxySupporthttp.proxyStrictSSL
  3. 启动参数--proxy-server--proxy-auto-detect--disable-http2

三种方法各有适用场景,后面逐个展开。

HTTP_PROXY 环境变量配置

环境变量是最轻量的方法,但有个前提:Cursor 必须从配置过的终端启动。

Windows PowerShell

# 设置代理(带认证)
$env:HTTP_PROXY = "http://username:[email protected]:8080"
$env:HTTPS_PROXY = "http://username:[email protected]:8080"

# 本地地址不走代理
$env:NO_PROXY = "localhost,127.0.0.1,.internal.corp"

# 从同一个终端启动 Cursor
cursor

macOS / Linux

# Bash/Zsh
export HTTP_PROXY="http://username:[email protected]:8080"
export HTTPS_PROXY="http://username:[email protected]:8080"
export NO_PROXY="localhost,127.0.0.1,.internal.corp"

# 启动 Cursor
cursor

WSL2 特殊处理

WSL2 有独立的虚拟网卡,和 Windows 主机不在同一子网。Windows 的代理设置不会自动同步到 WSL2 内部。

一种办法是用 graftcp 工具做透明 TCP 代理:

# 安装 graftcp
sudo apt install graftcp

# 配置代理地址(graftcp.conf)
proxy_addr = "192.168.1.100:7890"  # Windows 主机的代理地址

# 用 graftcp 启动 Cursor
graftcp cursor

几个坑

  • 从 Dock/桌面图标启动 → 环境变量不生效
  • 只设 HTTP_PROXY 不设 HTTPS_PROXY → Cursor API 请求(全是 HTTPS)走不了代理
  • NO_PROXY 漏掉 .internal.corp → 内网服务也被代理,反而变慢

如果不想每次都从终端启动,settings.json 配置更省心。

settings.json 代理配置(推荐方法)

打开 Cursor,按 Cmd+Shift+P(Mac)或 Ctrl+Shift+P(Windows),输入 Preferences: Open User Settings (JSON)

在 settings.json 里加上这几项:

{
  "http.proxy": "http://username:[email protected]:8080",
  "http.proxySupport": "override",
  "http.proxyStrictSSL": false,
  "http.noProxy": ["localhost", "127.0.0.1", "*.internal.corp"],
  "cursor.general.disableHttp2": true,
  "cursor.general.disableHttp1SSE": true
}

逐项解释

字段作用
http.proxy代理服务器地址,支持 http://socks5://
http.proxySupport"override" 强制使用代理;"on" 仅在无直连时走代理
http.proxyStrictSSL企业代理经常有自签证书,设为 false 避免证书校验失败
http.noProxy本地地址绕过代理,避免内网服务变慢
cursor.general.disableHttp2企业代理不支持 HTTP/2 时必设
cursor.general.disableHttp1SSE某些代理不支持 SSE 长连接,禁用后用短轮询

重启生效

改完 settings.json 后必须完全关闭 Cursor 再重新打开。只刷新窗口(Cmd+R)不会重新加载网络配置。

Windows 快捷方式启动参数

如果不想改 settings.json,可以在快捷方式里加参数:

cursor.exe --proxy-server="http://proxy.company.com:8080" --proxy-auto-detect --disable-http2

这种方法和 settings.json 等效,但每次启动都生效,不用重启。

HTTP/2 协议不兼容与解决方案

Cursor 的 Agent 功能依赖 HTTP/2 双向流式传输。实时聊天、代码补全、多轮对话,全靠 HTTP/2 的长连接和流式推送。

问题来了:很多企业代理不支持 HTTP/2。

Zscaler、Netskope 这类 SSL 检查代理,只处理 HTTP/1.1。Cursor 发出的 HTTP/2 请求到了代理那里,要么被截断,要么返回乱码,要么直接超时。

症状

  • Agent 面板卡在 “Thinking…” 不动
  • 代码补全偶尔能用、偶尔报错
  • Chat 模式正常,Agent 模式全红

解决方法:禁用 HTTP/2,让 Cursor 降级到 HTTP/1.1 SSE。

{
  "cursor.general.disableHttp2": true
}

或者启动参数:

cursor --disable-http2

禁用后,Cursor 会用 HTTP/1.1 的 Server-Sent Events(SSE)做流式传输。SSE 是单向的,不如 HTTP/2 双向流高效,但兼容性更好。


一个细节--disable-http2 和 settings.json 的 disableHttp2 同时存在时,启动参数优先。如果想确保 HTTP/2 禁用,两个都设。

从 Cursor Forum 的反馈看,这个方法解决了大多数企业用户的 Agent 问题。有用户在 Cursor http/2 requests don’t go through proxy setting 里反馈,禁用 HTTP/2 后 Agent 恢复正常。

SSL 证书导入(企业中间人检查)

企业代理做 SSL 解密时,会把原始证书换成代理自己的证书。Netskope、Zscaper 都有这个功能。

Cursor 去连接 cursor.comapi2.cursor.sh,结果拿到的证书是企业代理签的,不是 Let’s Encrypt 或 DigiCert 签的。校验失败,连接断开。

症状

  • TLS handshake timeout
  • certificate signature failure
  • Agent 面板显示 CERT_AUTHORITY_INVALID

方法一:导入企业根证书到系统证书库(Windows)

  1. Win+R,输入 certmgr.msc
  2. 展开 Trusted Root Certification AuthoritiesCertificates
  3. 右键 → All TasksImport
  4. 选择企业的根证书文件(.cer.pem
  5. 完成后重启 Cursor

这个方法让系统信任企业证书,Cursor 也就信任了。

方法二:环境变量指定证书(推荐)

Cursor 支持 SSL_CERT_FILESSL_CERT_DIR 环境变量:

# 单个证书
export SSL_CERT_FILE=/path/to/company-root-ca.pem
cursor

# 证书目录
export SSL_CERT_DIR=/etc/ssl/certs
cursor

这种方法更灵活,不改系统证书库,只对 Cursor 有效。

方法三:关闭 SSL 严格校验(不推荐)

{
  "http.proxyStrictSSL": false
}

这能绕过证书校验,但安全性下降。只在测试环境用,生产环境不建议。


Mac / Linux 证书导入

# Debian/Ubuntu
sudo cp company-root-ca.pem /usr/local/share/ca-certificates/
sudo update-ca-certificates

# macOS
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain company-root-ca.pem

导入后重启 Cursor。

Anygress 与 cursor-api-proxy(进阶配置)

企业网络、远程服务器、私有网络这些场景,标准代理配置不够用。有个开源项目 cursor-api-proxy(GitHub: anyrobert/cursor-api-proxy)专门处理这种情况。

核心原理

cursor-api-proxy 在本地起一个代理服务,把 Cursor 的 API 请求转发到真实服务器。中间可以做 TLS 证书替换、Tailscale 网络穿透、API 密钥注入等操作。


配置示例

# 克隆项目
git clone https://github.com/anyrobert/cursor-api-proxy
cd cursor-api-proxy

# 配置环境变量
export CURSOR_BRIDGE_TLS_CERT=./macbook.tail4048eb.ts.net.crt
export CURSOR_BRIDGE_TLS_KEY=./macbook.tail4048eb.ts.net.key
export CURSOR_BRIDGE_API_KEY=your-secret-key
export CURSOR_PROXY_URL=http://127.0.0.1:8765

# 启动(带 Tailscale TLS)
npm start -- --tailscale

然后在 Cursor 里把代理指向这个服务:

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

适用场景

  • 公司网络禁止直连 cursor.com
  • 远程服务器没有公网出口,要通过 Tailscale 中转
  • 需要在请求里注入统一 API Key(多用户共享)
  • 私有部署,API 请求要走内部网关

这个方法比标准代理复杂,但灵活度高。适合有一定运维能力的团队。

结论

企业网络下配置 Cursor 代理,按这个顺序排查:

  1. 先设 settings.jsonhttp.proxy + http.proxySupport: "override"
  2. 禁用 HTTP/2 — 企业代理不支持的,加 disableHttp2: true
  3. 检查证书TLS handshake timeoutCERT_AUTHORITY_INVALID,导入企业根证书
  4. 复杂场景用 cursor-api-proxy — 远程服务器、私有网络、Tailscale 穿透

常见错误对照:

错误信息原因解决方法
Network error代理未配置或未生效检查 settings.json + 重启 Cursor
Connection refused代理地址错误或代理服务未启动确认 http.proxy 地址
TLS handshake timeoutSSL 证书不匹配导入企业根证书或设 proxyStrictSSL: false
Agent 卡住不动HTTP/2 不兼容disableHttp2: true

配置完记得完全重启 Cursor,不是刷新窗口。

Cursor 企业网络代理配置流程

从环境变量到证书导入的完整配置步骤

⏱️ 预计耗时: 15 分钟

  1. 1

    步骤1: 配置 settings.json 代理

    打开 Cursor,按 Cmd+Shift+P(Mac)或 Ctrl+Shift+P(Windows),输入 Preferences: Open User Settings (JSON),添加 http.proxy、http.proxySupport: "override"、http.proxyStrictSSL: false 等配置项
  2. 2

    步骤2: 禁用 HTTP/2 协议

    在 settings.json 中添加 cursor.general.disableHttp2: true,或在启动参数中添加 --disable-http2,解决企业代理不支持 HTTP/2 导致的 Agent 卡死问题
  3. 3

    步骤3: 处理 SSL 证书问题

    遇到 TLS handshake timeout 或 CERT_AUTHORITY_INVALID 错误时,导入企业根证书到系统证书库(Windows 用 certmgr.msc,Mac/Linux 用 security 或 update-ca-certificates 命令),或临时设置 proxyStrictSSL: false
  4. 4

    步骤4: 重启 Cursor 验证连接

    完全关闭 Cursor 并重新打开(不是刷新窗口),测试 Agent 功能是否正常。如果仍有问题,检查代理地址和端口是否正确

常见问题

为什么 Cursor 不继承系统代理?
Cursor 基于 Electron v25+ 构建,Electron 的网络栈与 Chrome 一致,不会自动继承操作系统或父进程的代理设置。这与 VS Code 不同,需要单独配置。
HTTP_PROXY 环境变量为什么不生效?
从 Dock 或桌面图标启动 Cursor 时,环境变量不会传递。必须从已配置环境变量的终端窗口运行 cursor 命令启动,变量才会生效。建议使用 settings.json 配置代替。
Agent 卡在 Thinking 不动怎么办?
这是 HTTP/2 不兼容的典型症状。企业代理(如 Zscaler、Netskope)通常只处理 HTTP/1.1。在 settings.json 中设置 cursor.general.disableHttp2: true 即可解决。
如何判断是证书问题还是代理问题?
证书问题会显示 TLS handshake timeout 或 CERT_AUTHORITY_INVALID;代理问题会显示 Network error 或 Connection refused。前者导入证书,后者检查代理配置。
cursor-api-proxy 适用于什么场景?
适用于公司网络禁止直连 cursor.com、远程服务器无公网出口需要 Tailscale 中转、多用户共享统一 API Key、或私有部署需要走内部网关等复杂场景。

6 分钟阅读 · 发布于: 2026年5月29日 · 修改于: 2026年5月31日

相关文章

BetterLink

想持续收到这个主题的更新?

你可以直接关注作者更新、订阅 RSS,或者继续沿着系列入口往下读,避免下次又回到搜索结果重新找。

关注公众号

评论

使用 GitHub 账号登录后即可评论