重點速覽
要讓 AI 代理安全操作電腦,核心是限制它能造成的傷害:只給最少的權限、把可能出錯的動作放進隔離環境、對難以復原的動作要求人工確認,並保留可以還原的備份。不要因為嫌麻煩就關掉所有確認,也不要讓代理讀到不可信的內容之後,就直接照裡面的指示去執行。
AI 代理安全操作電腦,不是「相不相信 AI」的問題,而是出錯時,傷害有多大的問題。代理(Agent)會讀你的檔案、執行指令、連網路,它做錯一步的後果,取決於你一開始給了它多少權限。這篇整理五個不依賴特定工具的原則,並附上官方文件的依據。如果你還不熟悉代理,請先看 AI 代理是什麼。
原則一:最小權限
最小權限原則(Least privilege)是只給程式完成工作所需的最少權限。權限越小,出錯或被利用時造成的傷害越小。
Claude Code 的官方文件,就是依這個精神設計預設行為:在手動模式下,它一開始只有唯讀權限,需要編輯檔案、執行測試或執行指令時,會先問你。它也有「工作資料夾邊界」,讀寫啟動資料夾之外的檔案前會先詢問。
但文件同時提醒了一個容易被忽略的地方:這個邊界是一個權限提示,你核准的 Bash 指令,仍然可以寫入你的使用者帳號能寫入的任何位置。所以想在作業系統層級限制指令,需要另外使用沙箱。
幾個實用做法:
- 只在需要的專案資料夾裡啟動代理,不要在整個家目錄或系統磁碟機啟動。
- 用權限規則(Permission rule)把機密檔案擋掉。官方文件說明,規則的評估順序是「禁止、詢問、允許」,第一個符合的決定結果,所以允許規則無法在禁止規則上開例外;禁止規則在每一種權限模式下都有效。因此
.env這類金鑰檔,適合用禁止規則。要注意的是,Bash 的規則比對的是代理寫出來的指令文字,並不是圍著那個程式的安全邊界,同一個程式換一種寫法呼叫,規則可能攔不到。 - 只放行你確定安全、可預測的指令,其餘維持詢問。
原則二:分清「可復原」與「不可復原」
不是所有動作的風險都一樣。Anthropic 的提示詞指南建議代理這樣分:
- 鼓勵:本機、可復原的動作,例如編輯檔案、執行測試。
- 先問你:難以復原、影響共用系統、或具破壞性的動作。例子包括刪除檔案或分支、刪除資料表、強制推送、對外發送訊息。
- 不要走捷徑:遇到阻礙時,不要用破壞性動作繞過去,例如跳過安全檢查,或丟掉不認得的檔案(它們可能是還沒做完的工作)。
Claude Code 另外提供檢查點:在修改檔案之前,會先保存當下內容,出問題可以還原。但官方文件也寫明,檢查點只涵蓋檔案變更,影響遠端系統的動作(資料庫、API、部署)無法被檢查點還原。
所以:檔案層級的錯誤,靠備份或版本控制兜底(見 給 AI 使用者的 Git 入門);遠端的、對外的動作,靠人工確認把關。這個「人在關鍵步驟確認」的做法,叫做 Human in the loop(人工把關)。
原則三:把可能出錯的動作放進隔離環境
沙箱(Sandbox)是把程式限制在隔離環境執行,只能碰到你指定的資料夾與網路位置。Claude Code 的沙箱功能,由作業系統強制執行檔案與網路的邊界,所以不管模型選了什麼指令,邊界都有效。
但沙箱有它的範圍。官方文件明確寫出:
- 沙箱只涵蓋 shell 指令;檔案工具、MCP 伺服器與 hook 不在其中。
- 它預設可讀取整台電腦(除了部分被禁止的目錄),這仍然允許讀到憑證檔,需要你另外保護。
- 文件也警告:不要靠沙箱裡設定的保護路徑與憑證檔限制,去阻擋一個惡意的指令;在自動放行的模式下,那個指令可能不經提示就執行。
另外,官方文件說明:完全略過權限確認的模式,只該在容器或虛擬機器這類隔離環境使用,因為代理在那裡即使出錯,也傷不到你的主要系統。
結論:沙箱是多層防護的其中一層,要和權限規則、人工確認搭配使用,不能單靠它。
原則四:不要讓不可信的內容直接指揮代理
提示詞注入(Prompt injection)是攻擊者把惡意文字藏進網頁、文件或其他內容,企圖蓋過或操控 AI 的原本指示。代理會讀網頁、讀別人寄來的文件、讀第三方工具的回傳內容,這些都是潛在的入口。
Claude Code 官方文件對處理不可信內容的建議是:
- 核准前,先檢視它建議的指令。
- 避免把不可信的內容直接餵給它。
- 確認它對重要檔案提出的修改。
- 在虛擬機器裡執行指令碼與工具呼叫,尤其是會和外部網路服務互動時。
文件也坦白說:這些保護措施能大幅降低風險,但沒有任何系統能完全免疫所有攻擊。連接 MCP 伺服器(讓代理連到外部工具與資料的標準協定,詳見 MCP 是什麼)時,同樣要先確認你信任它;會抓取外部內容的伺服器,可能讓你暴露在提示詞注入的風險下。
原則五:無人看管時,條件要更嚴格
你在旁邊盯著時,代理缺了某些資訊,你很快就能發現並補上。無人看管時,沒有人會糾正它,你可能隔天早上才發現它整晚都建立在錯誤的假設上。
Claude Code 官方文件列出的五個確認問題(整理版),在讓它自己跑之前都該問:
- 它知道「完成」是什麼樣子嗎?
- 它能檢查自己的成果嗎?
- 它被允許碰什麼?(權限規則、隔離環境、只能推送的那條分支)
- 什麼會讓它停下來?(次數上限、花費上限)
- 結果送去哪裡、由誰核准?
寫這些條件的方法,請看 AI 代理任務說明怎麼寫。
風險與對策一覽
| 風險 | 對策 | 對應原則 |
|---|---|---|
| 誤刪、誤改檔案 | 限制工作資料夾、版本控制或備份、檢查點 | 一、二 |
| 讀取金鑰與密碼 | 禁止讀取規則、金鑰不放在工作資料夾 | 一 |
| 對外發送訊息、推送、部署等收不回來的動作 | 人工確認、不給對應權限 | 二 |
| 指令碰到不該碰的檔案或網路 | 沙箱、虛擬機器、容器 | 三 |
| 被網頁或文件裡的惡意文字操控 | 檢視指令、不餵不可信內容、隔離環境 | 四 |
| 無人看管時越做越偏 | 完成標準、檢查、上限、人工核准 | 五 |
第一次讓代理操作電腦前的檢查清單
- 我只在單一專案資料夾啟動它。
- 這個資料夾有備份,或已經用版本控制記錄。
- 金鑰與密碼檔不在這個資料夾裡,或已設成禁止讀取。
- 寫入、刪除、對外送出的動作,我保留了確認。
- 我知道它要處理的內容從哪裡來;來路不明的內容,我會改在隔離環境處理。
- 如果要無人看管,我回答了上面的五個問題。
延伸閱讀
- 金鑰怎麼保管:API Key 是什麼,以及怎麼安全保管
- 需要在終端機裡操作:終端機基礎
- 實際使用一個代理工具:Claude Code 安裝教學
- 名詞:提示詞注入、沙箱、最小權限原則、權限規則、人工把關,更多請見 名詞小辭典。
常見問題
AI 代理會不會把我的檔案刪掉?
只要你允許它執行刪除,就有可能,不管是它誤判還是你的說明不夠清楚。降低風險的做法是:限制它能動的資料夾、對刪除這類動作保留人工確認,並在有備份或版本控制的資料夾裡工作。
每次都要核准很煩,可以全部關掉嗎?
可以調整,但不要整個關掉。比較好的做法是只放行你確定安全的指令,其餘維持詢問;要完全跳過確認的模式,官方文件的建議是只在容器或虛擬機器這類隔離環境使用。
什麼是提示詞注入?
攻擊者把惡意文字藏進網頁、文件或其他內容,企圖蓋過或操控 AI 的原本指示。代理會讀取外部內容時,特別要防範:不要讓不可信的內容直接餵給代理,並檢查它提議的指令。
沙箱可以保證安全嗎?
不行。沙箱能在作業系統層面限制指令可以碰的檔案與網路,但它有涵蓋範圍:Claude Code 的文件指出它只涵蓋 shell 指令,檔案工具、MCP 伺服器與 hook 不在其中。它是多層防護的一層,不是唯一一層。
代理有辦法讀到我的 API 金鑰嗎?
有可能。Claude Code 的文件提醒,沙箱的預設讀取範圍很廣,仍可能讀到憑證檔,需要另外設定保護。最穩的做法是不要把金鑰放在代理的工作資料夾裡,並對機密檔案設禁止讀取。
在平常用的電腦上跑代理安全嗎?
取決於你給它的權限與你要處理的內容。處理自己寫的、可信的內容、只開放單一專案資料夾,風險相對低;要處理來路不明的內容,或想讓它自動執行,就改到虛擬機器或容器裡。
留言
用 GitHub 帳號登入就能留言,留言會公開顯示在 GitHub Discussions。留言前請先看社群規則。