把 Agent 關在開發容器,放心開完整權限也不會搞爛電腦

更新

摘要

開發容器把 Agent 的工具鏈放進 Docker 執行,可降低污染主機環境的風險;真正要守住的邊界是掛載範圍與可由 Git 復原的專案變更。

文章目錄

AI Agent 很好用,但如果權限沒有控制好,很容易發生資訊安全、資料污染或遺失的問題。雖然目前大環境仍是在做技術探索,但再過好一陣子、技術要納入生產線時,資訊安全將會被重視,尤其是公司更要注意。

開發容器可以透過 VS Code 的 Dev Containers 延伸模組來實現,IntelliJ 也有類似的功能,有需求的也可以嘗試建建看。

這篇操作以 VS Code、Docker Desktop 與 Ubuntu 開發容器為範圍,並於 2026 年 9 月 1 日依 VS Code Dev Containers 官方文件 重新核對。Windows 需要先能正常啟動 WSL2 與 Docker Desktop;macOS 則要確認 Docker Desktop 已在執行,再開始建立容器。

安裝容器功能

我們會以 VS Code 來說明,請先安裝 Dev Containers 與 Remote Explorer 到 VS Code 中,再從左側遠端總管的開發容器中,點擊安裝 Docker,會開始自動下載 Docker Desktop 並安裝。

VS Code 遠端總管的開發容器面板,提示可從安裝 Docker 開始使用容器

Docker Desktop 於 macOS 可以直接安裝使用,Windows 則要先啟用 WSL。完成安裝後,請啟動 Docker Desktop 與重啟 VS Code。

macOS Docker 安裝視窗,將 Docker.app 拖曳到 Applications 資料夾

建立開發容器

接下來,我們可以拿現有的專案或新建一個專案來用於實驗這個開發容器,請從遠端總管的開發容器中,點擊開啟容器中的資料夾,選擇你的專案資料夾。

VS Code 遠端總管的開發容器面板,顯示開啟容器中的資料夾按鈕

當我們選的專案沒有建立過開發容器,會跳出下圖的新增開發容器設定檔,請選擇將設定新增至工作區。

VS Code 新增開發容器設定檔選單,選擇將設定新增至工作區

先選擇基底 Image,我習慣用 Ubuntu,該有的都有,很適合開發用。

VS Code 新增開發容器設定檔清單,選擇 Ubuntu devcontainers 範本

版本使用預設值 resolute (Ubuntu 26.04)。

VS Code Ubuntu 版本選單,使用預設的 resolute 版本

接著可以於容器中預先安裝好開發工具,省去自己操作的時間,未來也好遷移。我的專案是一個 Android APP,需要安裝 Android SDK。

VS Code Dev Containers 選取功能畫面,勾選 Android SDK Feature

我使用 Codex CLI 來開發,也能預先安裝好它。選擇好後再點擊確定,VS Code 將會開始下載與建置開發容器,會需要一段時間。

VS Code Dev Containers 選取功能畫面,同時勾選 Codex CLI Feature

設定容器工具版本

容器建置好後 VS Code 會自動啟動與連線到開發容器中,由於 Android 專案對於各種元件的版本號碼很敏感,需要特別設定。

我可以瀏覽剛才選用 Android SDK 的 GitHub,能發現他有提供 platform、build_tools 的版本號碼欄位,因此可以編輯 .devcontainer/devcontainer.json,於 android-sdk 下加入版本設定。

VS Code 開發容器內的 devcontainer.json,設定 Android SDK platform 與 build_tools 版本

設定完成後,再點擊左下角的開發容器: Ubuntu @ XXXX 按鈕,選擇重建容器,等待一段時間後 Android SDK 的版本就能與專案設定相同。

VS Code 開發容器命令選單,選擇重建容器

登入 Codex CLI

我們用開發容器的主要理由是要做好 Agent 的環境隔離,現在進入最後一哩路,請透過終端機輸入 codex 來啟動 Agent。

Codex CLI 登入畫面,提供 ChatGPT、Device Code 與 API key 登入選項

登入後,就可以輸入 /permissions 將權限改成 Full Access,把完整權限限制在容器可見的環境內;掛載進容器的專案與其他主機資料仍會受到影響。

Codex CLI 權限設定畫面,選擇 Full Access 讓 Agent 在容器內完整存取

確認容器真的可以工作

VS Code 左下角應顯示目前連線的開發容器,終端機執行 cat /etc/os-release 應看到所選的 Ubuntu 版本,輸入 codex 也要能進入登入後的 Session。Android 專案還可以執行既有的建置或版本檢查,確認 platform、build_tools 與專案需求一致;只看到容器成功啟動,還不能代表工具鏈已經完整。

Full Access 的隔離範圍也要看實際掛載內容。Agent 仍然能修改掛載進容器的專案、憑證、Socket 或其他目錄,所以不要把不需要的主機路徑一起掛進去,重要變更仍要交給 Git 保存。

建置失敗與回到本機

修改 .devcontainer/devcontainer.json 後沒有生效時,先執行「Dev Containers: Rebuild Container」。官方文件也提醒,直接在容器內手動安裝的套件會在重建後消失;需要保留的工具應寫進 Feature、Dockerfile 或 postCreateCommand。

容器若建置失敗,可從「Dev Containers: Show Container Log」查看失敗步驟,再選擇「Open Folder Locally」回到本機修改設定。若決定停用這套環境,只要先回到本機開啟專案,再移除不再需要的 .devcontainer 設定;原始碼是否保留仍以實際掛載位置與 Git 狀態為準。

總結

我的工作主力是 Codex,現在他的權限管理機制仍在快速迭代中,老實說現在的版本不怎麼好用,但給予完整權限又不安全。把開發環境放進容器後,我可以把工具鏈與主機隔開;真正要守住的邊界則是只掛載必要的專案與資料,並讓所有重要修改都能由 Git 復原。

接著可以做什麼

上一篇CLIProxyAPI 讓 Claude Code 使用 GPT 5.6 Sol 模型與 Codex 訂閱AI下一篇Pi Coding Agent 安裝、配置與使用 Codex 訂閱AI
Ted Liou

Ted Liou

Unity 現役工程師,Unity、AI 技術開發經驗分享與諮詢。