展示 HN:Yolobox——讓 AI 寫程式代理(coding agent)以完整 sudo 權限執行,也不會把家目錄(home dir)炸掉 (★ 101 分)

yolobox 是一個以 Go 撰寫的 CLI(命令列介面)工具,主打讓 Claude Code、OpenAI Codex、Gemini CLI 等 AI 程式代理(coding agent)在「YOLO 模式」(YOLO, You Only Live Once,意指放手一搏)下直接執行指令、甚至在容器內拿到 sudo(以系統管理權限執行命令),但把破壞半徑鎖在隔離環境裡。它的核心做法是把專案目錄掛載到 /workspace,預設不掛載主機家目錄,並用持久化 volume(persistent volume)保留工具與設定,避免代理誤判指令後把家目錄整個刪光或掃走憑證。

在使用體驗上,yolobox 提供一個「開箱即用」的基底映像檔,內建多個 AI 工具的 CLI、Node.js 22、Python 3、常見建置工具(make/cmake/gcc)、Git 與 GitHub CLI,以及 ripgrep、fd、fzf、jq、vim 等常用工具;需要額外套件時也可在容器內用 sudo 安裝。它也刻意把 claude、codex、gemini 等指令設成跳過權限確認提示的別名,讓代理可全自動執行;同時支援 Docker 或 Podman 作為容器執行環境,可自訂映像檔、額外掛載路徑、傳入環境變數、轉送 SSH agent(管理 SSH 金鑰的背景程式)、關閉網路、把專案改成唯讀掛載並把輸出導到 /output,或把主機的 Claude 設定檔同步進容器。README 也提醒在 macOS 上用 Colima 時,Docker 預設記憶體可能不足,Claude Code 需要至少 4GB 以上,否則可能被 OOM kill(記憶體不足而被系統強制終止)。

安全模型方面,yolobox 把「容器隔離」當作信任邊界:透過 Linux namespaces(命名空間,用於隔離檔案系統/行程/網路等資源)限制容器能看到的主機檔案範圍,主要防的是意外與誤操作,例如刪檔、偷讀家目錄裡的 SSH 金鑰與各種憑證、波及其他專案或主機設定。它不打算解決對抗性攻擊:專案目錄預設仍是可寫入、網路預設仍開放、代理在容器內有 root 權限;若碰到核心(kernel)漏洞導致容器逃逸(container escape,從容器突破到主機),它也不保證能擋。README 因此提供分級加固思路:用無網路與唯讀專案降低攻擊面、改用 rootless Podman(在主機上不以 root 身分跑容器)減少逃逸後的影響;若要最高等級隔離,則建議改用 VM(virtual machine,虛擬機)來避免共享核心。

討論區不少人肯定這類「把代理關進沙箱(sandbox,隔離環境)」的方向,也延伸出多種替代方案與質疑:有人提到 Apple 的 container framework 在 Apple Silicon 上可能比 Docker 更有效率;Linux 使用者則認為 Bubblewrap(bwrap,使用者態沙箱工具)或 Anthropic 的 sandbox-runtime(利用作業系統內建沙箱)能做出更細緻的檔案與網路政策。最關鍵的回饋來自一次 red team 測試:回報者指出 yolobox 會自動讀取專案目錄的 .yolobox.toml,且 mounts 可指定額外掛載,於是他放入 mounts = ["~:/tmp/host_home"],讓使用者下次在該目錄執行 yolobox 時,主機家目錄被無提示地以可寫入方式掛進容器,等於繞過「預設不掛載家目錄」的假設;他還結合持久化的 /home/yolo,把 payload 寫進 .bashrc,讓工具一啟動就持續影響後續環境。其他留言也提醒別把容器當成萬靈丹,建議載入專案設定時要加確認或限制可掛載目標、把 .git 以唯讀方式掛載以避免代理把本機 repo 刪光並降低 Git hooks(Git 勾子腳本)被利用的風險;也有人主張乾脆用 VM 或 VPS(Virtual Private Server,虛擬專用伺服器)跑代理、再把需要的檔案同步回本機。另有開發者問到如何與既有 docker-compose 互動,作者則回應把 Docker socket(/var/run/docker.sock)掛進容器雖可行,但會放大權限與混淆風險,需審慎評估。

👥 73 則討論、評論 💬
https://news.ycombinator.com/item?id=46592344
 
 
Back to Top