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 在对话窗口中也会实时显示所有操作。

📖 小节


📝 作业

  1. 基础题(难度⭐):配置 workspace-write 沙箱模式,并保护 .env 文件。
  2. 进阶题(难度⭐⭐):配置命令白名单,自动批准测试命令,拒绝危险命令。
  3. 挑战题(难度⭐⭐⭐):设计一套企业级权限方案——不同角色不同权限,写一份权限矩阵文档。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏