你希望调查现有项目的结构或错误,同时不编辑代码、不更改设置、不安装软件。请同时准备调查用提示词与限制修改的权限。Codex 的 read-only 沙箱与 Claude Code 的 Plan 模式用途相近,但工作方式不同。

阅读 → 展示依据 → 获取建议

Codex

检查 read-only 与审批策略

在应用和 IDE 中检查设置以及对话显示的权限。在 CLI 中使用启动选项限制本地命令的写入。

Claude Code

先使用 Plan,必要时限制工具

开展调查和规划,源代码编辑通常会被阻止。检查启动时是否允许绕过权限,以及仍可使用哪些命令和外部工具。

这里的目标是保护调查对象项目的源文件,并不意味着停止电脑上的所有写入,包括对话历史、日志和计划文件的保存。

已于 2026 年 10 月 9 日对照 OpenAI 和 Anthropic 官方文档核实。本文的启动示例尚未在真实设备上运行。我们将文档规定的产品行为与需要在自身环境中检查的条件区分开来。

Codex 应用与 IDE

检查设置界面与共享配置。除了审批菜单,也要检查文件写入限制。

Claude Desktop 与 VS Code

在界面中选择 Plan。另外检查新对话是否也以 Plan 启动。

CLI、网页与移动端

参见Codex CLI、Claude Code CLI或Claude 网页与移动端。还要检查任务实际在哪里执行。

1. 指令与权限限制

“调查登录流程的问题”这类请求存在歧义:代理应修复发现的问题,还是提交报告后停止?“不要修改”能传达你的意图,但不会移除编辑工具,也不会取消 shell 的写入能力。

将任务意图与阻止执行的控制措施分开

提示词

你希望它做什么

明确写出“仅调查并提供建议,不要实施”。规定报告格式以及任务结束条件。

产品权限

允许使用哪些工具

使用 Plan 或工具限制约束实施操作。检查审批或模式切换何时会扩大范围。

执行环境

如何保护写入目标

通过沙箱或操作系统权限限制实际写入。检查覆盖哪些进程,以及存在哪些例外。

上层指令不能替代下层控制。对于敏感项目,也要明确代理可以读取哪些信息。

Claude Code 文档说明,提示词与CLAUDE.md影响模型尝试执行的操作,而权限系统决定哪些操作获准执行。即使你在 Codex 的AGENTS.md中写入禁止事项,也要区分指令与实际权限。来源:Claude Code 权限。

2. Codex:应用、IDE 与 CLI 设置

桌面应用:在 Settings 中检查写入限制

在桌面应用的菜单中打开Settings → Configuration。设置快捷键在 Windows 上为 Ctrl+,,在 macOS 上为 Cmd+,。官方 Configuration 界面分别显示Approval policy与Sandbox settings。标签可能随语言和版本有所变化。

分别检查审批与写入权限

1
在 Configuration 中检查文件权限

如果 Sandbox settings 显示 Workspace write,就允许向工作区写入。仅调查时,应确认存在相当于 read-only 的限制。

2
检查审批策略

Approval policy 决定如何处理超出限制的执行请求。仅要求审批,并不会禁止工作区内的编辑。

3
检查新调查对话实际使用的权限

发送请求前,检查输入框下方的权限控件与当前生效的设置。如果已有任务仍在运行,先停止它。

如果找不到设置,请使用下文的配置文件方式。本文不保证每个版本都有相同的 read-only 按钮。

来源:官方 Configuration 界面、打开设置、输入框下方的权限控件。

界面不明确时:使用 Open config.toml

通过以下路径打开配置文件:Settings → Configuration → Open config.toml。用户设置通常位于~/.codex/config.toml。在旧式沙箱设置中,这些值表示只读访问,以及不请求额外审批的策略。这只是配置示例,阅读本文本身不会更改你的设置。

sandbox_mode = "read-only"
approval_policy = "never"

用户设置也会影响读取同一配置的应用、IDE 扩展和 CLI。受信任项目中位于.codex/config.toml的设置、启动选项以及管理策略也可能生效,因此看到这两行并不足以证明它们正在生效。在 CLI 中,/status与/debug-config可以显示执行条件及设置来源。若仅调查一个会话且不改变持久设置,请使用下文的 CLI 示例。

较新的 Permission profiles 功能仍处于测试阶段,提供了另一种配置方式,包括内置的:read-only配置档。当它与旧式sandbox_mode或--sandbox设置同时使用时,旧式设置可能优先;管理策略也会带来例外。添加两种方式之前,先检查自己正在使用哪一种。来源:打开配置文件、配置优先顺序、Permission profiles。

Ask for approval 不会禁止编辑

输入框下方的 Ask for approval 允许在获准的工作区内自动执行任务。Approve for me 将符合条件的审批请求交给自动审核。选择其中任一项都不会将工作区变成只读。Full access 也不适合作为仅调查的限制。

Codex 也提供/plan,可在实施前要求制定计划。但应分别检查规划请求与文件写入限制。不能仅因名称相同,就假定 Claude Code 的 Plan 编辑限制或例外也适用于 Codex。来源:Codex /plan。

IDE 扩展:通过齿轮图标打开 Codex Settings

使用 Codex 侧栏顶部的齿轮图标 → Codex Settings检查共享设置,通过Open config.toml查看详情。也要检查输入框下方的权限。编辑器的扩展设置与代理读取的config.toml是分开的。关闭提供已打开文件的 IDE context,并不会撤销代理的文件读取权限。来源:各客户端的开发者设置。

CLI:为本次会话指定选项

如果已经可以使用 Codex CLI,请在待调查文件夹内打开终端,然后按下述方式启动。无需永久重写配置文件。组织的管理策略以及所用 CLI 版本的能力仍具有优先效力。

codex --sandbox read-only --ask-for-approval never

--sandbox read-only

选择写入限制

读取可访问的文件,并在只读沙箱内运行命令。

--ask-for-approval never

不询问,直接在限制范围内工作

不请求额外审批。让代理报告无法执行的操作,而不是扩大限制以继续执行。

never并不意味着完整访问。沙箱类型与审批策略是不同的设置。OpenAI 官方组合表包含read-only与never的组合,用于在相应限制内读取文件和运行命令。来源:代理审批与安全。

on-request 有何不同

使用--ask-for-approval on-request时,代理可以为需要在沙箱外执行的操作请求审批。即使以只读方式启动,批准这种执行也会改变最初的边界。“必要时修改前先询问”与“这次不做任何修改”是不同的策略。

调查期间应避免的操作

不要仅为解决错误,就切换至 Full access、选择可写配置档或批准超出限制的执行。对于仅调查的任务,报告“未执行该项检查”可能是合适的结果。

网页、Cloud 与 Remote:区分查看设备和执行环境

网页上的任务使用受管理的执行环境,并且不会读取本地 Codex 配置文件。仅在电脑上加入上述两行,并不能让 Cloud 执行变成只读。检查 Cloud 界面与工作区提供的控制措施。我们尚未确认一种能让整个 Cloud 只读的等效启动流程。

通过 Remote 从另一界面查看电脑上运行的任务时,重要的是实际执行命令的机器上的设置。不要仅依赖查看设备上的限制。参见如何选择 Codex 本地执行、Remote 与 Cloud。来源:网页设置与本地设置的区别。

3. 仅用 Claude Code 调查与规划

Claude Desktop:在 Code 标签页的发送按钮旁选择 Plan

这些说明适用于 Claude Desktop 的Code 标签页。Chat 与 Cowork 设置不同于 Claude Code 权限模式。这里采用官方英文文档中的模式名称;实际界面文字可能随显示语言与版本有所不同。

发送前检查执行环境与 Plan

1
在 Code 标签页中选择环境与文件夹

检查 Environment 是 Local、Cloud、SSH 还是 WSL,并确认 Project folder 是你要调查的文件夹。

2
在发送按钮旁的模式选择器中选择 Plan

Manual 在审批后允许编辑;Accept edits 自动批准编辑。仅调查时请选择 Plan。

3
仅要求报告,不要转入实施

发送下文的提示词,阅读计划后停止。若继续调查,请保持选择 Plan。

与终端不同,Desktop 不使用 Shift+Tab 切换模式。请使用发送按钮旁的选择器。

通过选择器选中的 Plan 仅适用于该会话。其他模式选择会按文件夹记住,并覆盖设置文件中的permissions.defaultMode。如果新对话也应仅用于调查,每次都要检查是否显示 Plan。读取与 CLI 相同的设置文件,并不意味着对话中的模式选择会延续到下一会话。来源:Desktop 权限模式与选择持久性。

VS Code:在输入框下方的模式指示器中选择 Plan

打开 Claude Code 聊天面板,然后选择输入框下方的模式指示器 → Plan。从 v2.1.280 起,也可以在面板中发送/plan进行切换。如果计划以 Markdown 文档打开,请将其作为调查结果阅读,不批准实施。

让新对话也以 Plan 启动

  • 打开 VS Code 设置(Windows/Linux 为 Ctrl+,;macOS 为 Cmd+,)
  • 在 Extensions → Claude Code 下检查用户设置claudeCode.initialPermissionMode
  • 将该用户设置设为plan,即可指定 Plan 为初始模式
  • 打开新对话,并检查是否实际显示 Plan

根据当前官方规范,工作区中的claudeCode.initialPermissionMode设置会被忽略。这与 v2.1.225 之前的行为不同。在聊天中选择 Plan 也仅影响该对话。不要假定将permissions.defaultMode写入项目的.claude/settings.json就一定会改变 VS Code 的初始模式。检查扩展初始模式设置、最后选择的普通模式、管理设置、用户设置与其他适用配置之间的优先顺序。

也要留意尚未保存的文件。扩展的claudeCode.autosave设置会在 Claude 读取或写入前保存编辑器中的更改。要区分 AI 对源代码的编辑与编辑器保存文件的行为。自动附加已打开文件,也与限制文件访问不同。来源:VS Code 模式控制、扩展设置与优先顺序。

网页、移动端与 JetBrains 的操作方式

claude.ai/code

在输入框附近的模式菜单中选择 Plan。Cloud 支持 Accept edits 与 Plan。Auto 需要组织许可和受支持的模型;Bypass permissions 不可用。

移动端

在 Claude Code 对话中,通过输入框中的“+” → Permission 选择模式。使用 Remote Control 时,这也会更改本地机器上活跃会话的权限。

JetBrains

插件使用 IDE 终端中的 CLI。请使用下文的 CLI 示例和 Shift+Tab,不要套用 VS Code 专用的设置名称。

Cloud 会预先批准普通文件编辑,因此不能将其视为 Manual。调查时要明确选择 Plan,并要求代理提交报告后停止,而不是继续实施。Cloud 的编辑审批行为,并不意味着在 Plan 下可以无条件重写源文件。来源:各界面的模式切换、Cloud 模式。

CLI:以 Plan 启动,不批准实施

使用以下选项以 Plan 模式启动 Claude Code CLI。普通 Plan 会读取文件、调查结构与问题,并规划建议的修改。通过源代码编辑工具进行的修改通常会被阻止,但仍会创建计划文件。

claude --permission-mode plan

收到调查结果后停止

1
检查 Plan 与启动条件

在交互式终端中,Shift+Tab 可切换模式。也要检查启动配置是否允许绕过权限。

2
仅要求发现、依据与建议

将包含目标文件与行号的报告定义为完成条件,而不是编辑或构建。

3
不要批准实施计划

阅读计划,或选择 No, keep planning 继续调查。Yes 选项可能退出 Plan 并转入实施。

将“这个建议不错”与“允许执行这项修改”分别表达。

Plan 中的 shell 命令并非一律限于只读命令。当 auto 模式可用且useAutoModeDuringPlan开启时,分类器可以审核并允许执行这些命令。当 auto 不可用等情况下,超出内置只读集合的命令需要审批。来源:Permission modes 中的 Plan。

某些条件下,即使在 Plan 中也不会阻止编辑

根据官方文档,Plan 的编辑与命令限制不会在允许绕过权限的交互式终端会话中执行。即使界面显示 Plan,尝试进行的编辑或命令仍可能执行。应检查启用绕过的启动选项与设置,不要仅依赖 Plan 指示器。-p、SDK 与 VS Code 聊天面板另有说明;不要将这个例外推广到所有界面。来源:bypassPermissions。

既不需要 shell 命令,也不需要编辑工具时

如果读取代码和调查结构已经足够,请使用--tools限制内置工具。本例将文件调查工具限于 Read、Glob 与 Grep,并禁止 MCP 工具。EndConversation 仍可用于结束对话。相比普通 Plan,这会缩小调查能力:需要执行命令的检查将无法进行。

claude --permission-mode plan --tools "Read,Glob,Grep" --disallowedTools "mcp__*"

这里不要改用--allowedTools。该选项指定无需确认即可使用的工具,并不会将可用工具限制在列表内。此外,--tools本身不限制 MCP,因此需要单独的选项。来源:CLI 参考文档。

Desktop 没有与 CLI 的--allowedTools或--disallowedTools等效的会话级界面控件。设置文件中的权限规则会生效,但仅选择 Plan 按钮,并不能得到与本工具限制示例相同的约束。来源:Desktop 与 CLI 的能力差异。

本例不会让整台电脑只读,包括应用自身保存的数据、已加载的设置和钩子。打开不熟悉的项目时,应另外检查现有钩子、插件及外部连接。若需要更严格的操作,--restricted从 v2.1.248 起可用,它改变的不只是工具,还包括加载哪些设置等。它并不是在保持惯常环境不变的情况下给 Plan 换个名称。

若需持续管理工具权限,参见Claude Code 的 allow、ask 与 deny 设置。关于 Bash 隔离,参见沙箱配置与限制。默认允许工作区写入的隔离机制,与仅调查的用途不同。

4. 可直接使用的调查提示词

设置好权限后,要求代理在提交报告后停止。比起“修复这个”或“改进这个”,更精确地定义调查什么,以及什么输出代表任务完成,可以减少导致实施操作的误解。

本次任务仅调查现状并提供建议,不要实施。

范围:本项目的登录流程与授权边界。
允许:读取可访问的源文件,并解释结构和问题。
禁止:创建、编辑或删除文件;更改设置;添加依赖;
      执行构建、测试、数据库操作、提交、推送、部署,
      或更改外部服务。
      不要为了运行钩子或脚本而扩大权限。

交付内容:
1. 处理流程,以及调查过的文件与行号
2. 每个潜在问题的依据、影响与优先级
3. 改进建议(不执行),以及实施前所需的检查
4. 仅靠阅读无法解决的问题,以及未执行的检查

即使需要修改,也只提出建议,不要执行。
提交调查报告后结束任务。
用于排查故障

“阅读保存、加载和异常处理代码,调查已保存数据消失的可能原因。”如果日志含有秘密信息,先决定哪些内容可以共享。

用于设计建议

“解释模块依赖,并找出职责重叠之处。”不要将实际重构列为交付内容。

用于安全审查

“阅读所有者检查、身份验证、授权与输入校验。”将运行攻击代码或向生产环境发送请求视为另行安排的任务。

即使同意改进建议,也可以在调查对话中回复:“保留为候选方案,不要实施。”要继续开发,请另开开发对话,重新定义修改、测试与发布的范围。这样能让调查限制与任务目的保持一致。

5. 调查前后要检查什么

不要仅凭“模型说什么都没改”就结束验证。也不必为了确认源代码未变,而尝试向需要保护的源代码写入。先检查界面、配置说明与现有差异,并记录仍不确定的内容。

调查前:明确目的与执行条件

  • 检查目标文件夹与代理获准读取的信息
  • Codex 要检查文件权限与审批策略;Claude Code 要检查 Plan 及绕过权限的启动条件
  • 检查新对话是否保留同一模式,以及共享设置是否影响其他客户端
  • 规定调查中允许的操作,包括 shell、MCP、浏览器与外部应用
  • 识别原有未提交更改与未跟踪文件,保留用于比较的基线
  • 将提交报告作为完成条件,并要求把权限阻止的检查列为未执行

项目使用 Git 时,比较差异

例如,以下命令可显示已更改文件,以及已暂存和未暂存差异的摘要。调查前后都要检查,以免将原有更改误认为 AI 所作的修改。本例假定目标仓库已经使用 Git。

git status --short
git diff --stat
git diff --cached --stat

这些命令并不能证明任何地方都没有变化。git diff不显示未跟踪文件,这些检查也不覆盖所有被忽略的文件、工作区外的位置、数据库或外部服务。最终差异还无法反映先修改、随后恢复的操作。在报告中应区分检查过的内容与未检查的内容。Git 官方文档:git status、git diff。

调查后:将报告视为发现,而不是已实施的修复

  • 每个潜在问题是否包含文件、行号与代码依据?
  • 是否区分了静态阅读的推论与实际复现或测试结果?
  • 前后差异中是否存在未解释的更改?
  • 是否明确列出因权限不足或禁止执行而无法进行的检查?
  • 后续步骤是否仍只是建议,没有自动开始执行?

6. 无法执行的检查与剩余风险

测试与构建也可能写入文件

即使不编辑代码,测试也可能写入临时文件或快照,构建可能生成产物,包管理器可能写入缓存或依赖。不要认为“只是运行测试”就不会产生变化。只读限制下的失败可能正是限制的预期结果,而不是程序错误。

如果报告认为某些条件下可能绕过授权,下一步可以是在独立验证环境中制定复现计划。提高调查质量,并不要求立即允许写入生产数据库或含有秘密信息的机器。区分静态检查能确定的内容与必须执行才能验证的内容,能让报告更有助于决策。

仅限制源代码写入,无法保护以下范围

读取秘密信息

代理获准读取的信息可能用于调查。只读访问与禁止读取秘密文件是不同的控制措施。

修改外部服务

MCP 或已连接应用可能修改工单、仓库与其他资源。仅凭本地限制,无法确认每条途径都已被阻止。

历史、计划与日志

保存对话和计划,与编辑目标源文件不同。这些启动示例不会消除电脑上的每一次写入。

Codex Permission profiles 覆盖本地命令。MCP、已连接应用、浏览器、Cloud 与其他界面使用独立的控制措施。

Codex 的网络限制也会区分沙箱内命令的通信,与模型、身份验证等用途的服务流量。以只读方式启动,不保证读取的信息不会发送给模型或用于训练。 来源:Permissions 的覆盖范围。关于阻止秘密文件读取,参见Codex 秘密文件与权限。关于训练与保留设置,参见ChatGPT 与 Codex 的训练数据使用及隐私。

限制不符合预期时

  • 找不到设置:检查产品、版本、执行环境与组织的管理限制。不要切换到绕过这些限制的设置。
  • 测试失败:区分必要的写入与代码问题。在报告中保留未执行的检查。
  • 中途添加限制:已经发生的修改不会自动撤销。停止进行中的工作,检查差异,然后开启新的调查对话。

总结

Codex 要指定 read-only 与审批策略;Claude Code 要检查 Plan 的启动条件,必要时限制可用工具。然后提供在提交报告后结束任务的提示词。这两种工具都可以将调查与执行修改分开使用。

如果严格限制下仍有问题无法回答,应接受未执行检查的列表与进一步验证建议,不要随意切换至完整访问。可读信息、外部工具及应用自身保存的数据,需要与禁止编辑源代码分别设计控制措施。

常见问题

要求“仅调查”就会让代理只读吗?

它能传达目标,但不会改变实际编辑能力或命令权限。除了提示词,也要使用 Codex 沙箱,或 Claude Code 的 Plan 与工具限制,并检查它们具体限制什么。

Claude Code Plan 保证文件不会变化吗?

不能。它通常阻止源代码编辑,但会创建计划文件。官方文档还说明,在允许绕过权限的交互式终端会话中,Plan 限制不会执行。它不是禁止电脑上一切写入的模式。

Codex 的“never”审批策略意味着无限制访问吗?

它表示不请求审批,并不会关闭沙箱。与 read-only 组合时,代理会在这些限制内调查。要将其与完整访问启动区分开。

只读调查能完成安全审查吗?

不能。阅读源代码发现的潜在问题,不同于通过执行复现的结果。如果无法检查配置、运行环境或依赖服务,结论仍有局限。报告依据与未知事项,并在独立验证环境中规划必要的演示。

Codex 应用的 Ask for approval 会阻止编辑吗?

单独使用不会。审批策略与文件写入限制是分开的。检查 Configuration 和当前权限,仅调查时使用相当于 read-only 的限制。

在 Claude Desktop 或 VS Code 中选择一次 Plan,下次还会生效吗?

通过选择器选中的 Plan 仅适用于该对话或会话。每次都要检查指示器。在 VS Code 中,可以用用户设置 claudeCode.initialPermissionMode 指定初始模式。