8.1 一个真实故事
我有一个朋友老周,第一次用 Codex 时,把权限模式设成"全通过"。然后他对 Codex 说:
帮我清理一下桌面,把不重要的文件删掉。
Codex 很麻利,5 秒钟"清理完毕"。
老周打开桌面一看:30 多个文件,剩下 8 个。其中包括他正在写的 PPT、半年前下载的合同扫描件、一份没保存到云端的设计稿。
那天他一晚上都在用磁盘恢复软件。
这个故事告诉我们:权限管理不是可选项,是必选项。
8.2 Codex 的三档权限模式
Codex 提供三档权限模式,从严到松:
| 模式 | 行为 | 适合 |
|---|---|---|
| Read-only(只读) | 只能读文件、查信息,不能写、不能跑命令 | 安全敏感场景、第一次用 |
| Auto-approve safe(自动判断) | 读类操作自动通过;写类、命令类操作仍需确认 | 日常推荐 |
| Yolo(全通过) | 所有操作自动通过,不请求授权 | 完全信任的场景,慎用 |
桌面版叫法可能略有不同(比如"只读模式 / 标准模式 / 完全自动模式"),CLI 通用术语是 read-only / suggest(自动判断) / auto-edit(更宽松) / full-auto(全通过)。
怎么切换
CLI:
/approvals
会出来一个选择菜单。
桌面版:左下角的"权限"按钮,下拉选择。
也可以在启动时指定:
codex --approval-mode read-only
codex --approval-mode suggest # 默认
codex --approval-mode full-auto # 谨慎
8.3 三档详解
Read-only(只读模式)
它能做什么:
- 读取文件(
cat、read_file) - 列出目录(
ls、tree) - 搜索文件内容(
grep、rg) - 在线查询(如果允许网络访问)
它不能做什么:
- 写、改、删任何文件
- 跑会修改系统的命令
- 操作浏览器进行点击
- 安装新软件
适合场景:
- 第一次用 Codex,先建立信任
- 让 Codex 分析一个项目(你只想要它的看法,不要它动手)
- 处理敏感目录(比如
~/Documents/) - 让 Codex 当代码审查员
典型任务:
读一下这个项目的 README.md 和 package.json,
告诉我它的技术栈、目的、依赖关系。不要做任何改动。
Auto-approve safe(自动判断 / suggest 模式)
它能做什么:
- 自动通过所有"读"操作(无打扰)
- 写文件、删除、跑命令时弹出确认
它不能做什么:
- 不能跳过你的确认就改文件
- 不能跳过你的确认就跑命令
适合场景:
- 90% 的日常使用
- 你想专注思考,不想被读文件这种小事打断
- 你有项目级 git 备份,可以承受小失误
新手强烈推荐这个模式作为默认。
Full-auto(全通过 / yolo 模式)
它能做什么:
- 任何事,都不问
适合场景:
- 你已经很信任 Codex 完成某类任务
- 你在沙箱环境(VM、Docker、单独的工作目录)
- 自动化定时任务(人不在场)
- 你做好了"如果出错也不影响"的准备
绝对不要在这些场景用:
- 直接对你的桌面、文档目录用
- 没有 git 备份的项目
- 涉及生产环境、数据库的任务
- 老婆 / 老板的电脑
8.4 沙箱机制
除了三档权限,Codex 还有"沙箱机制"——把它的操作限制在一个安全范围内。
什么是沙箱
沙箱(Sandbox)就是给 Codex 划一个"操场",它只能在操场里玩,玩不到操场外。技术上 Codex 通过几种方式实现沙箱:
方式 1:工作目录限制
启动 Codex 时指定一个工作目录,它默认只能访问这个目录及子目录:
cd ~/codex-workspace/my-project
codex
它就不会去碰 ~/Documents/、~/Desktop/ 之类。
方式 2:网络隔离
CLI 默认允许 Codex 访问网络。你可以用 --no-network 禁用网络:
codex --no-network
适合处理敏感数据时,确保数据不会被外发。
方式 3:云端 VM
Codex Web 版完全在云端 VM 跑,跟你本地隔离。最安全,但也意味着它看不到你的本地文件。
方式 4:Docker 容器
进阶玩法:把 Codex 装在 Docker 里跑,给它有限的权限。第十八章会涉及这个。
8.5 怎么决定用哪档权限
下面这张决策表,帮你 5 秒做选择:
任务有副作用吗?
├── 没有(只是读、看、分析)
│ └── 用 Read-only
│
├── 有,但都是可恢复的
│ └── 用 Auto-approve safe
│
└── 有,且可能不可恢复
├── 在沙箱里跑(VM / 测试目录)
│ └── 可以用 Full-auto
│
└── 不在沙箱里
└── 必须用 Auto-approve safe,逐个确认
实例对照
| 任务 | 推荐模式 | 理由 |
|---|---|---|
| 让 Codex 读一份 PRD 给评审意见 | Read-only | 只读,不会改东西 |
| 帮我整理 ~/codex-workspace/ 里的项目文件 | Auto-approve safe | 写操作要确认 |
| 给项目加一个新功能 | Auto-approve safe | 写代码要确认 |
| 跑一段我熟悉的清理脚本,每天定时跑 | Full-auto | 已知操作,自动 |
| 操作 ~/Documents/ 里的合同 | Read-only 或 拷贝出来再处理 | 敏感且不可恢复 |
| 在 Docker 容器里做实验 | Full-auto | 容器是沙箱 |
8.6 权限请求长什么样
新手要熟悉"权限请求"长什么样,这样才能快速判断"该不该批准"。
桌面版权限请求
中央区域弹出一个卡片:
┌─────────────────────────────────────────┐
│ Codex 想要执行: │
│ │
│ 命令:rm cats.txt │
│ 工作目录:~/codex-workspace/playground │
│ │
│ 风险评估:删除文件,不可恢复 │
│ │
│ [拒绝] [批准一次] [总是批准] │
└─────────────────────────────────────────┘
三个按钮的含义:
- 拒绝:这次不让做
- 批准一次:只批准这一次,下次再问
- 总是批准:把这条命令加入"白名单",以后不再问
CLI 版权限请求
Codex wants to run: rm cats.txt
Working directory: ~/codex-workspace/playground
Risk: Deletes file, not recoverable
Approve?
(y) yes, just this time
(a) yes, always for this session
(n) no
看到权限请求时该想什么
问题 1:这条命令我看得懂吗?
如果是 rm、mv、echo > 文件 这种简单命令,你大概能判断风险。
如果是看不懂的命令(比如 find . -type f -exec sed -i ...),先停下,问 Codex:"解释一下这条命令在做什么"。
问题 2:这条命令的影响范围多大?
- 只改一个文件?基本安全
- 改一整个目录?谨慎
- 改
/、改~/、改/etc/?立即拒绝
问题 3:这条命令可以恢复吗?
- 写新文件:可以恢复(删掉就行)
- 改文件:如果有 git 可以恢复
- 删文件:废纸篓还能找回
rm -rf:基本没救
8.7 给"信任"一个边界
随着用 Codex 久了,你会越来越信任它。这是好事,但要给信任一个边界。
边界 1:可逆 vs 不可逆
可逆操作(写新文件、改文件如果有 git、移动文件)→ 可以放手 不可逆操作(rm -rf、删数据库、推到生产)→ 永远确认
边界 2:本地 vs 远程
本地操作 → 错了顶多自己受 远程操作(推 GitHub、调线上 API、发邮件)→ 错了影响别人,永远确认
边界 3:金钱 vs 非金钱
非金钱操作 → 错了浪费时间 金钱操作(调付费 API、买东西、转账)→ 错了破财,永远确认
边界 4:可见 vs 不可见
可见操作(在屏幕上的) → 错了你能立即发现 不可见操作(在后台跑、在远程 VM 跑)→ 错了过几天才发现,更要小心
8.8 一些特殊场景的权限实战
场景 1:让 Codex 处理敏感文件
# 把敏感文件先拷到 sandbox
cp ~/Documents/合同.pdf ~/codex-workspace/sandbox/
# 在 sandbox 启动 Codex,禁用网络
cd ~/codex-workspace/sandbox
codex --no-network --approval-mode suggest
处理完后再把结果拷回去。这样合同原件不会被误改,且不会上传任何信息。
场景 2:跑可能耗时的自动化任务
codex exec --approval-mode full-auto "整理本目录文件"
exec 模式 + full-auto 让它一口气跑完,适合"已知任务"。
场景 3:在 Docker 里完全沙箱化
docker run -it --rm \
-v ~/codex-workspace/test:/workspace \
-w /workspace \
node:22 \
bash -c "npm install -g @openai/codex && codex"
容器跑完即销毁,再激进的操作也不会影响你的本地。
场景 4:给 Codex 安装新软件
很多任务 Codex 会要装新工具(比如装 pdfplumber 处理 PDF)。
安装类操作的判断标准:
pip install、npm install、brew install→ 通常安全,可以批准curl xxx | bash→ 危险,必须读懂脚本再批准sudo开头的 → 危险,确认后再批
8.9 权限误操作之后
如果你不小心批了一个操作,事后发现错了,怎么办?
立即操作
1. 中断当前任务
桌面版:点"停止"按钮
CLI:Ctrl+C
2. 评估影响
- 文件被删了?查废纸篓 / 用
tmutil(macOS Time Machine) - 文件被改了?如果有 git,
git checkout -- 文件恢复 - 数据被改了?看有没有数据库备份
3. 防止扩散
如果 Codex 跑了某个会"传染"的操作(比如 git push 错了),立即:
git revert <commit>
git push --force-with-lease # 谨慎
或者在 GitHub 网页上"revert"那个 PR。
事后预防
1. 提高警惕等级
吃过一次亏,把权限模式调严:
/approvals -> read-only
至少两周,重新建立信任。
2. 启用 git
任何项目都加 git。每天工作开始前 commit 一次:
git add . && git commit -m "WIP $(date)"
这样万一 Codex 改坏了,一行 git checkout 就回来了。
3. 给关键文件备份
不能动的文件(合同、家庭照片、税务记录)放在 Codex 不能访问的地方,或者另外存一份。
8.10 隐私边界
权限管的是"动作",隐私管的是"信息流向"。Codex 在你授权下读到的所有内容,都会上传到 OpenAI 的服务器进行处理。
你应该明白:
- 文件内容、命令输出、对话内容,都会被传给 OpenAI
- OpenAI 在 ChatGPT Plus / Business / Enterprise 协议下,承诺不用你的数据训练模型(但仍会临时存储用于服务)
- 但你不应该上传:身份证号、银行卡号、密码、未公开的客户数据、医疗记录、未发布的财报
实操建议:
- 处理敏感文件前,先脱敏(用
xxx代替真实姓名、用假数据代替真数据) - 在 ChatGPT 设置里关闭"用我的数据改进模型"开关
- 真敏感的事,用本地小模型(Ollama 等),不要用 Codex
第二十一章会专门讲安全和隐私。
8.11 本章小结
- 三档权限:Read-only / Auto-approve safe / Full-auto
- 新手默认 Auto-approve safe,特殊场景调档
- 沙箱机制:工作目录、网络、VM、Docker 四种隔离
- 看到权限请求先看懂、看清影响、看可逆性
- 给信任划边界:可逆/远程/金钱/可见 四个维度
- 出错立即中断、评估、恢复
- 隐私:关训练开关、脱敏、敏感事用本地
下一章讲怎么"长期"用 Codex——一个项目跨多天、多次会话怎么连贯起来。第九章 · 项目与会话管理。