HoRain云--CodexCLI安全指南:分层防护构建AI开发堡垒

🎬 HoRain 云小助手:个人主页
⛺️生活的理想,就是为了理想的生活!
⛳️ 推荐
前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。
目录
Codex CLI 沙箱与安全:它不是「默认安全」,而是「分层开关你自己开」
(b) darwin(macOS)→ Apple Seatbelt (sandbox-exec)

Codex CLI 沙箱与安全:它不是「默认安全」,而是「分层开关你自己开」
Codex CLI 作为能在你机器上读代码、改文件、跑 shell 的 AI agent,安全模型是它最值得说的一块——OpenAI 把它做成「默认裸权,按需加沙箱」的设计,好处是本地开发不折腾,坏处是你得知道怎么开,否则 full-auto模式下 AI 真能 rm -rf或把 .env里的密钥读走。
🎯 先建立认知:三层安全开关
Codex CLI 的安全不是单一功能,是三层叠加:
|
层级 |
控制什么 |
默认状态 |
|---|---|---|
|
Approval Policy(审批档位) |
AI 能不能自动改文件 / 跑命令 |
|
|
Sandbox(沙箱) |
命令跑在哪:裸机 / OS 原生沙箱 / Docker |
裸机(没开) |
|
Network / FS 挂载 |
能不能上网、能碰哪些目录 |
全开放 |
⚠️ 装完直接
codex进去是 裸权 + suggest 审批——AI 提的任何改文件/跑命令都会弹给你确认,所以「裸跑」其实也炸不了,只要你手别瞎点 Yes。真危险的是你主动切到full-auto又不加沙箱。
🔒 1. Approval Policy(三档)
启动时用 --approval-policy或在交互里切:
codex --approval-policy suggest # 默认:改文件/跑命令全弹 Confirm
codex --approval-policy auto-edit # 改文件自动,跑命令仍弹
codex --approval-policy full-auto # 文件+命令全自动(⚠️ 必须配沙箱)
行为差异:
-
suggest:最稳,CI/教学/第一次跑陌生 repo 用这档。AI 每动一下都问你。
-
auto-edit:改源码自动,但
!cmd/ shell 工具调用仍要你批。适合「信 AI 写代码但不信它跑命令」的场景。 -
full-auto:全自动驾驶,CI 里常用。官方明确建议 full-auto 必须配 sandbox,否则等价于把终端 root 交出去。
📦 2. Sandbox:三种实现,按 OS 选
--sandbox <mode>控制「AI 起的子进程(含 shell 工具调用的命令)」跑在哪个隔离里:
(a) none(默认)
啥隔离都没有,子进程继承你当前用户权限。方便,但 full-auto下不建议。
(b) darwin(macOS)→ Apple Seatbelt (sandbox-exec)
-
用 macOS 自带的 Seatbelt profile
-
项目目录 只读 挂载进沙箱,临时目录可写
-
网络默认可禁(
--network none) -
不需要装 Docker,mac 上最轻量
(c) linux→ Landlock + seccomp
-
Linux 用内核 Landlock LSM(内核 ≥5.13)做 FS 粒度隔离,比 chroot 严
-
项目目录只读、tmp 可写
-
同样支持
--network none
(d) docker→ Docker 容器沙箱
-
最彻底:整个 AI session 跑在容器里
-
你可以定制
Dockerfile(装语言运行时、linter、数据库) -
项目目录挂
:ro,output 挂:rw -
生产 / CI / 敏感 repo 首推这个
配置示例(.codex/config.yaml):
sandbox:
mode: docker
# 可选:自定义镜像
image: codex-sandbox:latest
# 可选:额外挂载
mounts:
- /tmp/codex-out:/codex/out:rw
🌐 3. 网络 & 文件系统隔离(沙箱内层)
开了 sandbox 后还可以进一步收:
# 禁止联网(防 AI 把代码/密钥 POST 出去)
codex --sandbox darwin --network none
# Linux landlock 模式同理
codex --sandbox linux --network none
Docker 模式更细:
-
项目目录
:ro—— AI 改不动源码(但它可以在容器里npm test,测试结果挂出来) -
只挂
out/、reports/可写 -
不挂
~/.ssh、~/.aws、~/.env这些
一个典型企业姿势:
.codex/config.yaml+ Docker 沙箱 +--approval-policy auto-edit+--network none,CI 里跑 Codex review,本地开发用suggest。
🛡️ 4. 密钥 & 上下文隔离
Codex CLI 读这些地方拿 token / 配置:
-
OPENAI_API_KEY环境变量 -
~/.codex/config.yaml(可存api_key:) -
项目级
.codex/config.yaml(别把 key 写项目级,会被 git 蹭走)
安全建议:
-
key 放 用户级
~/.codex/config.yaml或 env,codex --login会帮你写 -
项目级
.codex/config.yaml只放model:、sandbox:、approval-policy:这类非敏感配置,并 gitignore 它(或团队共享则确保没 key) -
.env/.aws/credentials/id_rsa不要挂进 Docker 沙箱,也不要让项目级.codex/引用它们
🧪 5. full-auto 裸跑 vs 沙箱:对比
# ❌ 危险组合(别这样)
codex --approval-policy full-auto
# AI 可以直接 npm run、curl、rm、git push origin main
# ✅ 推荐组合(macOS 本地)
codex --approval-policy full-auto --sandbox darwin --network none
# ✅ 推荐组合(Linux 本地 / CI)
codex --approval-policy auto-edit --sandbox linux
# ✅ 推荐组合(敏感 repo / 生产感)
codex --approval-policy full-auto --sandbox docker --network none
🏗️ 6. 企业 / 团队部署的最小可行配置
.codex/config.yaml(项目根下,提交到 git,不含 key):
model: gpt-4o
approval-policy: auto-edit # 或 full-auto(配沙箱才用)
sandbox:
mode: docker
image: myorg/codex-sandbox:node22
mounts:
- ./test-output:/app/test-output:rw
# 禁止 AI 碰这些文件(实验性,看版本支持度)
exclude:
- "**/.env*"
- "**/id_rsa*"
- "**/.aws/**"
Docker image 里预装:项目需要的 runtime(node/python/go)+ linter + test runner,AI 在沙箱里能 npm test但出不去。
📊 选型速断
|
你在… |
推荐档位 |
|---|---|
|
第一次跑陌生 repo |
|
|
日常本地开发(mac) |
|
|
Linux 开发机 / CI |
|
|
敏感代码 / 全自动 PR 流 |
|
|
共享机器 / 实习生也能跑 |
Docker 沙箱 + auto-edit + 挂只读项目 |
💡 一句判断:Codex CLI 的安全哲学是「授权在你手里,隔离靠你开」。它不像 Copilot Workspace 那种云端 sandbox 默认兜底,好处是本地/CI 都能嵌,坏处是「默认裸跑」这个事实你得心里有数。开
full-auto之前先问自己一句:这命令要是 AI 瞎写一条DROP DATABASE,我在不在沙箱里?
要不要顺着往下?比如 Docker 沙箱镜像怎么写(Node + Python 双 runtime)、Landlock 在老内核(5.10/5.4)的降级行为、或者 Codex CLI + GitHub Actions 的 CI 沙箱模板,挑一个就行。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙
更多推荐




所有评论(0)