# Codex 权限、沙箱与安全

> Codex approval_policy、sandbox_mode、网络访问、自动审批审查、Rules、危险模式和 Passion8 场景下的安全边界。

URL: https://docs.passion8.cc/docs/codex/permissions-sandboxing
Language: zh-CN
Publisher: Passion8

Codex 的安全边界由两层组成:沙箱决定命令和文件系统能做什么,审批策略决定什么时候必须停下来问你。




AGENTS.md 是工作建议,不是安全边界。真正限制命令、文件、网络和高风险动作的是 sandbox、approval、rules、hooks、MCP 工具权限和系统/企业策略。




## 核心概念

| 层 | 控制什么 | 常用字段 |
| --- | --- | --- |
| Sandbox | 技术边界:读写路径、命令、网络 | `sandbox_mode`、`sandbox_workspace_write` |
| Approval | 什么时候暂停并请求确认 | `approval_policy` |
| Reviewer | 谁审批准入请求 | `approvals_reviewer` |
| Rules | 哪些命令可在 sandbox 外放行/提示/禁止 | `.codex/rules/*.rules` |
| Hooks | 生命周期检查、通知、阻断 | `.codex/hooks.json` 或 `[hooks]` |

## 常用模式

| 组合 | 适合场景 | 风险 |
| --- | --- | --- |
| `read-only` + `on-request` | 陌生项目、审查、规划 | 需要手动批准改动 |
| `workspace-write` + `on-request` | 日常开发默认 | 工作区内可自动读写 |
| `workspace-write` + `never` | 受控自动化 | 失败时不会问你,要有日志和 git 兜底 |
| `danger-full-access` + `never` | 外部隔离容器或一次性 VM | 本机边界基本放开 |

启动示例:

```bash
codex --sandbox read-only --ask-for-approval on-request
codex --sandbox workspace-write --ask-for-approval on-request
```

配置示例:

```toml title="~/.codex/config.toml"
sandbox_mode = "workspace-write"
approval_policy = "on-request"
approvals_reviewer = "user"
```

## Sandbox 模式

| 模式 | 行为 |
| --- | --- |
| `read-only` | 可检查文件;写文件和命令需要审批 |
| `workspace-write` | 可在工作区内读写并运行常规命令;出界、联网等需要审批 |
| `danger-full-access` | 不做沙箱限制;只在外部环境已经隔离时使用 |

在 `workspace-write` 下,部分路径仍会被保护,例如 `.git/`、`.codex/` 和 `.agents/`。这能降低代理误改版本库元数据、配置和能力文件的风险。

## Approval 策略

| 策略 | 行为 |
| --- | --- |
| `on-request` | 在沙箱内自动执行,越界时询问 |
| `never` | 不弹出审批,在现有权限内尽力完成 |

旧 `approval_policy = "untrusted"` 已退役,移除或改用受支持策略;项目 `trust_level = "untrusted"` 是不同概念,仍受支持。

`approval_policy = "never"` 不等于无限权限。它只是不问你;如果 sandbox 不允许某个动作,动作仍可能失败。

## 网络访问

本地 `workspace-write` 默认不开命令网络访问。需要显式打开:

```toml title="~/.codex/config.toml"
[sandbox_workspace_write]
network_access = true
```

如果需要限制访问域名,再启用 network proxy:

```toml
[features.network_proxy]
enabled = true
domains = { "api.openai.com" = "allow", "example.com" = "deny" }

[sandbox_workspace_write]
network_access = true
```

网络规则是 allowlist-first。`deny` 优先于 `allow`。`*` 代表非常宽的网络访问,生产环境尽量不用。

Web search 是另一层设置:

```toml
web_search = "cached"
# web_search = "live"
# web_search = "disabled"
```

Live search 和联网命令都会增加 prompt injection 风险。网页、issue、README、日志里的指令都应视为不可信输入。

## 自动审批审查

Codex 支持把符合条件的审批请求交给 automatic review:

```toml
approval_policy = "on-request"
approvals_reviewer = "auto_review"
```

它只审查本来就需要审批的动作,例如 sandbox escalation、被阻止的网络请求、side-effecting MCP/app tool。已经在 sandbox 内允许的动作不会额外走 review。




自动审查会增加模型调用和用量。团队场景下应结合 managed configuration 限制可用 reviewer。




## Rules

Rules 用来控制命令在 sandbox 外的放行、提示或禁止。它适合处理“只允许这几个命令越界”的场景。

```python title="~/.codex/rules/default.rules"
prefix_rule(
    pattern = ["gh", "pr", "view"],
    decision = "prompt",
    justification = "Viewing PRs is allowed with approval",
    match = ["gh pr view 123"],
    not_match = ["gh pr --repo org/repo view 123"],
)
```

测试:

```bash
codex execpolicy check --pretty \
  --rules ~/.codex/rules/default.rules \
  -- gh pr view 123 --json title,body
```

Rules 对 shell wrapper 会尽量拆分简单命令链。复杂 shell 特性无法安全拆分时,会保守地按整个 shell 调用处理。

## 危险模式检查表

开启 full access 或 `--dangerously-bypass-approvals-and-sandbox` 前先确认:

| 检查 | 标准 |
| --- | --- |
| Git | 当前目录有干净可恢复的 git 状态 |
| 密钥 | `.env`、生产凭据、SSH key 不在可误读范围 |
| 网络 | 不会访问未知网页或运行来自 issue 的脚本 |
| 目录 | 只在一次性 worktree、容器、VM 或可信项目 |
| 回滚 | 有明确的 diff review 和 revert 方式 |

## Passion8 场景

使用 Passion8 时,模型请求走 `https://passion8.cc/v1`,但本机文件、命令、网络和 MCP 权限仍由 Codex 本地安全模型控制。不要把“Provider 换成 Passion8”理解成“本机风险降低”。

建议默认:

```toml
sandbox_mode = "workspace-write"
approval_policy = "on-request"
web_search = "cached"

[sandbox_workspace_write]
network_access = false
```

需要联网安装依赖时,临时开权限并让 Codex解释原因;完成后恢复默认。

## 官方参考

- [Codex manual: Agent approvals & security](https://developers.openai.com/codex/codex-manual.md)
- [Codex manual: Sandbox](https://developers.openai.com/codex/codex-manual.md)
- [Codex manual: Permissions](https://developers.openai.com/codex/codex-manual.md)
- [Codex manual: Rules](https://developers.openai.com/codex/codex-manual.md)
