Cursor 的 agent 跑一次 tool call 后界面一直转圈,永远不结束。“Stop” 按钮按了没反应,chat 卡死,发新消息也只能排在那个死掉的 call 后面。转圈背后通常是三件事之一:一条在等你输入但你看不见的 shell 命令、一个被防火墙或 VPN 挡住的网络请求、一个滚过去你没注意到的权限弹窗。
这三种情况都不是”等久一点”能解决的。本文带你定位问题,再用最干净的方式打破死锁、不丢 chat 历史。
常见原因
1. shell 命令在等交互式输入
agent 跑了 git rebase -i、npm init、gh auth login 这类会弹提示的命令。agent 模式没有 TTY 提供交互输入,进程就一直挂在那。
如何判断:打开真正的 terminal,ps aux | grep <command>——如果进程在那里、状态是 S+、父进程是 Cursor,就是它卡住了。
2. tool call 被网络挡住了
agent 调了 WebSearch 或 fetch 去访问一个你 VPN、防火墙或公司代理挡掉的域名。请求既不完成也不报错,就坐着不动。
如何判断:打开 Cursor 的开发者工具(Help > Toggle Developer Tools)> Network。pending 的请求挂在一个你访问不到的域名上。
3. 权限弹窗被略过或没注意到
agent 跑 shell 命令前会弹询问。你滚走了或不小心点到外面,agent 就在等一个永远不来的决定。
如何判断:把 chat 滚到最底——是不是有一个灰着的 “Approve / Reject” 按钮你忘了点?
4. 长命令(build / install)本来就要好几分钟
npm install 在空 node_modules 上要 3-5 分钟。cargo build --release 大 crate 要 10 分钟以上。agent UI 只显示 “running”,没有进度条。
如何判断:打开真正的 terminal 跑同样的命令——也要 5 分钟的话,agent 不是卡住,只是慢。
5. Cursor 进程真的挂了
agent 模式 bug、内存泄漏、或者 Electron renderer 锁死。Stop 按钮没反应,CPU 平 0%(活着的进程怎么也有点活动)。
如何判断:活动监视器 / 任务管理器——Cursor helper 进程 0% CPU 且没 I/O,多半是挂了。
6. tool call 服务端超时了但 UI 没更新
后端在 60 或 120 秒后把这次 call 超时了,但前端没收到关闭事件。call 实际上已经失败了,UI 还显示 pending。
如何判断:Help > Toggle Developer Tools > Console,看有没有没冒上来的 “timeout” 或 “abort” 报错。
动手前先确认
- 记下卡住的是哪种 tool call(terminal、file edit、web search、MCP)——修法不同。
- 别反复点 Stop;能管用一下就管用,反复点没意义。
- 记一下 chat URL / ID,方便修好后回到原地。
需要收集的信息
- chat 里看到的精确 tool call 名字和参数。
- 转圈大概多久了。
- Cursor 版本(Cursor > About)。
- 当前有没有 VPN / 代理 / 防火墙。
- macOS / Linux 下
ps aux | grep -i cursor的输出,或 Windows 的任务管理器。 - Help > Toggle Developer Tools > Console 的报错。
一步步修复
Step 1:先看是哪类 tool call 卡住
chat 里把 pending 的 tool call 展开。常见类型:
run_terminal_cmd——在 Cursor 集成 terminal 里跑的 shell 命令。web_search/fetch_url——网络请求。edit_file/read_file——文件系统操作。mcp_<name>——Model Context Protocol 工具。
每种卡住的模式不同。
Step 2:terminal 命令卡住时,杀掉底层进程
macOS / Linux:
ps aux | grep -E "node|npm|cargo|git" | grep -v grep
kill -TERM <pid>
# 5 秒内 TERM 没用就:
kill -KILL <pid>
Windows:
Get-Process | Where-Object {$_.ProcessName -match "node|npm|cargo"} | Stop-Process
底层进程死了之后,Cursor 一般 30 秒内收到关闭事件,spinner 就消失了。
Step 3:网络调用卡住时,先验通联再绕开
打开真正的 terminal:
curl -v https://api.cursor.sh/ 2>&1 | head -20
curl -v https://api.openai.com/ 2>&1 | head -20
任何一个挂住或失败:
- 暂时关掉 VPN 再试。
- 看公司代理:
echo $HTTP_PROXY $HTTPS_PROXY。 - 把 Cursor 用的域名加进防火墙白名单:
*.cursor.sh、api.anthropic.com、api.openai.com。
Step 4:不丢 chat 重载窗口
Cursor 菜单 > Developer > Reload Window(Cmd/Ctrl+R)。这会重启 renderer,但磁盘上的 chat 历史还在。pending 的 tool call 会被清掉,你可以重试。
如果 Reload Window 也挂:
- 强制退出 Cursor。
- 重新打开 Cursor。
- 打开同一个项目;chat 侧边栏应该还能看到之前的对话。
Step 5:关掉有问题的 MCP server
如果卡的是 mcp_<name> 工具,问题可能在 MCP server 本身:
# 找 MCP 配置
cat ~/.cursor/mcp.json
把可疑的 server 注释掉,重启 Cursor 重试。最常见的祸根是每次 call 都 spawn 一个子进程但没设超时的 MCP server。
Step 6:长命令改后台跑,别让 agent 一直等
你明知道要几分钟的命令(npm install、cargo build),在 prompt 里就直接告诉 agent 用后台模式:
Run `npm install` in the background and check back in 60 seconds.
Do not block on the install output.
agent 模式 terminal call 支持 run_in_background: true,不会等命令跑完才继续。
验证
- 开新 chat 重跑同一个 prompt——应该顺利完成。
- 跑一个明确很快的 tool call(
ls、简单 read)确认 tool call 整体在工作。 - Help > Toggle Developer Tools > Console 输出干净,没有挂着的 promise。
- 如果卡的是某个 MCP server,用
mcp-debug或等价工具单独测试它。
长期预防
- 永远别让 agent 跑交互式命令(
git rebase -i、vim、nano、不带-y的npm init),用非交互替代。 - 长命令从一开始就配
run_in_background: true。 - 每次给 prompt 后留意一下 Approve / Reject 面板——你不回应,agent 就静默等你。
- 自己写的 MCP server 加 5 分钟超时;默认无限超时是最常见的卡死原因。
- 每月升级一次 Cursor;agent 模式的 timeout / cancel 类 bug 一直在修。
常见坑
- tool call 还 pending 就把 chat 标签关了——底层进程还在跑,可能锁死下一个 chat。
- 没先杀子进程就强退 Cursor;遗留的
node/npm进程会霸占端口、影响下次启动。 - 并行开多个 agent chat;两边碰到同一个文件时 tool call 队列会死锁。
- 给一个权限然后离开——agent 后面可能还有要确认的步骤还在等你。
- 网络切换后 VPN 隐式自动重连;agent 的 HTTP keep-alive 还绑在已经死掉的路径上。
FAQ
Q:Cursor 本身有 tool call 超时吗? A:网络调用有(一般 120 秒);terminal 命令没有全局超时,必须你自己杀。
Q:Reload Window 会丢 chat 吗? A:不会——chat 按项目持久化到磁盘。Reload Window 只重启 renderer。
Q:能看到 agent 实际跑了什么命令吗? A:能——chat 里点 tool call 的标题就能展开参数和 stdout。
Q:Stop 按钮为什么有时按了没反应? A:Stop 通知的是”模型停止生成”,不是底层 tool 进程。卡住的 shell 命令不会响应 Stop,必须你去杀进程。
相关阅读
- Cursor 应用不了改动
- Cursor 终端跑出意料外的命令
- Cursor 卡在 indexing
- Cursor indexing 一直跑不完
- Cursor IDE 状态和文件不同步
- Cursor Composer 重构中途丢上下文
- Cursor 规则文件没被加载
- Cursor Cmd-K 内联编辑一直转不出 diff
- Cursor 重启后聊天 / Composer 记录全没了
- Cursor 扩展商店报网络错误或列表空空
- Cursor rebase 或切分支后 codebase 索引过期
- Cursor YOLO 模式不弹确认就跑命令
- Cursor Auto 模型为难任务挑了弱模型 —— 完整修复指南
- Cursor 没识别到 Python venv(解释器选错)—— 完整修复指南
- Cursor Settings Sync 覆盖另一台机器的本地配置 —— 完整修复指南
- Cursor SSH 远程连接编辑中途掉线 —— 排查与修复