OpenAI Agents SDK 官方文件區分本機 Unix、Docker 與託管執行環境;但本機 Unix 沙箱不提供作業系統層級的檔案系統或網路隔離。官方執行後端說明 因此,OpenAI Agents SDK 企業 Mac CI 沙箱不能單獨充當主機安全邊界。若任務要執行 Xcode,請把 Agent 工作區、可信建置節點與簽署環境分開;不可信命令則放進經測試的隔離執行環境。
| 里程碑 | 本週建議動作 | 放行條件 |
|---|---|---|
| 執行邊界確認 | 盤點 Agent 能讀取的路徑、主機帳號與網路出口 | 以實際測試證明限制有效 |
| 任務分流 | 區分一般程式碼分析與必須使用 Xcode 的工作 | 每種任務有指定執行環境 |
| 憑證隔離 | 將 Agent 執行節點與可信簽署節點分開 | Agent 無法直接取得生產簽署資產 |
誰適合讀這篇
負責把 AI Agent 接入 iOS/macOS 流水線的 IT 或平台工程負責人,應確認執行環境與建置節點的隔離邊界。
負責企業原始碼和憑證治理的安全負責人,應檢查 Agent 命令實際可存取的檔案、網路與簽署資產。
正在評估 Mac 建置資源的技術負責人,則需要判斷哪些任務確實依賴原生 macOS 與 Xcode。
Agent 工作區不等於主機隔離
OpenAI Agents SDK 的工作區能幫你整理任務檔案與執行狀態,但「限制 SDK 可用的檔案操作」和「限制主機上所有命令」是兩回事。評估企業 Mac CI 時,要分開檢視工作區範圍、執行命令的帳號權限,以及作業系統或其他執行後端提供的隔離。
本機沙箱會限制 macOS 檔案系統和網路嗎?
不會。本機 Unix 沙箱並未提供作業系統層級的檔案系統或網路隔離;工作目錄或 HOME 變數也不會自行建立安全邊界。SDK 的沙箱客戶端文件 明確區分本機執行與其他執行後端。你不能只看「sandbox」或「工作區」標籤,就認定命令無法存取工作目錄以外的主機資源。
路徑授權也要依介面分辨。SDK 的檔案操作規則,不等同於任意 shell 命令受到相同路徑限制;命令能否讀寫其他位置,仍須按所選執行後端及主機帳號權限驗證。若你只測試 SDK 的檔案 API,便不足以證明 sh、建置腳本或 Agent 呼叫的其他程式受到同樣約束。
注意:把工作目錄設定成專用資料夾,不代表主機上的其他目錄、環境變數或網路目的地已被封鎖。
Mac 上的命令會用哪個帳號權限執行?
本機命令使用所選主機使用者的作業系統權限;SDK 工作區本身不會另行建立低權限的 Mac 帳號。官方本機沙箱說明 因此,你要查的是命令實際以誰的身分執行,而不是 Agent 的角色名稱或工作區名稱。
若該帳號可讀取其他專案、存取憑證或連上內部服務,Agent 命令就可能繼承相關權限。用專用帳號可縮小權限範圍,但仍要搭配主機層的檔案、網路與憑證控制;只改變 HOME 或目前目錄,並不能取代這些限制。
會話與執行後端的隔離能力不同
新建會話或臨時工作區,有助整理任務資料,卻不等於重設主機權限,也不代表清除其他位置的檔案與憑證。SDK 文件分別說明工作區和會話的處理方式;你應另外查核工作區生命週期、會話是否重用,以及執行結束後哪些狀態仍留在主機上。工作區與會話文件
| 執行方式 | 可用於判斷什麼 | 不應直接推定什麼 |
|---|---|---|
| 本機 Unix 沙箱 | Agent 命令在 Mac 上執行;須核驗主機帳號權限 | 已具備作業系統層級的檔案或網路隔離 |
| Docker 沙箱 | 依實際容器設定檢查檔案、網路與資源邊界 | 所有容器設定都提供相同隔離,或能直接執行原生 Mac 建置 |
| 託管執行環境 | 依實際服務與設定確認執行位置和能力 | 可與本機或容器環境互換,或自動符合企業安全要求 |
SDK 的沙箱快速入門可協助你理解不同執行方式的使用脈絡,但不能代替對實際後端設定的驗證。官方沙箱快速入門 SDK 更新也可能調整能力或使用方式;接入前應查看官方更新說明,再按你部署的版本和設定重做核驗。
一般 Agent 命令與 Xcode CI 應分流
需要 Xcode 的工作,不能只看容器標籤
程式碼摘要、文件檢查或不需 Apple 工具鏈的腳本,可依資料敏感度與隔離能力安排執行位置。需要 Xcode 的編譯、測試或封裝工作,則應路由到具備所需 macOS 與工具鏈的受控 Mac 節點。Apple 將 Xcode 命令列工具列為 Apple 平台開發工作所用的命令列工具;可先依Apple Xcode 命令列工具文件確認建置節點需要的工具。
Linux 容器或託管執行環境,可能適合處理一般程式碼工作,但不能只因它被稱為沙箱,就假設它可直接執行原生 macOS/Xcode 建置。反過來說,Mac 上有 Xcode 也不代表適合執行所有不可信命令。任務所需系統、隔離要求與憑證權限,才是分流依據。
原始碼、內部依賴與簽署資產要分別看
Agent 工作可能接觸原始碼、私有套件來源、建置產物及簽署用憑證。這些資產不應因為同一工作流程而被視為同一風險:原始碼可透過有限範圍的檢出權限提供,內部依賴可限制可存取的來源,建置產物則應依其敏感程度決定保存位置與存取者。
生產簽署資產應留在獨立可信邊界,不要讓 Agent 執行節點直接持有可用於發布的身分。Apple 的鑰匙圈存取控制列表文件說明存取控制的設定方向;macOS 發佈簽署文件則可用來核對發佈簽署流程所涉及的身分。實際可見性仍須依你的憑證存放方式和節點設定測試,不能從文件概念推定部署已安全。
提醒:任務結束後清理工作目錄,不代表憑證、快取、日誌或會話狀態也已清除;請逐項確認清理範圍與結果。
以試點證據決定是否接入 Mac CI
試點的目標不是證明 Agent「跑得起來」,而是證明任務被限制在預期邊界。你可以按以下里程碑執行;任一項無法以實際配置與測試證明,就先不要把不可信命令或生產憑證放量接入。
- [ ] 工作區核驗:以測試命令嘗試讀取工作目錄外的敏感路徑,確認結果符合預期。
- [ ] 帳號核驗:記錄命令實際使用的主機帳號,檢查該帳號能讀取哪些專案、檔案與憑證。
- [ ] 網路核驗:測試允許及禁止的目的地,確認限制來自主機或執行後端的有效策略,而非 Agent 提示文字。
- [ ] 會話核驗:結束任務後再啟動新工作,檢查檔案、環境狀態與工作區是否被非預期重用。
- [ ] 憑證核驗:確認 Agent 執行節點無法直接讀取生產簽署身分,並在可信簽署節點獨立完成必要流程。
- [ ] 清理核驗:檢查任務完成後的暫存檔、建置產物、快取與日誌,留下可供安全審查的結果。
最終分流應明確:一般不可信命令先放入具備所需隔離能力、且已完成測試的環境;必須使用 Xcode 的工作才交給受控 Mac 建置節點;生產簽署資產則保留在獨立可信邊界。OpenAI Agents SDK 的本機 Unix 沙箱可以協助管理執行工作,但不能代替外部隔離策略。
如果現行做法是自購 Mac 給各團隊,硬體採購與閒置資源會增加管理負擔;若改用一般 Linux 容器,則可能缺少原生 macOS/Xcode 建置環境;若所有工作共用一台有簽署權限的 Mac,不受信任命令又可能接觸過多資產。遠端 Mac 可作為需要原生 Xcode 的建置資源選項,但租用本身不會自動建立安全隔離,權限與簽署邊界仍須由你設計和驗收。你可先查看 VMSPIN 的方案資訊,再按試點需求評估遠端 Mac 使用選項。