所有節目›AI Engineer Europe 2026World's Fair 2026World's Fair 線上軌AI in HealthcareSoftware Factories
Why, and how you need to sandbox AI-Generated Code?在 YouTube 看這一場

AI Engineer Europe 2026 · 演講 · 2026-04-08 · 38 分

AI 產生的程式碼要先關進沙箱

Why, and how you need to sandbox AI-Generated Code? · Harshil Agrawal,Cloudflare

Harshil 把 LLM 寫的程式碼當成不可信的外來程式碼,用自己做的兩個 app 比較 V8 isolate 與 container 兩種沙箱,最後收成八條通用清單。

權限邊界看原片 ↗

概要

  • LLM 產生的程式碼是黑箱Harshil 說,把 LLM 產生的程式碼拿來執行,跟執行網路上隨便找來的程式碼片段沒有本質差別,只是包裝得比較好看。風險有三種:幻覺、過度熱心的 LLM、被汙染的 prompt。
  • 程式碼繼承了應用程式的權限AI 產生的程式碼跑在你的 application 裡,檔案系統、環境變數、網路、資料庫、API key 都碰得到。Harshil 的結論是這等於把鑰匙全交出去。
  • 用 capability 取代黑名單Harshil 主張只授權程式碼真正需要的能力,沒授權的東西對它來說就不存在,不必去列舉所有要擋的危險操作。
  • 兩種沙箱各有適用場景isolate 快、輕、限制多,適合 tool calling 與小函式;需要檔案系統、行程或安裝套件時,就得用 container。Harshil 也說實務上兩種常會搭配用。
  • 八條通用清單預設禁止網路、明確授權、一人一個沙箱、設資源上限、secret 留在沙箱外、用完銷毀、全部記錄、先驗證輸入。

原話

  • “Your AI agent's code runs with your privileges.”

    AI agent 的程式碼用的是你的權限

    ▶ 06:11
  • “Global outbound null. This single line blocks all outbound network requests.”

    outbound 設成 null,這一行就擋掉所有對外請求

    ▶ 16:47
  • “The dangerous operations were never available.”

    危險的操作從來就沒有被提供

    ▶ 18:43
  • “The cost of an extra sandbox is always less than the cost of a data leak.”

    多開一個沙箱的成本,永遠比資料外洩低

    ▶ 34:05
  • “Keep the secrets outside of the sandbox.”

    secret 留在沙箱外

    ▶ 34:25

延伸

  • Harshil 最後給了 Dynamic Workers 文件、Sandbox SDK 文件與 Code Mode 的連結,這場沒有再展開 Code Mode 的細節。
  • Cloudflare containers 預設逾時是 10 分鐘,Harshil 說可依使用情境調整。

章節

點時碼直接跳到原片的那一段。

  1. 開場Harshil 自我介紹後問聽眾有沒有做過讓 LLM 產生程式碼並直接執行的東西,並回顧從自動補全走到自主 agent 的過程。
  2. 當成不可信的程式碼Harshil 說剝掉 AI 包裝之後,就是一個黑箱吐出程式碼,你不一定逐行看,卻在自己的環境用自己的憑證執行。
  3. 三種風險情境幻覺(不存在的套件、沒有終止條件的遞迴)、過度熱心的 LLM 去讀環境變數、間接 prompt injection 讓 LLM 成為攻擊管道。
  4. 擁有你的權限AI 產生的程式碼和應用程式有同樣的存取範圍,用的是真正的 production 權限。
  5. 沙箱是老問題瀏覽器分頁、作業系統行程、手機 app 都早就隔離了,問題是做 AI 功能時忘了套用。接著講 capability-based security 的鑰匙比喻。
  6. 隔離強度光譜從同一個行程內直接跑(不要這樣做)、isolate、到 container,說明選擇看使用情境。
  7. 五個要守住的點secret、網路、檔案與設定、其他使用者的資料、無窮迴圈造成的資源耗盡,每一項都要有明確的是或否。
  8. 兩個實際 app一個要執行小型重複函式、要求極快;一個要產生動態影像並給出預覽網址,需求不同所以沙箱不同。Harshil 在第一個 app 示範 OpenClaw 替代品寫出 Hacker News skill。
  9. isolate 的架構用 dynamic worker 開 isolate,把 outbound 設成 null、只傳入受限的資料庫 binding;網路有封鎖、經由自家服務轉送、完全開放三種選擇。
  10. isolate 的限制只能跑特定語言、沒有磁碟、無狀態、有 CPU 與記憶體上限;Harshil 認為這些限制對短命函式反而是優點。
  11. 第二個 app 需要 container影片產生 app 要 clone、npm install、跑 dev server、對外開網址,逐項對照後 isolate 全部做不到。
  12. container 的架構每個使用者一個 container;worker 透過 sandbox SDK 與 durable object 管理 container 的生命週期,程式碼流程是取得沙箱、clone、安裝、起 server、開 port。
  13. 三個關鍵做法一人一個沙箱不共用、API key 不放進沙箱而改由 worker 代理請求、用完一定銷毀。
  14. container 取捨與選擇container 較慢、較貴、較複雜;決策樹只問一件事:需要檔案系統、行程或套件安裝嗎。實務上 agent 常在 isolate 與 container 間切換。
  15. 八條通用清單預設禁止網路、明確授權、一人一個沙箱、資源上限、secret 留在外面、用完銷毀並設最長存活時間、全部記錄、先驗證輸入。
  16. 結語與回顧Harshil 要大家記住 AI 產生的程式碼就是不可信的程式碼,並回顧威脅模型、capability、兩種做法與清單,最後給文件連結。

名詞

Harshil Agrawal
Cloudflare 的 Senior Developer Educator,平常用 AI 做東西,也教別人怎麼做
capability-based security
只授予程式碼明確需要的能力,沒授權的就不存在;對照的是列舉所有要擋的東西的黑名單做法
V8 isolate
輕量沙箱,沒有檔案系統也沒有行程模型,Harshil 用來跑 tool calling 與小函式
Dynamic Workers
Cloudflare 能在執行時動態開出 V8 isolate 的 API,Harshil 用它做 isolate 那一邊
binding
主程式傳給 isolate 的受限介面,例如只開放 query 方法的資料庫,是 isolate 唯一碰得到的東西
Sandbox SDK
Harshil 用來管理 container 沙箱的 SDK,由 durable object 負責生命週期
Durable Object
有狀態的協調者,負責驅動沙箱的生命週期
indirect prompt injection
LLM 讀到網頁或文件裡的隱藏指令,使用者與模型都沒做錯,但資料本身是惡意的
OpenClaw
Harshil 的第一個 app 是它的替代品,agent 不能執行 shell 指令,只能寫 JavaScript 在 isolate 跑
prompt motion
Harshil 的第二個 app,使用者用自然語言描述動態影像,AI 寫程式並給出預覽網址
Code Mode
Harshil 說 Cloudflare 內部使用的 AI agent 整合模式

相關影片 同屬「權限邊界」