Kimi Code Never Ask:模式與危險指令
Markdown在 Never Ask 模式中,Kimi Code 會不經詢問就執行 rm -rf 和 shutdown。3 種模式有什麼不同?如何在 config.toml 中禁止危險指令?
閱讀全文
在 Kimi Code 中,Never Ask 模式(/auto)會自動核准所有操作:它會毫不詢問地執行 rm -rf、shutdown 和 reboot。只有另外 2 種模式 Always Ask 和 Ask When Needed,會在執行這些指令前詢問。
我自己在 Claude Code 中會啟用「允許所有操作」;不然我們就得一直坐在那裡按「是、是、是」。但每 10 次總有 1 次,代理會自行其是。
即使個人原型也可能暴露珍貴檔案與憑證。請使用權限受限的隔離副本或容器,並驗證備份;客戶系統也應為代理提供只有必要權限的獨立資料庫身分。這樣一來,就算代理真的想刪除資料庫,也做不到。
接下來看看 Kimi Code 各模式的功能、哪些情況下防護有效,以及如何設定禁止規則。開始吧。
如需瞭解如何使用這項服務,請參閱 Ailoot 文件。
重點整理
Kimi Code 有 3 種模式。Always Ask 是預設模式:讀取會自動進行,其他所有操作都要逐一確認。Ask When Needed(/yolo)會自行核准一般編輯,但在存取含有金鑰的檔案、執行危險指令或離開計畫模式前會先詢問。Never Ask(/auto)完全不會詢問,而且無法防護危險指令。你可以在 ~/.kimi-code/config.toml 中設定 deny 規則,永久禁止特定操作;最好不要在連線至正式環境資料庫時啟用 Never Ask。
Kimi Code 的 3 種模式有什麼不同?
如果你已經安裝 Kimi Code,應該看過核准面板:代理想編輯檔案或執行指令時,會停下來等你說「是」。這些模式過去稱為 Manual、YOLO 和 Auto,因此目前仍沿用舊指令:/yolo 和 /auto。
Always Ask。 預設模式。代理可以不經詢問讀取檔案,但每次編輯和每條指令都要由你個別確認。這是最慢的模式。
Ask When Needed。 使用 /yolo 啟用。代理會自行核准一般編輯和指令,但在存取 .env(包含專案密碼和金鑰的檔案)及伺服器 SSH 金鑰、執行 shutdown(關閉電腦)和 rm -rf(略過垃圾桶並刪除整個資料夾)等危險指令,以及離開計畫模式前,會先詢問。代理也可以主動向你提問。
Never Ask。 使用 /auto 啟用。所有操作都會自動核准,包括存取敏感檔案和離開計畫模式。代理不會問你問題,所有事情都自行決定。
計畫模式需另外使用 Shift-Tab 或 /plan 啟用:代理會先寫下計畫並等你核准,接著才會操作檔案。
我自己不要求確認時的工作方式
在 Claude Code 中,我預設會啟用「允許所有操作」,而且每個新對話都會開啟。沒有這個設定,氛圍式編碼就太慢了。氛圍式編碼的人本來就不太懂,還得不停按按鈕:是、是、是、否、否、否。
但在這個模式中,代理什麼魯莽的事都做得出來,包括清空資料庫。之後它會說「抱歉、非常抱歉」,但有時候造成的結果已經無法挽回。因此,這個模式適合無所畏懼的人,責任也由你承擔。
我的規則如下:個人專案、實驗或原型,只有在不含珍貴檔案與正式憑證、權限受限且有備份的隔離副本或容器中,才考慮免確認模式。沒有客戶不會保護你的檔案或金鑰,隔離也必須驗證。但如果你在能存取正式環境伺服器的同一個專案中啟用這個模式,只要 1 個提示詞,就足以讓代理在夜間刪除那裡的資料庫,並將變更部署到正式網站。
為什麼用文字下達禁止指示也無法保護你
很多人會在代理的指示中寫上「不要碰資料庫」。別指望這樣就能保護你。你告訴它:「老兄,別進去。」但它還是會進去,並在需要時拿取所需的東西。尤其是中國的 Kimi,會違反你設定的任何禁止規則。美國的模型在受訓時,更懂得避免這種行為。
我工作時仍會使用 Kimi。Kimi K3 很細心;我會用它檢查專案是否洩漏金鑰,也會用它蒐集資訊。有一次,我在幾天內就耗盡了它所有的使用額度。Kimi 不會耍花樣,會照你的要求完成所有事情。這就是為什麼使用它時需要隔離。我在這裡描述了自己如何用實際任務測試它。
你需要 2 種隔離措施:
- 在設定中封鎖指令。 它只阻擋匹配的工具呼叫,單一指令寫法不是能防範其他工具或等效操作的完整邊界;應搭配作業系統、容器與資料庫權限。
- 資料庫唯讀存取權限。 對於正式環境資料庫,為代理建立一個只有唯讀權限的獨立使用者。這樣,即使在 Never Ask 模式中,代理也無法清空資料庫。
危險指令的防護在哪些情況下有效
Kimi Code 內建的危險指令防護預設為啟用。在 Always Ask 和 Ask When Needed 模式中,執行 shutdown、reboot(重新啟動)或 rm -rf 前,系統會要求確認。在 Never Ask 模式中,這些指令會直接執行,不會停下來。
有 2 種例外情況:
- 如果
rm -rf只刪除暫存資料夾/tmp或/temp的內容,就會不經詢問直接執行(自版本 0.43.0 起); - 在 Ask When Needed 模式中,對於無法事先解析的終端機指令,Kimi Code 不會詢問(自版本 2.0.1 起)。
在版本 0.40.0 中,Auto 模式會封鎖危險指令;這項封鎖功能於 0.41.0 移除。
你可以在設定檔 ~/.kimi-code/config.toml 的 [permission] 區段中設定 dangerous_command_guard = false,或使用 KIMI_CODE_DANGEROUS_COMMAND_GUARD=false 變數來停用防護。開發者建議只有在危險指令已由外部攔截時才這樣做。
如何在 Kimi Code 中設定永久禁止規則
代理想要變更內容時,Kimi Code 會顯示核准面板:
- 核准:使用方向鍵和
Enter,或直接按1、2或3; - 拒絕:
Esc、Ctrl-C或Ctrl-D; - 在本次工作階段核准:相同類型的呼叫會核准至工作階段結束;
- 永久規則:在設定檔中新增永久允許或禁止規則。
永久規則會寫入設定檔 ~/.kimi-code/config.toml 中的 [[permission.rules]] 區塊。Kimi Code 會依序檢查規則,並套用第一個符合的規則,因此要把禁止規則放在允許規則上方。每條規則都有一個 decision:allow(立即允許)、deny(立即拒絕)或 ask(每次都詢問)。
禁止執行 rm -rf,並在執行其他任何終端機指令前詢問:
[[permission.rules]]
decision = "deny"
pattern = "Bash(rm -rf*)"
[[permission.rules]]
decision = "ask"
pattern = "Bash"
對於終端機指令,模式要放在括號中:Bash(command-pattern);讀取檔案時則使用 Read(path-pattern)。若要禁止 MCP 工具、AgentSwarm 和你自己的工具,只能使用它們的完整名稱。
如果你不懂技術,也不想開啟設定檔,只要把以下提示詞貼給代理,它就會自行找出需要限制的項目。請先讓它告訴你,這會讓工作速度變慢多少。如果你已經習慣不要求確認的工作方式,新增禁止規則後,有些功能可能會停止運作。以下是我的提示詞:
分析我的專案,告訴我你是否能存取正式環境伺服器、測試環境資料庫和正式環境金鑰。如果可以,請設定危險指令防護:禁止刪除整個資料夾、不可逆地改寫變更歷史的指令,以及直接對正式環境資料庫執行的指令。先以「之前 - 之後」的格式展示計畫,並坦白告訴我這會讓工作速度變慢多少。
我在另一篇文章中介紹了如何在 Claude Code 設定相同的功能。也可以看看Claude Code 的 Auto 模式如何檢查代理的操作。
該選擇哪種模式
- 你想查看代理執行的每個步驟: 選擇預設的 Always Ask。除了讀取以外,所有操作都要確認。
- 沒有實際客戶的個人專案或原型: 先從 Always Ask 或 Ask When Needed 開始。只有權限受限、不含珍貴資料或金鑰、隔離且可丟棄的副本,才考慮 Never Ask;沒有客戶本身不會增加安全性。
- 有實際客戶且能存取伺服器的專案: 不要啟用 Never Ask。在
config.toml中設定deny禁止規則,並只給代理資料庫唯讀存取權限。
另外,請將資料庫備份到專案以外的機器上。其他安全規則整理在另一篇文章中。
請依專案的存取權限選擇確認模式,並檢查哪些地方需要設定禁止規則。
來源
- Kimi Code:互動與輸入 — 3 種權限模式、
/yolo、/auto、各模式下的危險指令防護、核准面板、計畫模式。 - Kimi Code:設定檔 —
[[permission.rules]]、規則檢查順序、dangerous_command_guard、KIMI_CODE_DANGEROUS_COMMAND_GUARD、config.toml路徑。 - Kimi Code:變更紀錄 — 版本 0.40.0、0.41.0、0.43.0 和 2.0.1:危險指令防護和模式重新命名。
認識 Ailoot。
更多詳情
常見問題:Kimi Code Never Ask:模式與危險指令
專案沒有客戶,就代表 Never Ask 安全嗎?
不是。代理仍可能破壞個人檔案或洩漏金鑰。考慮免確認模式前,請先限制權限,使用隔離、可丟棄的副本或容器,並準備備份。
針對 rm -rf 的 deny 規則能取代隔離嗎?
不能。它只封鎖匹配的工具呼叫,無法涵蓋所有等效檔案操作。珍貴資料與正式憑證應放在代理無法存取處,資料庫則使用只有任務所需權限的獨立身分。