生活分享

权限、沙箱、网络与密钥

沙盒决定工具技术上能碰哪些档案或网路,授权政策决定什么时候需要询问。两层设定不能混为一谈:不显示询问不代表动作一定被允许,能读档也不代表可以写入所有地方。

阅读时间约 14 分钟 · 操作 20 分钟

实作顺序示意图,非产品介面截图。
图片:Mokaair (© Mokaair)
回总目录:Codex 学习中心:完整教程目录

实践 · Desktop / CLI / VS Code / JetBrains / cloud

本篇目录
  1. 目标与准备
  2. 步骤 1:建立最小权限练习
  3. 步骤 2:先读取,再辨认写入限制
  4. 步骤 3:授予本次需要的工作区写入
  5. 网路、金钥与核准不是同一件事
  6. 常见故障与还原验收

目标与准备

先完成及。你的自然语言要求表达想做什么,沙盒限制工具技术上能做什么,核准政策决定哪些操作需要再确认。三者要一起看;「不用问我」不等于工作区突然能写任何地方,唯读也不表示完全不能执行读取命令。

步骤 1:建立最小权限练习

在编辑器建立 codex-permissions-lab,新增 note.txt 与 request.txt,分别放以下两段。它们只是虚构标记,不需要 API 金钥、登入档或正式专案。开整合终端机,用 PowerShell 的 Get-Location 或 macOS/Linux 的 pwd 确认末端是此资料夹,避免用错目前目录来判断沙盒。

档案内容:存入 note.txt · text
PERMISSION-LAB
Revision: 1
档案内容:存入 request.txt · text
Only note.txt may be changed during the authorized write exercise.
Target revision: 2

保存原始 note.txt 内容以便还原。在该目录执行下面的 CLI 启动命令,它只设定这次工作阶段,不把整个帐号的预设改掉。进入后看 /status,必要时查看 /permissions 显示的模式;如果你的组织强制其他限制,保留错误讯息摘要并依管理规则处理,不试著绕过。

系统终端机:先核对本篇指定的练习目录 · sh
codex --cd . --sandbox read-only --ask-for-approval on-request

步骤 2:先读取,再辨认写入限制

送出下列唯读要求,预期读到 PERMISSION-LAB、Revision: 1 与 request.txt 的指定范围。已允许的读取不一定每次跳出确认,这符合 on-request 的用途。核对回复的实际目录与编辑器内容;若它只重述提示词而未读档,不算完成读取验证。

自然语言提示词:在本练习的 Codex 任务输入 · text
Read note.txt and request.txt in the current lab. Report the actual working directory and exact revision. Do not change files, access unrelated folders or use the network.

接著送出下一段,它要求尝试教材写入但不升级权限。预期在目前限制下无法完成修改,可能回报受限或出现核准要求;若出现提示,这次选择拒绝或取消,再用编辑器确认 note.txt 仍是 1。单靠模型说「不能写」只证明它的回复,不足以证明作业系统真的阻挡过命令,请分开记录。

自然语言提示词:在本练习的 Codex 任务输入 · text
Try to change only note.txt from Revision: 1 to Revision: 2 using currently available permissions. Do not request broader access, disable protections or retry through another path. If the current sandbox prevents the write, report that and stop. This is a controlled permission exercise.

如果档案意外变成 2,先停止这次测试,检查实际启动旗标、模式以及是否曾核准扩大权限;不要直接下结论说唯读沙盒失效。用编辑器手动还原成 1,保存与设定相关的最小证据。桌面任务可能在不同主机或 worktree,务必看,不要比较错份档案。

步骤 3:授予本次需要的工作区写入

用 /exit 回到系统终端机,确认仍在本练习,再用下列命令开新工作阶段。这次允许工作区写入,送出再下一段明确要求。预期 note.txt 变成 Revision: 2,第一行与 request.txt 不变。这个例子不需要网路或工作区外写入,若要求其他能力,先看具体命令为何需要。

系统终端机:先核对本篇指定的练习目录 · sh
codex --cd . --sandbox workspace-write --ask-for-approval on-request
自然语言提示词:在本练习的 Codex 任务输入 · text
Read note.txt and request.txt. Change only the revision line in note.txt from 1 to 2. Keep all other contents and files unchanged. No network or outside-workspace access is needed. After editing, read both files again and report the actual result.

在编辑器再次核对两个档案,将变更前后、允许范围、遇到的提示与实际结果写入练习纪录。范例在普通文字档操作,不测试 .git、.agents、.codex 等受保护位置;工作区可写不代表每个子路径都可写。要新增技能或专案设定时,依该功能的指引处理,不把它们改名搬家来规避保护。

用证据分开拒绝、阻挡与写入成功

三种结果应分开:代理在呼叫工具前说不能写,是未尝试;工具执行回报限制且档案不变,才有该次阻挡的证据;工具说成功而档案仍是 1,则需查实际路径和结果,不能填已完成。下表只记此次普通文字档,不把一次结果推广成整台电脑、所有工具或三种作业系统的保证。

私人权限观察表:填入实际结果,不是命令 · text
Requested action: [read / controlled write / scoped authorized write]
Observed host and absolute file path: [actual values]
Permission mode and approval policy: [observed / unavailable]
Tool attempt: [not attempted / command and actual result]
Approval event: [none / allowed / denied / cancelled / automatic review result]
Before and after: [actual note.txt revision and request.txt comparison]
Conclusion: [what this evidence establishes and what remains unverified]
Restoration: [actual result / not performed]

网路、金钥与核准不是同一件事

内建网页搜寻、shell 命令连网、与帐号连接可能各有自己的设定。关掉 web_search 不能据此宣称所有工具都离线;可以开网页也不能证明 npm install 能连到套件站。先确认哪个工具、哪个主机、哪个网域出错,再处理那一层。这个教材全程不需要外部连线来完成档案修改。

遇到核准视窗,阅读将执行的动作与目标路径:读取教材、安装已选套件、写入外部服务的影响不同。允许一次操作不代表以后所有操作都已同意。若环境使用自动审查,记下其判定与原因,不能把没有人工视窗当作没有审查。never 表示不要求互动核准,并不自动移除沙盒,受限动作仍可能失败。

需要金钥的工具,透过该工具正式登入或指定的秘密设定入口处理;本篇不要求贴到提示词、AGENTS.md、Git 或截图。只检查「是否设定」与工具回传的认证状态,不输出整个环境变数清单。若已把真实金钥公开,先在发行服务撤销及重新产生,再移除暴露副本;仅删除聊天文字不能让旧金钥失效。

常见故障与还原验收

现象先确认下一步
不能改 note.txt实际目录与 sandbox在正确练习启动需要的模式
一直要求额外权限命令的路径与副作用缩小操作或核准确实需要的部分
连线失败工具、网域、主机及认证修正对应连线,保留错误
读得到但写不到设定资料夹是否受保护位置使用功能正式设定流程
旧设定无法启动已停用的 approval_policy 值依官方文件迁移并验证

官方文件已将 approval_policy = "untrusted" 列为停用设定;不要照旧文章直接复制。它与 projects 区段的 trust_level 是不同设定,不能全部搜寻取代。会协助你找出实际来源,先备份要修改的那一项,再依目前文件选择相容政策。

完成时应能解释两次启动差异,提供 note.txt 从 1 到 2 的实际结果,以及 request.txt 未变的核对。退出写入工作阶段,手动把 note.txt 还原为 1,之后新任务再看目前权限;退出不会还原档案。图中 1 是确认范围,2 是执行观察,3 是核对还原。本篇平台沙盒行为依官方文件查证,未宣称三种作业系统皆已实测,也未执行读者的核准流程。

18. 权限、沙箱、网络与密钥 — 实作顺序示意图,非产品介面截图。 Request → Permission → Action
18. 权限、沙箱、网络与密钥 — 实作顺序示意图,非产品介面截图。 Request → Permission → Action · 图片:Mokaair (© Mokaair)
阅读完整文字说明

Request to Permission to Action

回总目录

  • 生活分享

    Codex 学习中心:完整教程目录

    从安装、第一个任务到 MD 规则与进阶集成,规划 60 篇 Codex 教程、十个单元。按程度、平台、需求或命令搜索下一篇;尚未公开的教程会标示状态,方便安排学习路线。

  • 生活分享

    Worktree 与多任务隔离

    Worktree 让同一个 Git 程式库有不同的工作目录,各自承接不同分支。它适合让两项工作分开改档,但资料库、连接埠与外部服务仍可能共用,不能把档案隔离当成所有资源隔离。

  • 生活分享

    实战:制作小网站

    从 brief.md 规划并制作 Small Steps 待办网站,完成新增、完成、删除、筛选与本机资料保存。将 HTML、CSS、资料函式、画面事件与测试分开,以 Node 测试和浏览器操作验收,并留下可重新启动与还原的交接纪录。

  • 生活分享

    用量与效率:减少重工

    记录任务条件、模型选项、时间与成果,找出能减少无效重试和过多上下文的调整。

最新旅游情报攻略

资料来源

生活分享