Codex: Codex 权限设置
最后更新:2026-08-31
Codex 拥有强大的操作能力,但也带来安全风险。本节详细介绍权限设置,确保 AI 操作在你的掌控之中。
📋 前置知识:了解 Codex 基本配置(见第 6 课)
1. 你将学到
- 权限模型层级
- 沙箱三种模式详解
- 审批策略配置
- 敏感操作保护
2. 权限模型
(1) 操作权限层级
| 权限级别 | 操作范围 | 默认行为 |
|---|---|---|
| 读取 | 读取项目文件 | 自动允许 |
| 写入 | 修改/创建项目文件 | 需确认(可配置) |
| 执行 | 运行 shell 命令 | 需确认 |
| 网络 | 安装包、访问 API | 需确认 |
| 系统 | 访问敏感目录 | 需确认 |
(2) 风险等级
| 等级 | 操作示例 | 保护措施 |
|---|---|---|
| 🟢 低 | 读取源代码文件 | 自动允许 |
| 🟡 中 | 修改源代码文件 | 需确认 |
| 🟠 高 | 执行 shell 命令 | 需确认 + 显示命令 |
| 🔴 极高 | 删除文件、访问密钥 | 需确认 + 额外警告 |
3. 沙箱模式详解
(1) Read-only(只读)
BASH
codex --sandbox readonly
| 能力 | 状态 |
|---|---|
| 读取文件 | ✅ |
| 修改文件 | ❌ |
| 执行命令 | ❌ |
| 网络访问 | ❌ |
适用:代码审查、架构分析、文档生成
(2) Workspace-write(工作区写入)
BASH
codex --sandbox workspace-write
| 能力 | 状态 |
|---|---|
| 读取文件 | ✅ |
| 修改工作区文件 | ✅ |
| 执行命令 | ⚠️ 需确认 |
| 网络访问 | ❌ |
适用:日常开发(默认模式)
(3) Full-access(完全访问)
BASH
codex --sandbox full-access
| 能力 | 状态 |
|---|---|
| 读取文件 | ✅ |
| 修改任何文件 | ✅ |
| 执行命令 | ✅ |
| 网络访问 | ✅ |
适用:完全信任的自动化场景(谨慎使用)
▶ 示例 1: Alice 按场景选模式
PYTHON
def choose_sandbox(task_type):
modes = {
"code_review": "readonly",
"daily_dev": "workspace-write",
"full_migrate": "full-access",
}
return modes.get(task_type, "workspace-write")
# Alice 今天的工作
print(choose_sandbox("code_review")) # readonly
print(choose_sandbox("daily_dev")) # workspace-write
print(choose_sandbox("full_migrate")) # full-access
4. 审批策略
(1) 三种策略
| 策略 | 行为 | 风险 |
|---|---|---|
ask |
每次询问用户 | 最安全 |
approve |
自动批准 | 中等风险 |
deny |
自动拒绝 | 最保守 |
(2) 按操作类型配置
TOML
# ~/.codex/config.toml
[approval]
# Shell 命令审批
shell_commands = "ask"
# 文件写入审批
file_writes = "ask"
# 网络访问审批
network_access = "deny"
# 敏感路径审批
sensitive_paths = "ask"
(3) 命令白名单
TOML
[approval]
shell_commands = "ask"
# 自动批准的安全命令
auto_approve_commands = [
"git status",
"git diff",
"npm test",
"pytest",
"ls",
"cat",
]
# 始终需要确认的危险命令
always_deny_commands = [
"rm -rf",
"sudo",
"chmod 777",
"curl * | sh",
]
5. 敏感路径保护
(1) 默认保护路径
TEXT
📖 仅展示
~/.ssh/
~/.gnupg/
/etc/
.env
.env.*
secrets/
credentials/
*.key
*.pem
(2) 自定义保护路径
TOML
[sandbox]
blocked_paths = [
".env",
".env.production",
"secrets/",
"credentials/",
"config/production.yml",
"*.key",
"*.pem",
]
▶ 示例 2: Bob 保护生产配置
TOML
# Bob 的项目沙箱配置
[sandbox]
mode = "workspace-write"
allowed_paths = ["src/", "tests/", "docs/"]
blocked_paths = [
".env.production",
"config/prod/",
"secrets/",
"deploy/",
]
6. 权限审计
(1) 查看操作日志
BASH
# 查看本次会话的所有操作
codex --audit-log
# 输出示例
[10:30:15] READ src/auth.ts (auto-approved)
[10:30:18] WRITE src/auth.ts (approved by user)
[10:30:22] SHELL npm test (approved by user)
[10:30:25] WRITE test/auth.test.ts (approved by user)
(2) 审计配置
TOML
[audit]
log_all_operations = true
log_file = "~/.codex/audit.log"
include_shell_output = true
7. 最佳实践
| 实践 | 说明 |
|---|---|
| 默认 ask 策略 | 不要轻易改为 approve |
| 限制沙箱范围 | 只开放必要的路径 |
| 保护密钥文件 | 将 .env 和密钥加入 blocked_paths |
| 定期审查日志 | 检查 Codex 执行了哪些操作 |
| Git 作为安全网 | 提交前先 git commit,方便回滚 |
| CI 环境用 deny | 持续集成中拒绝所有写操作 |
❓ 常见问题
Q Full-access 模式有什么风险?
A Codex 可以执行任何命令、修改任何文件、访问网络。如果 Codex 误判,可能删除重要文件或执行危险命令。仅在完全信任的场景下使用。
Q 审批策略可以在运行时切换吗?
A 可以。在 Codex 运行中,输入
/mode 切换模式,或在对话中告诉 Codex "从现在起所有操作需要我确认"。Q 如何防止 Codex 访问 .env 文件?
A 在配置中将
.env 和 .env.* 加入 blocked_paths,并使用 workspace-write 模式。Q Codex 会偷偷执行命令吗?
A 在 ask 模式下不会,所有敏感操作都会先请求确认。但在 approve 或 Full Auto 模式下,Codex 会自动执行。
Q 如何知道 Codex 做了什么?
A 开启审计日志,或使用 git diff 查看代码变更。Codex 在对话窗口中也会实时显示所有操作。
📖 小节
- 权限层级:读取 → 写入 → 执行 → 网络 → 系统
- 沙箱三模式:readonly / workspace-write / full-access
- 审批策略:ask(安全)/ approve(自动)/ deny(保守)
- 保护敏感路径:.env、密钥、生产配置
- 最佳实践:默认 ask + Git 安全网 + 审计日志
📝 作业
- 基础题(难度⭐):配置 workspace-write 沙箱模式,并保护 .env 文件。
- 进阶题(难度⭐⭐):配置命令白名单,自动批准测试命令,拒绝危险命令。
- 挑战题(难度⭐⭐⭐):设计一套企业级权限方案——不同角色不同权限,写一份权限矩阵文档。