Skip to content

Codex CLI 沙箱与安全

Codex CLI 内置了沙箱机制和安全策略,确保在帮助你编程的同时保护系统和数据安全。本节详细介绍这些安全机制以及如何配置它们。


沙箱机制

Codex 在一个隔离的沙箱环境中执行命令和操作文件。这种设计确保:

  • 对你的项目文件的修改是可控的
  • 潜在危险的命令需要你的确认
  • 敏感数据不会意外泄露

沙箱是 Codex 安全策略的第一道防线,它确保 AI 的操作不会超出你的预期范围。


执行策略

Codex 使用执行策略(Execution Policy)来控制不同类型操作的行为:

策略类型

策略行为适用场景
ask每次执行前询问确认日常开发(默认)
approve自动批准执行完全信任的环境
deny拒绝所有可能产生副作用的操作只读模式

需要确认的操作

以下类型的操作会触发确认请求:

  • 执行 Shell 命令(特别是 rmkill 等)
  • 修改或删除文件
  • 创建新文件
  • 访问敏感目录(如 ~/.ssh//etc/
  • 网络请求(特定情况下)

配置执行策略

在配置中设置执行策略

bash

[exec]

default_policy = "ask"

出于安全考虑,不建议将默认策略设置为 approve,除非你完全理解潜在的风险。


确认对话框

当 Codex 需要执行敏感操作时,会显示确认对话框:

bash
══════════════════════════════════════════════════════
  确认执行
══════════════════════════════════════════════════════

  Codex 计划执行以下操作:

  命令: rm -rf node_modules/
  目录: /path/to/project

  这将永久删除目录及其所有内容

  [Y] 确认执行  [N] 取消  [A] 始终允许此类操作
══════════════════════════════════════════════════════

选项说明

选项说明
Y只执行这一次
N取消操作
A添加规则,之后自动批准

选择"始终允许"时要小心,确保该操作确实是安全的。


文件访问控制

受保护的目录

某些系统目录默认受到保护,Codex 访问这些目录时会额外确认:

目录说明
~/.ssh/SSH 密钥和配置
~/.aws/AWS 凭证
/etc/系统配置
~/.git-credentialsGit 凭证存储

自定义保护规则

你可以在配置中添加自定义的保护规则:

配置文件访问规则

bash

[sandbox]

# 允许访问的目录

allowed_paths = [

    "~/projects/*",

    "/workspace/*"

]

# 受保护的目录(需要额外确认)

protected_paths = [

    "~/.ssh/*",

    "~/secrets/*"

]

网络访问控制

Codex 可以限制网络请求的访问范围:

配置网络访问

bash

[network]

# 允许的域名

allowed_domains = [

    "github.com",

    "api.openai.com"

]

# 是否允许本地网络访问

allow_localhost = false

# 是否允许私有网络

allow_private_network = false

限制网络访问可以防止 Codex 意外连接到不受信任的服务。


工作目录限制

你可以限制 Codex 只能在特定目录中操作:

限制工作目录

bash

[sandbox]

# Codex 只能在这些目录中操作

working_directories = [

    "~/projects/*",

    "/workspace/*"

]

# 超出目录时的行为:warn(警告)或 deny(拒绝)

out_of_bounds = "deny"

命令白名单/黑名单

白名单模式(推荐)

只允许执行明确列出的命令:

命令白名单

bash

[commands]

# 白名单模式

whitelist_enabled = true

allowed_commands = [

    "git",

    "npm",

    "node",

    "python",

    "cargo"

]

黑名单模式

禁止执行特定命令:

命令黑名单

bash

[commands]

# 黑名单模式

blacklist_enabled = true

blocked_commands = [

    "rm -rf /",

    "dd",

    "mkfs"

]

白名单模式更加安全,建议在生产环境或处理敏感项目时使用。


敏感数据处理

自动屏蔽

Codex 会自动检测并屏蔽敏感信息:

  • API 密钥和密码
  • 令牌和认证信息
  • 个人身份信息(PII)

环境变量保护

某些环境变量会被自动隐藏:

bash
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
OPENAI_API_KEY
DATABASE_URL

手动指定敏感数据

你可以在配置中手动标记需要保护的内容:

自定义敏感数据模式

bash

[sensitive]

# 需要屏蔽的正则表达式模式

patterns = [

    "password\\s*=\\s*[^\\s]+",

    "api_key\\s*=\\s*[^\\s]+",

    "secret\\s*=\\s*[^\\s]+"

]

审计日志

Codex 可以记录所有操作的审计日志:

启用审计日志

bash

[audit]

enabled = true

log_file = "~/.codex/log/audit.log"

日志内容

审计日志记录以下信息:

  • 时间戳
  • 操作类型
  • 涉及的文件或命令
  • 操作结果(成功/失败)
  • 用户确认状态

查看审计日志

bash

# 查看最近的审计日志

tail -f ~/.codex/log/audit.log

审计日志对于安全审计和问题排查非常重要,特别是在团队环境中。


安全最佳实践

开发环境

  • 使用默认的执行策略(ask)
  • 启用审计日志
  • 配置命令白名单

生产环境

  • 限制工作目录
  • 使用白名单模式
  • 禁用不必要的网络访问
  • 启用完整的审计日志

敏感项目

  • 使用最严格的保护规则
  • 仔细审查每一个确认请求
  • 定期检查审计日志

常见问题

Q: 执行策略在哪里配置?

执行策略主要通过 ~/.codex/config.toml 配置文件进行设置。部分设置也可以通过环境变量配置。

Q: 误点了"始终允许"怎么办?

删除配置文件中的相关规则,或删除整个配置文件后重新启动 Codex,规则会被重置。

Q: Codex 能访问我的 GitHub 令牌吗?

Codex 会请求访问 GitHub 的必要权限来执行操作。你可以随时在 GitHub 设置中撤销这些权限。

Q: 如何完全禁用文件修改?

将执行策略设置为 deny,这将禁止 Codex 执行任何可能修改文件系统的操作。

AI 思考中...

Codex CLI Skills

Codex CLI 实用示例

基于 VitePress 构建,部署于 GitHub Pages