Codex CLI 安全性与隐私完整指南(2026)— 代码会上传吗?沙箱够用吗?

"Codex CLI 会把我的代码发给 OpenAI 吗?" 这是开发者最常问的安全问题。简短答案是:会,因为 Codex CLI 依赖 OpenAI API 进行推理。但这不意味着你的代码没有保护——本指南详细解析每一个安全维度,并给出针对不同隐私需求的解决方案。

安全概览
安全维度 默认行为 可以怎么加固
代码数据发送到 OpenAI API用 .codexignore 排除敏感文件 / Ollama 本地化
文件系统访问只读(suggest 模式下修改需确认)AGENTS.md 限制访问目录
命令执行auto-edit 模式需确认避免 full-auto;AGENTS.md 禁用危险命令
API Key~/.codex/auth.json(当前用户)环境变量 + 系统密钥管理
训练数据API 调用内容用于模型改进(默认)企业版零数据保留

1. 代码数据如何流动

理解 Codex CLI 的数据流动方式,是做好安全防护的第一步。以下是默认的数据传输路径:

默认流程

你的代码(本地) → Codex CLI → OpenAI API → 模型推理 → 结果返回

哪些内容会被发送

哪些内容不会被发送

OpenAI 的数据使用政策(截至 2026)

合规提示:如果你处理医疗数据、金融数据、政府机密或客户个人信息(PII),请在使用 Codex CLI 之前评估你的合规要求(GDPR、HIPAA、SOC 2 等),并考虑使用 Ollama 本地化部署。

2. 沙箱机制详解

Codex CLI 提供三种审批模式,安全级别各不相同。选择正确的模式是保护系统安全的关键。

审批模式 文件修改 命令执行 安全级别 适合场景
suggest(默认)需确认 diff不执行命令⭐⭐⭐⭐⭐ 最安全日常开发
auto-edit自动修改文件不执行命令⭐⭐⭐⭐ 较安全重构任务
full-auto自动修改文件自动执行命令⭐⭐ 需谨慎CI/CD 受控环境

在 AGENTS.md 中限制命令执行

通过 AGENTS.md 文件,可以在项目层面约束 Codex 的行为,即使在 full-auto 模式下也生效:

## 禁止的命令(full-auto 模式下也不执行)
disallow_commands:
  - "rm -rf"
  - "git push --force"
  - "chmod 777"
  - "curl | bash"
  - "wget | sh"
  - "sudo"
  - "dd"
  - "mkfs"

## 只允许以下命令
allow_commands:
  - "npm test"
  - "npm run build"
  - "npm run lint"
  - "pytest"
  - "go test ./..."
危险警告:在 CI/CD 中使用 full-auto 模式时,务必在隔离的 Docker 容器中运行,并通过 AGENTS.md 严格限制允许的命令。不要在没有隔离的生产服务器上运行 full-auto。

3. API Key 安全管理

API Key 是访问 OpenAI 服务的凭证,泄露 Key 会导致费用损失和数据风险。以下是从低到高的五个安全级别:

级别 1(最不安全):硬编码在代码里

# ❌ 绝对不要这样做
OPENAI_API_KEY="sk-..." codex "task"  # 历史记录可见

级别 2(基本):环境变量

# ~/.zshrc 或 ~/.bashrc
export OPENAI_API_KEY="sk-..."

# ✅ 比硬编码好,但 .env 文件不要 commit 到 git

级别 3(推荐):系统密钥管理

# macOS Keychain
security add-generic-password -a "$USER" -s "openai-api-key" -w "sk-..."
# 使用时
export OPENAI_API_KEY=$(security find-generic-password -a "$USER" -s "openai-api-key" -w)

# Linux Secret Service (GNOME Keyring)
secret-tool store --label="OpenAI API Key" service openai username codex
export OPENAI_API_KEY=$(secret-tool lookup service openai username codex)

级别 4(团队):环境变量管理工具

# 使用 direnv(.envrc 自动加载)
echo 'export OPENAI_API_KEY=$(op read "op://Personal/OpenAI/api_key")' >> .envrc
direnv allow

# 使用 1Password CLI
export OPENAI_API_KEY=$(op read "op://Personal/OpenAI/api_key")

# 使用 AWS Secrets Manager
export OPENAI_API_KEY=$(aws secretsmanager get-secret-value \
  --secret-id openai-api-key --query SecretString --output text)

级别 5(最安全):短期 Key + 权限最小化

# 为 CI/CD 创建专用 API Key(在 OpenAI 平台限制用量和模型)
# GitHub Actions
env:
  OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}  # 不暴露在日志中

# 定期轮转 Key(建议每 90 天更换)

保护 auth.json(codex login 方式)

# 查看文件权限(应该是 600)
ls -la ~/.codex/auth.json
# -rw------- 1 user group ... ~/.codex/auth.json

# 如果权限不对,修复
chmod 600 ~/.codex/auth.json

4. .codexignore 保护敏感文件

类似 .gitignore.codexignore 文件告诉 Codex 哪些文件和目录不应被读取或包含在上下文中。这是保护敏感数据不被上传到 OpenAI 的最直接方式。

# .codexignore — 安全配置模板

# === 认证与密钥 ===
.env
.env.*
*.pem
*.key
*.cert
*.pfx
secrets/
credentials/
.aws/credentials
.ssh/

# === 数据库文件 ===
*.sqlite
*.db
*.dump
*.sql

# === 业务敏感数据 ===
data/customers/
data/financial/
exports/
reports/
contracts/

# === 配置文件(含生产信息)===
config/production.*
config/staging.*
infrastructure/terraform/
k8s/secrets/

# === 日志(可能含 PII)===
logs/
*.log
最佳实践:将 .codexignore 提交到 git,确保整个团队使用相同的排除规则,避免有人在不知情的情况下将敏感文件包含在 Codex 上下文中。

5. 企业安全配置

对于企业用户,仅靠默认配置是不够的。以下五项措施可以将 Codex CLI 安全级别提升到企业标准:

1. 使用 OpenAI Enterprise API(零数据保留)

# ~/.codex/config.toml
# 企业配置:通过公司的 API 代理或企业端点
[providers.openai-enterprise]
name = "OpenAI Enterprise"
baseURL = "https://your-company-openai-proxy.internal/v1"
envKey = "OPENAI_ENTERPRISE_KEY"

2. CI/CD 中的最小权限原则

# GitHub Actions — 最小权限 API Key
- name: Codex task
  env:
    OPENAI_API_KEY: ${{ secrets.CODEX_CI_KEY }}  # 专用 CI Key,限制用量
  run: |
    codex exec --approval-mode auto-edit \
      --disable-server \  # 不启动本地服务器
      "run tests and fix failures"

3. 网络隔离(防止 Codex 访问内网服务)

# 使用 Docker 网络隔离运行 Codex
docker run --rm \
  --network=none \  # 禁用网络(需要时用 host 模式但限制出站)
  -e OPENAI_API_KEY="$OPENAI_API_KEY" \
  -v "$(pwd)":/workspace \
  node:20 \
  bash -c "npm install -g @openai/codex && codex exec 'run tests'"

4. 操作审计日志

# Codex 操作日志位置
~/.codex/logs/

# 在 CI/CD 中保存日志
codex exec "task" 2&1 | tee codex-audit.log
# 将日志上传到 S3/GCS 供审计

5. 代码扫描(预防敏感信息泄露)

# 提交前扫描,防止把密钥等内容送给 Codex
# 使用 gitleaks
gitleaks protect --staged

# 使用 trufflehog
trufflehog git file://. --since-commit HEAD --only-verified

6. 完全本地化方案(Ollama)

当数据隐私要求极高(如医疗、法律、国防等行业),使用 Ollama 本地模型是唯一能确保代码完全不离开本机的方案。

# 安装 Ollama
brew install ollama  # macOS

# 下载本地代码模型
ollama pull qwen2.5-coder:32b  # 最佳代码质量
ollama pull deepseek-coder-v2:16b  # 平衡性能

# 配置 Codex 使用本地模型
export OPENAI_BASE_URL=http://localhost:11434/v1
export OPENAI_API_KEY=ollama

# 现在运行 Codex——代码完全不离开本机
codex "重构这个模块"

本地化 vs 云端对比

维度 Ollama 本地 OpenAI API
代码数据完全本地发送到 OpenAI
符合 GDPR/HIPAA✅ 无外传⚠️ 需评估
代码质量较低最优
成本按 token 计费
离线可用

详细配置参考 Ollama 本地模型指南

7. 安全使用最佳实践清单

日常开发

团队 / 企业

高度敏感项目

8. 常见问题 FAQ

Codex CLI 会把我的代码上传到 OpenAI 服务器吗?

会。Codex CLI 将你的提示词和相关代码上下文发送给 OpenAI API 进行处理。如果你有数据隐私要求,可以:(1) 使用 .codexignore 排除敏感文件;(2) 使用 Ollama 本地模型(代码完全不离开本机);(3) 使用 OpenAI API 的零数据保留(Zero Data Retention)选项。

Codex CLI 的沙箱机制能防止恶意代码执行吗?

suggestauto-edit 模式下,Codex 会在你确认前显示所有文件修改,不会自动执行系统命令。full-auto 模式下才会自动执行命令,此时沙箱限制和 AGENTS.md 的 disallow_commands 配置是主要保护机制。不建议在生产环境直接使用 full-auto 模式。

Codex CLI 的 API Key 存储在哪里,安全吗?

通过 codex login(OAuth)认证的 token 存储在 ~/.codex/auth.json(仅当前用户可读)。通过 OPENAI_API_KEY 环境变量传入的方式更安全,可以利用系统的密钥管理工具(macOS Keychain、Linux Secret Service)。不要将 API Key 写入代码或 .env 文件并提交到 git。

企业能安全使用 Codex CLI 吗?

可以,需要配置以下措施:(1) 使用 OpenAI Enterprise API(数据不用于训练,零数据保留);(2) 通过 AGENTS.md 限制 Codex 只能访问特定目录;(3) 用 .codexignore 排除核心商业逻辑文件;(4) CI/CD 中使用短期 API Key;(5) 审查所有 full-auto 模式的操作记录。

← 沙箱与审批模式 本地模型方案 →