六檔權限

你不說它能做什麼,它什麼都不做。各檔分開授權,按裝置、按工作區。

六檔

read讀工作區裡的檔案。幾乎每條任務都要。
write在工作區裡新建和修改檔案。
exec跑命令 —— 構建、測試、格式化、包指令碼。
web聯網檢索或抓取。
push推送到遠端、fetch、pull。
danger刪除或遷移資料。永遠不走遠端授權。

怎麼授權

$ icloser grant read $ icloser grant write $ icloser grant exec

授權記在「這臺裝置 + 這個工作區」上。沒有全域性開關。

一次授權在哪裡核

授權是在動作發生的地方核的,不是寫進提示詞裡的一句「請你守規矩」。Runtime 的寫、改、執行都經過 KernelHub 內建的 Tool Server,先對照授權和工作區邊界核過再跑;指令還要過執行體的執行規則,每一步都記帳。別的東西證不出某一檔守得住時,那一家 Runtime 標成 NOT_READY,不把它算成強制。

任何授權都解不開的那部分

憑據路徑 —— SSH 私鑰、雲配置、.env、鑰匙串 —— 以及高風險動作,與你批了什麼無關地被拒絕。那份清單不會因為你批了一檔權限就少一條。

任務級核准

任務缺一檔時會掛一張卡。核准只對那一條任務、那個工作區生效,任務一進終態立刻失效。

刪除 / 遷移

這一檔在手機上批不了。當一條任務會跨過這條邊界、而接手的 Agent 表達不了拒絕清單時,KernelHub 會在動手之前停住,請你放行這一趟。點那張卡不批出任何一檔權限 —— 拒絕清單原樣不動。

「被擋下」不等於「失敗了」

一條命令有兩種結束方式,KernelHub 把它們分在機讀欄位上,不只是分在文字裡:

被擋下權限系統不讓它跑。磁碟上什麼都沒發生。它出現在 blocked_actions 裡。
失敗了它跑了,結束碼非 0 —— 測試沒過、建置斷了。那是員工該自己處理的事,不是我們拒的。

分辨的依據是執行側自己的判決記錄,不看結束碼,也不看錯誤訊息的措辭go test 結束碼非 0 不是一條被擋下的動作。

三種判決,外加一個不是判決的

每一次判決只有三種取值。合併任意兩種,都會丟掉一個你在畫面上看得見的區別。

allow已經批過,放行。
need_grant缺一檔,而那一檔可以在手機上批。會掛一張卡,任務在原地等。你點頭之後同一趟接著跑 —— 什麼都不用重來。
never_granted這一類從不長期授權。手機上不會有卡 —— 不是我們忘了顯示,是這條路只有一個出口:在那台機器上當次確認(icloser approval)。憑證、刪除 / 遷移都在這一檔。

scope_violation 不是第四種判決,它是另一格,回答的是為什麼:這條路徑解到真身之後落在本任務的工作區之外。它和「缺哪一檔」是兩個不同的問題,所以獨立一格。批任何一檔都解不開它。六檔全開也一樣 —— 工作區之間不互通。要在別的專案裡做事,就把任務下到那個工作區。

為什麼這幾件事各佔一格,而不是從那句話裡讀出來:措辭會改,而它一改,靠措辭識別的地方就靜默地不再認得。

接著看:發任務 · 核准