六個角色 — 而其中只有一部分能擋下任何東西。
Agent Assembly 並不是一條固定的管線。它的架構是一組角色,而一次部署只會實例化你實際佈建的那些。本頁會點名這六個角色,說明其中哪些能在動作執行之前拒絕它,並指出平台會在哪裡改變答案。
唯一一件要帶走的事:你沒有部署的角色會被回報為缺席。它底下並沒有另一個東西會接手它原本該做的事。 有兩條規則決定了這張圖的形狀,也正是它被畫成這樣的原因。第一,角色可以缺席,而它的缺席是產品會回報出來的事,不是另一個角色悄悄補上的事。第二,角色的權限屬於該角色本身:控制平面做決定但不持有流量,傳輸中介持有流量而且可以拒絕它,而今天 Linux 上的主機轉接器多半只是在看。這個模型裡沒有任何東西讓它們可以互相替代。 在你導流的路徑上 受管執行檢查點 在動作執行之前做決定 · 向控制平面發問 協定與傳輸中介 在請求離開這台機器之前做決定 · 依自己的組態拒絕,並就工具呼叫向控制平面發問 平台特定的主機層轉接器 因平台而異,而且經常缺席 · 回報給證據管線,不做任何決定 不在任何路徑上 治理控制平面 政策 · 身分 · 預算 · 核准 · 稽核。回答決策請求,而且不持有任何流量。 憑證與能力界線 橫跨其他角色 · 每個角色可以要求什麼,以及憑證如何綁定到身分 證據與保護狀態管線 橫跨其他角色 · 記錄做了什麼決定,並回報什麼是缺席的 在你導流的路徑之外 未受管的啟動 · 從未抵達中介者的流量 · 沒有東西掛鉤的加密函式庫 · 沒有轉接器的平台。沒有被決策 — 而記錄會這樣寫。 保存政策、身分、預算、核准與稽核,並回答決策請求的權威。它本身不持有任何流量。 今天。 在任何平台上都能跑。只有在該動作前面有東西等著答案時,它的拒絕才會擋下這個動作。 在受導流路徑上,動作在執行之前被提交出來等待決策的那些點 — 來自 SDK 的政策檢查、一次受管啟動,或交給沙箱的工具。 今天。 在任何平台上都能跑,而且只有在代理主動選擇加入時才觸得到。不去做那個呼叫的行程並沒有在問。 放在線路上的中介者,可以在請求離開這台機器之前拒絕、遮蔽或改寫它。這是「動作之前的拒絕」最強的地方,因為它位於代理的行程之外。 今天。 macOS 與 Linux。沒有 Windows 的建置路徑,所以在 Windows 上這個角色是缺席,而不是降級。 對行程、檔案與加密流量的作業系統層級中介。每個平台都需要自己的機制,而沒有機制的平台就是沒有 — 這是最常單純缺席的一個角色。 今天。 Linux 有一個,而它是觀測。macOS 與 Windows 沒有轉接器;請看平台一節,那裡說明了 macOS 有的是什麼。 一個元件被允許要求什麼,以及憑證或能力如何綁定到身分 — 包含對外請求所套用的掃描與遮蔽。 今天。 在任何平台上都能跑。代理會提出一個身分與一份持有證明,而那個身分是被宣稱的,不是被確立的。 一項宣稱如何被佐證、降級與回報 — 包含回報某個角色已設定但無法使用,或根本不存在。這是讓其他五個角色可被讀懂的角色。 今天。 在任何平台上都能跑。寫出是盡力而為的,所以它記錄的是成功寫入的內容,而不是一本記載實際發生過什麼的帳本。 有三種不同的東西都被稱作保護,而分辨它們就是評估的大半工作。已觀測代表有事件抵達了記錄。已評估代表針對這個動作產生了一項決策。執行前拒絕代表這個動作沒有生效,而且決策發生在前。只有第三種才是防止 — 而下面的表格說明哪個機制觸得到它。 這張表存在就是為了擋掉一種推論。 一筆稽核事件證明有東西被觀測到了。它永遠不證明那個動作被擋下來了。一筆記錄和一次拒絕是不同的結果,而把前者當成後者的證據,正是整個架構被重寫所要防止的失誤。 主機層轉接是唯一一個真正因平台而異的角色,也是為某一個作業系統畫出來的圖最容易誤導其他作業系統讀者的地方。每個平台都需要自己的機制,而沒有機制的平台就是沒有。 傳輸中介是已發行的執行檔。主機層轉接以 eBPF 完成:核心探針會回報加密連線中的明文、行程執行與檔案活動。這一組裡有一個程式是強制執行而非回報 — 一個選擇性啟用的系統呼叫防護,它會終止被限制的行程。 沒有任何 eBPF 訊號參與任何允許或拒絕的決策。該防護是在有問題的呼叫已經執行過之後才終止行程,這是偵測後接一記終結,不是動作之前的拒絕;而且除非指名了特定行程,否則它是關閉的。檔案活動探針僅支援 x86_64,而擁有所有核心操作的特權載入常駐程式是發佈到 crate 套件庫,而不在發行下載裡。 傳輸中介可用,而且是通往本站所描述大部分能力的途徑;它是從原始碼安裝,而不是從發行下載取得。這裡沒有作業系統層級的攔截轉接器,而且打造一個是明確的非目標。 不要把這句讀成「macOS 上沒有主機層強制執行」。它是唯一一個真的能觸及主機層強制執行等級的平台,途徑是針對受管 Claude Code 啟動的一次選擇性啟用、經授權的設定寫入。有兩件事把它限制得很緊。那次寫入所確立的是「檔案內容寫對了」;該工具在執行期間是否真的遵守那些設定鍵,屬於未量測。而這個等級在已發布的 v0.0.1-rc.6 標籤上被記為尚未達成 — 它所依據的證據晚於該標籤。 這裡沒有任何形式的本機中介。傳輸中介沒有 Windows 建置路徑,也不存在主機層轉接器。 控制平面、CLI 與 SDK 在那裡都能跑,所以來自你自己程式碼的政策檢查仍然會得到一項決策。缺的是線路上任何可以把它套用到「不是你的程式碼發出的流量」的東西。 當一個動作在生效之前,被提交給某個已設定為做決定、並且會遵守答案的東西時,它就在受治理路徑上。只要這條鏈裡少了任何一環,它就在界線之外。以下是今天會發生這種情況的各種方式,每一種都是量測出來的,而不是想像出來的。 那會記錄成什麼。 對於界線之外的任何東西,關於那個動作什麼都不知道,所以規則是:它不會被記為已允許,也不會被記為乾淨 — 記錄會寫成該動作或其承載內容未經檢查。請把這條規則讀成以「動作」為範圍,而不是以承載它的連線為範圍:代理伺服器沒有檢查的主機,在建立連線時仍然會被裁決,所以連線已被觀測而承載內容沒有。今天有一個未修復的缺陷與這條規則相牴觸:對於即將以隧道方式、未經檢查轉送出去的流量,連線層級的事件仍然會記下一筆允許,追蹤於 AAASM-5637。請把規則與這個未修復的缺陷一起讀,不要當成已完成的行為。而一份安靜的日誌是關於觀測者的證據,從來不是關於代理的。 再往下的答案住在工程紀錄裡,在那裡它們和它們所描述的程式碼一起被版本控管。以下每個連結都指向本頁所根據的來源 — 這裡一句都沒有重述,因為第二份副本會在一個發行週期之內就和第一份分岔。一片角色的場域,不是一疊層級
每一個是什麼,以及今天你實際拿到什麼
治理控制平面
受管執行檢查點
協定與傳輸中介
平台特定的主機層轉接器
憑證與能力界線
證據與保護狀態管線
哪一個機制真的能擋下什麼
機制 今天最高能到哪裡 代理伺服器 — 連線階段拒絕、通道內主機重新檢查、憑證阻擋、MCP 工具呼叫裁決 執行前拒絕 適用於導流經過它並被檢查的流量。 控制平面的動作檢查 已評估 只有透過會等待答案的呼叫端,它才觸得到動作之前的拒絕,而今天這組呼叫端有兩個成員:MCP 路徑,以及會遵守答案的 SDK 外殼。 執行環境的政策檢查點 已評估 只有在 SDK 外殼遵守答案時,它才觸得到動作之前的拒絕。 執行環境掃描器 已遮蔽 它在動作之後才執行,回傳的是計數,不是裁決。 SDK 用戶端 已評估 — 建議性 它不是強制執行點。 Linux 核心探針,用於加密流量、檔案與行程執行 已觀測 · 已偵測 這類訊號都不參與任何允許或拒絕的決策。 Linux 系統呼叫防護 已偵測 外加事後終止該行程。等到行程死亡時,那個有問題的呼叫已經執行過了,所以這明確不是動作之前的拒絕。 WASM 沙箱 執行前拒絕 適用於交給它的工具 — 但它不在代理正常的工具呼叫路徑上,所以它不是一項通用保證。 開發工具的組態寫入 根本不是資料路徑上的宣稱 寫入工具自己的設定檔屬於工具治理:只有在該工具遵守那些設定鍵時才會生效。這些整合所帶來的任何防止效果,都是代理伺服器的,透過它們注入的啟動環境借來的。 平台會在哪裡改變答案
Linux
macOS
Windows
動作什麼時候落在這一切之外
本頁到此為止,這是刻意的