Matt Maisel - Hooking Coding Agents with the Cedar Policy Language | [un]prompted 2026
三句話摘要
使用Cedar策略語言在代理迴圈中實現可信的行為控制與訪問決策。 透過在代理迴圈外部部署參考監視器和Cedar策略引擎,可將安全決策從模型內部提升到確定性、可分析、可審計的策略執行層。 軌跡事件模型作為統一安全邊界:編碼代理的所有行動都對映為五種事件型別(行動、觀察、控制、狀態),這使得安全策略可以在統一的框架上表達和執行,而不是零散地應用在各個模型內部。
重點整理
重點- 1
軌跡事件模型作為統一安全邊界:編碼代理的所有行動都對映為五種事件型別(行動、觀察、控制、狀態),這使得安全策略可以在統一的框架上表達和執行,而不是零散地應用在各個模型內部。
- 2
參考監視器的必要性:在代理之外部署一個始終啟用、防篡改的參考監視器來調解所有軌跡事件,形成硬性的安全邊界,這比依賴模型安全措施或指示更可靠。
- 3
Cedar作為可分析的策略語言:不同於Rego等其他策略語言,Cedar的形式化特性允許透過自動工具檢查策略矛盾、空洞和不完整性,支援屬性基訪問控制(ABAC),便於在上下文中做出細粒度決策。
- 4
多層次防護的組合:單一策略引擎無法覆蓋所有風險,需與許可權系統、沙箱隔離等縱深防禦結合;資訊流控制可追蹤敏感資料在軌跡中的汙染,動態限制後續操作許可權。
實用技巧與重點
乾貨- 軌跡事件型別:行動(Action)、觀察(Observation)、控制(Control)、狀態(State)
- Cedar支援的訪問控制:屬性基訪問控制(ABAC)
- 防護措施:Yara簽名集、資訊流控制(IFC)標籤、資料分類系統(DLP)
- 整合工具和平臺:Gemini CLI(before/after模型鉤子)、Claude Code(通知事件)、Cursor(MCP、shell命令、工具呼叫的細粒度鉤子)
- 開源庫支援:LangChain、Strands、ADK等Python函式庫
- 資訊分類標籤:個人識別資訊(PII)、敏感度分類
- 關鍵風險場景:破壞性命令(如無WHERE子句的刪除操作)、環境變數洩露、網路請求中的敏感資料外洩
- 策略引擎:基於GPT-4護欄200億模型的安全分類
結論
結論“透過在代理迴圈外部部署參考監視器和Cedar策略引擎,可將安全決策從模型內部提升到確定性、可分析、可審計的策略執行層。”
完整解析
詳細編碼代理迴圈經歷規劃、程式碼生成、執行與工具呼叫的反覆迭代。為了在這個過程中施加可信的安全控制,講者提出了將代理的所有操作對映到軌跡事件模型這一統一框架。該模型包含五種事件型別:行動(檔案修改、shell命令執行等改變環境的操作)、觀察(環境對代理的反饋)、控制(使用者提示、許可權請求、子代理協調)和狀態(記憶體壓縮、環境快照等)。這個對映使得安全分析不再侷限於單個模型推理,而是跨越整個代理生命週期。
致命三重威脅模型(不信任輸入→敏感資料→危險操作)也可對映到軌跡事件上。不信任的輸入來自觀察事件(如從網路市場獲取的技能資訊),敏感資料可能儲存在代理上下文或狀態變化中(原始碼、內部文件),而危險操作則透過行動事件執行(shell命令、程式碼執行)。這些元素組合就形成了完整的攻擊鏈,甚至可以跨越多個迴圈形成複雜的多步驟攻擊。
為此需要一個參考監視器——位於代理之外、始終啟用且防篡改的授權引擎。講者團隊選用Cedar策略語言,因其形式化特性支援自動矛盾檢測、屬性基訪問控制(ABAC)、以及與Yara簽名、資訊流控制等多種防護措施的整合。在實現層面,各編碼代理平臺(Gemini CLI、Claude Code、Cursor等)都提供了鉤子生命週期,允許在行動前/後、shell命令執行、模型推理呼叫等關鍵點攔截事件。本地介面卡捕獲這些鉤子事件,轉換為軌跡事件模型,交由線束服務中的Cedar策略引擎處理。
具體案例包括:禁止執行無WHERE子句的SQL刪除操作、追蹤PII資料的資訊流汙染以動態限制網路請求許可權、分析從公共市場獲取的技能中的隱藏惡意行為(如收集和上傳環境變數)。策略本身可由AI代理利用MCP工具協助生成和驗證,也可從CLAUDE.md或Cursor規則檔案等配置中提取意圖。講者強調這種方法是確定性的、在模型外執行的,可補充許可權系統和沙箱隔離,形成縱深防禦。
當前挑戰包括"金髮女孩政策區"問題——策略既不能太嚴格以免削弱實用性,也不能過於寬鬆導致規則被繞過。此外,多代理架構中的軌跡匯聚、發散與跨代理邊界的資訊流控制仍是未來方向。
關鍵時刻
Pipeline v2帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。
事實查核
Pipeline v2說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。


