# Codex config.toml 安全起点

核验日期：2026-07-16

下面的 TOML 是一个保守起点：允许工作区编辑、按需审批、关闭子进程网络，并限制传给命令的环境变量。它没有固定模型名称，避免把会变化的模型选择写成永久默认。

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

[sandbox_workspace_write]
network_access = false

[shell_environment_policy]
inherit = "core"
include_only = ["PATH", "HOME", "LANG", "TERM"]

[history]
persistence = "save-all"

[tui]
notifications = true
```

## 放置位置

- 个人默认：`~/.codex/config.toml`
- 可信仓库共享覆盖：`.codex/config.toml`
- 单次运行覆盖：`codex -c 'sandbox_mode="read-only"'`

项目不受信任时，Codex 会跳过项目内 `.codex/` 配置层。不要通过扩大用户级权限来掩盖项目配置未加载问题。

## 配置优先级

从高到低：

1. CLI flags 与 `--config`。
2. 从项目根到当前目录的 `.codex/config.toml`，越近越优先。
3. `--profile` 选中的 profile 文件。
4. `~/.codex/config.toml`。
5. 系统配置。
6. 内置默认。

## 常用安全变体

只读调查：

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

普通本地编辑：

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

非交互、允许工作区编辑但不弹审批：

```bash
codex exec --sandbox workspace-write --ask-for-approval never "运行已定义的修复任务"
```

最后一种组合不会移除沙箱；越界操作可能失败。不要把 `never` 误解为完全访问。

## 启用网络前

若任务确需子进程网络，可改为：

```toml
[sandbox_workspace_write]
network_access = true
```

启用前记录：目的域、发送数据、返回内容可信度、关闭条件。Web search 与命令网络是不同能力，不能互相替代。

## 自检

```bash
codex status
codex --sandbox read-only "只报告当前工作目录、沙箱和已加载的项目指导，不修改文件"
```

- [ ] TOML 能被当前 Codex 版本识别。
- [ ] 项目配置只包含团队确需共享的设置。
- [ ] 没有 API key、token 或私有路径。
- [ ] 网络保持关闭，除非有明确任务需要。
- [ ] danger-full-access 没有成为日常默认。

官方来源：

- https://learn.chatgpt.com/docs/config-file/config-basic
- https://learn.chatgpt.com/docs/agent-approvals-security
