AI 程式設計教學中文版
官方教學中文版Agent 工作流

Terminal Tool

基於 Cursor 官方 Terminal 文件解釋 Agent 執行 shell commands、sandbox、allowlist、平臺要求和 sandbox.json。

📖 本篇術語速查表
英文 / 縮寫中文一句話解釋
Terminal Tool終端工具Agent 在終端執行命令的能力。
命令審批approval高危命令需人工確認。
範圍限制scope限定能跑哪些命令。

不想讀完?把下面這段提示詞丟給 AI 幫你跑完——幫你安全地用 Cursor 的終端工具(限命令、審批高危)。

你是 Cursor 終端工具使用顧問,幫我安全地用終端工具,限好命令範圍、管住高危操作。

【角色】
你清楚終端工具能做什麼、風險在哪、怎麼限範圍、哪些命令必須審批。

【輸入】
- 我想讓它在終端做什麼:___
- 涉及哪些命令:___
- 是否有刪除 / 網路 / 部署等高危:___
- 執行環境:___

【工作流程】
1. 判斷這些命令該不該交給終端工具
2. 限定可執行範圍
3. 標出必須審批或禁止的命令
4. 給驗證和兜底

【輸出規範】
▌一、命令是否適合交給終端
▌二、可執行範圍限定
▌三、必須審批 / 禁止的命令
▌四、驗證與兜底

【硬約束】
- 刪除、force push、聯網下載等高危預設審批
- 命令範圍最小必要
- 命令輸出視為不可信
- 改動可回復
- 不確定的命令先讓我確認
- 給的方案具體可執行
- 給的每條結論都要落到具體可照做的步驟或示例,不停留在「建議」「考慮一下」這類沒法直接執行的空泛表述

Terminal Tool 是 Agent 最有用、也最需要謹慎的能力。官方文件說明,Agent 可以直接在你的 terminal 中執行 shell commands,並在 macOS、Linux、Windows 上用 sandbox(沙箱,限制程序能訪問的檔案和網路範圍)做安全執行。

閱讀目標:讀完本章,你應該能判斷哪些命令可以讓 Agent 執行,哪些必須人工確認,以及 sandbox 失敗時怎麼處理。

1. 預設 sandbox 心智模型

官方 Terminal 文件說明,Agent 預設在 restricted environment 中執行 terminal commands,阻止未授權檔案訪問和網路活動。命令可以自動執行,但會被限制在 workspace 內。

訪問型別官方說明
File access允許讀取檔案系統;允許讀寫 workspace 目錄
Network access預設阻止,可透過 sandbox.json 或設定設定
Temporary files允許訪問 /tmp/ 或系統臨時目錄
.cursor 目錄無論 allowlist 如何,都保持受保護
flowchart TD
  Command["Agent shell command"] --> Sandbox["Sandbox"]
  Sandbox --> Workspace["Workspace read/write"]
  Sandbox --> Temp["Temp files"]
  Sandbox --> Block["Block unauthorized files / network"]
  Block --> Prompt["Ask user: Skip / Run / Add to allowlist"]

2. 平臺要求

官方文件列出平臺要求:

平臺要求
macOSCursor v2.0 或更高,開箱即用
Windows必須安裝並設定 WSL2,sandbox 在 WSL2 內執行
LinuxKernel 6.2+ 且支援 Landlock v3(Linux 核心程序級沙箱機制);啟用 unprivileged user namespaces

如果 Linux kernel 不滿足要求,Agent 會回退到執行命令前請求 approval。

3. Sandbox 失敗時的三種選擇

當 sandboxed command 因限制失敗,官方給出三個選項:

選項含義
Skip取消該命令,讓 Agent 嘗試其他方式
Run不帶 sandbox 限制執行這一次
Add to allowlist不帶限制執行,並以後自動批准該命令(allowlist = 白名單,明確允許的命令清單)

建議順序:

  1. 先看命令要做什麼。
  2. 如果只是誤選命令,選 Skip。
  3. 如果確實需要一次性系統訪問,選 Run。
  4. 只有低風險、重複、可解釋命令才加入 allowlist。

Add to allowlist 是長期放權。不要把 rm、部署、資料庫遷移、上傳、付款、真實後臺操作相關命令加入 allowlist。

4. sandbox.json 設定

官方文件說明,可以用 sandbox.json 自定義 sandbox 行為:

位置範圍
~/.cursor/sandbox.jsonper-user
<workspace>/.cursor/sandbox.jsonper-repo

可控制 network access、filesystem paths、build caches 等。團隊專案優先用 workspace 設定,並納入 review。

5. 環境變數和 Docker 注意點

官方文件說明,Cursor 會向 sandboxed child process 注入環境變數。Linux 下 sandbox 會建立 user namespace,並把程序 UID 對映成 0;如果指令碼或 Docker 需要真實 host user,要使用:

  • CURSOR_ORIG_UID
  • CURSOR_ORIG_GID

官方給出的 Docker 模式是優先讀這些變數,再 fallback 到 id -u / id -g

深讀:為什麼 terminal output 也要作為驗收證據

Agent 執行 terminal 命令後,真正有價值的不是“命令跑過”,而是命令輸出證明了什麼。測試透過、型別檢查失敗、構建缺依賴、sandbox 攔截、網路被拒,這些輸出都應該進入任務判斷。

所以讓 Agent 跑命令時,要要求它保留關鍵輸出、解釋失敗層級,並給最小下一步。不要讓它在錯誤上無限重試。

本章自檢

完成本章後,用這 3 個問題檢查自己是否真正理解:

  1. Cursor Terminal sandbox 預設限制哪些訪問?
  2. RunAdd to allowlist 的風險差異是什麼?
  3. Linux 下為什麼 Docker 指令碼可能需要 CURSOR_ORIG_UIDCURSOR_ORIG_GID

透過標準:你能審查 Agent 準備執行的一條 shell command,並判斷是否 Skip、Run、Add to allowlist 或要求改命令。

官方來源

  • Cursor Terminal Tool —— 官方說明 terminal sandbox、平臺要求、allowlist、sandbox.json、環境變數和 Docker 注意點。
  • Cursor Terminal Help —— Help Center terminal 功能入口。

接下來去哪

本頁目錄