Cursor CLI 沙箱里 git ssh 失败怎么查

8/11 CLI:沙箱增加读权限边界;macOS/Linux 上沙箱内 git-over-SSH 走 SOCKS 代理,允许的远程能通,拒绝的会给出明确错误。先看是策略拒绝还是代理没起来。

Cursor CLI 沙箱里 git ssh 失败怎么查

cursor cli 沙箱 git ssh 失败:8 月 11 日 changelog 写了两件相关的事。沙箱策略多了 read-access 边界;macOS 和 Linux 上,沙箱里的 git-over-SSH 走 SOCKS 代理,allowlisted remotes 能通,denied 的以明确错误失败。以前常见「Permission denied」和超时混在一起,分不清是密钥还是策略。

作者CodePass 技术编辑

先分清三种失败

  1. 明确的 denied remote:策略不允许这个 SSH 主机,应出现 changelog 说的 clear error。换 HTTPS、或让管理员把主机加入允许名单。
  2. SOCKS 没起来:沙箱代理挂了,SSH 会超时或 connection refused。关沙箱试一次能通,多半是代理通道,不是你的 id_rsa
  3. 读边界:仓库外的密钥、known_hosts 不在 read-access 里,git 读不到密钥。密钥放在仓库里更糟;应放在允许读取的用户目录,或关沙箱跑这一条 git。

/sandbox 可切 enabled/disabled,设置跨会话保留。总览见 cursor cli 怎么用

和 git 加固一起出现

同版本:Agent 自己的 git 不再跑仓库控制的 fsmonitor、hooks、attributes、外部 diff。有人把 ssh 包进 diff.external,旧客户端会在 git 时拉起它。新客户端不跑这些,表现为「自定义 diff 没了」,不是 SSH 失败。

Windows changelog 没写同一条 SOCKS git-over-SSH。Win 上失败先当未覆盖,不要照搬 macOS 的代理假设。

怎么验证

  1. CLI 到 8/11 之后。
  2. /sandbox 看是否 enabled。
  3. 让 Agent git ls-remote 一个允许的 SSH 远程、一个不允许的。允许的应通,不允许的应是明确拒绝。
  4. 两条都超时:查本机 SSH 配置和沙箱代理,不要先改 denylist。

公司要求所有 git 走跳板机时,跳板主机也要在允许名单里,否则 SOCKS 只解决「出得去」,解决不了「许不许可」。

密钥放哪才读得到

沙箱 read-access 边界之后,~/.ssh/id_ed25519 是否可读取决于策略。Agent 报 cannot open key、同时又不是 denied remote,先把密钥放到允许读的用户路径,或对这一次 git 关沙箱。不要把私钥拷进仓库来「方便沙箱」。

参考资料