--- summary: "会话权限模式、工作区边界和升级审核者" read_when: - "选择代理会话的权限模式" - "了解谁审查执行升级" - "将会话权限与沙箱和工具策略进行比较" title: "会话权限模式" --- 会话权限模式设置一个会话的文件系统边界和执行升级审核者。边界是会话的记录的已解析 `sessionRoot`,或者在未记录根时所选代理的已解析工作区。该模式决定了该边界内部或外部可能发生的情况。 | 模式 | 文件系统访问 | 执行升级审核员 | | ----------- | --------------------------------------------------------- | --------------------------------------- | | `read-only` | 在`sessionRoot`下读取;省略管理突变工具 | 没有任何;执行被拒绝 | | `guarded` | 在`sessionRoot`下读写 | 一个人在进入许可名单快速路径之后 | | `workspace` | 在`sessionRoot`下读写 | LLM 审核:允许、拒绝或询问人工 | | `full` | 不受限制的文件系统访问 | 无 | 这些工具可见性和执行规则描述了 OpenClaw- 托管工具。原生工具可以在其权限控制下保留自己的工具表面;请参阅 [Codex 运行时策略](/plugins/codex-harness-runtime)。 所需的工作区根目录和沙箱限制仍然限制 `full` 模式下的文件工具。内存刷新运行仅公开 `read` 和仅附加 `write`。 Control UI 文件预览遵循此文件系统边界;打开会话根目录之外的文件还需要当前权限才能在该会话中启动轮次。 在 `workspace` 模式下,执行审核者拒绝会向代理返回原因,而无需创建人工审批卡。智能体必须选择实质上更安全的替代方案或询问用户;它不能绕过否认。审阅者 `ask` 判决和审阅失败请求人工批准。连续三个网关审核者的拒绝也升级为人类。现有的命令约束检查和明确的人工批准要求仍然有效;请参见 [Exec 模式](/tools/exec#modes)。 网关批准支持的命令在审查之前绑定每个解析的命令段可执行文件,并在启动之前重新检查它:受保护的可执行文件仅使用解析的真实路径身份,而可写可执行文件也使用内容哈希。 Node 身份检查涵盖通过调度进行的本地策略评估,并具有 [ 远程 shell 包装批准限制 ](/tools/exec-approvals-advanced#interpreter%2Fruntime-commands)。 POSIX 登录或交互式 shell 包装器会跳过自动审核,并在绑定成功时需要人工批准;现有的具有约束力的拒绝仍然被拒绝。它们的隐式启动文件位于操作数绑定之外。 `full` 需要 `operator.admin`。其他模式需要 `operator.write`。 ## 会话根目录和默认值 可以在任何会话上设置权限模式。当会话具有记录的 `sessionRoot` 时,该解析路径就是其文件系统边界。显式工作目录和托管工作树各自固定其会话的根。如果未记录根,则边界默认为准备运行时所选代理的已解析工作区。 托管工作树会话使用工作树签出作为 `sessionRoot`。嵌套工作目录仍然是运行时 `cwd`,因此相对路径从那里开始,而文件系统包含涵盖整个签出。 文件工具可识别会话的受信任根目录和工作目录的别名,包括使用这些别名的绝对路径。这不会扩展边界:指向内的不相关的外部符号链接仍然被拒绝,逃逸根的符号链接和原始 `symlink/..` 遍历也是如此。在 `read-only` 模式下,OpenClaw- 管理的突变工具仍然被省略。 当未指定模式时,新会话(包括托管工作树会话)将继承配置的全局或每代理 tool/exec 策略。 Exec 和文件工具设置是独立的:即使 `tools.exec.mode` 是 `full`,`apply_patch` 默认情况下仍保持工作区包含状态。有关文件设置、会话模式优先级和整体代理工作线程默认值,请参阅 [apply_patch 遏制](/tools/apply-patch#notes)。 创建工作树会固定工作目录,而无需选择权限模式。显式模式和已保存在现有会话中的模式保持不变。 当 Control UI 权限选择器与会话模式匹配时,它会使用代理解析的执行姿势标记为“默认”,例如,`tools.exec.mode: "ask"` 的 **Default (Guarded)** 没有更严格的主机批准策略。解决方案包括全局设置、代理覆盖和主机审批底线。如果没有这些设置或沙箱,默认为完全访问权限。仅允许列表策略和非等效 `security`/`ask` 对(包括 `ask: "always"`)保留普通 **Default** 标签。沙箱配置可以应用于其会话的代理也保留简单的 **Default**,因为无法在代理范围内声明有效的策略。这是显示元数据,而不是授权决策或文件系统访问保证;工具政策仍然适用。选择“默认”将清除会话覆盖;它不会将显示的模式保存到会话中。 ## 委托设置和维修 当常规代理通过其 `openclaw` 工具委派持久更改时,主机会将请求运行的有效权限策略应用于确切的建议操作。完全访问权限会在没有批准提示的情况下自动应用它,包括当完全访问权限来自配置的默认值而不是显式会话模式时。来自消息通道的受限运行要求请求聊天进行批准:通道支持的本机批准卡,否则回复 `/approve allow-once|deny`。网络聊天和终端运行在 Control UI 或应用程序中决定,这也可以决定任何聊天的批准。诸如“是”之类的自由文本回复绝不会授权更改。请求工具等待人类决策和应用程序结果。停止运行将取消其待批准;稍后批准无法恢复该运行。 独立的文件系统和沙箱边界、工具策略和系统代理操作限制仍然适用。主机还检查请求的运行和验证的推理路由是否仍然有效。交互式设置向导和座席切换仍然需要直接的操作员会话。请参阅 [OpenClaw 操作和批准](/cli/openclaw#operations-and-approval)。 ## 在任务期间更改权限 从聊天编辑器的 **执行权限** 菜单中选择一种模式。当更改解决时,仅图标选择器会立即显示所选模式的图标,并暂时阻止该会话的另一个选择。在网关发布更新的会话后,其他客户端会看到该模式。如果更改失败,选择器将与权威会话状态协调并显示错误;如果该状态还无法刷新,它将保持乐观选择,直到该会话的新权限读取或更新确认保存的模式。 - **Codex:** OpenClaw 中断活动的本机转向并停止其后台终端,然后使用新权限和内部 **权限更改** 通知继续进行同一对话。它不会重置对话或重播原始请求。 - **OpenClaw 本机运行时:** OpenClaw 刷新活动工具策略而不重新启动对话。后续工具调用将使用更新后的权限。 旧权限的待批准将被取消,而不是授予。更改权限不会撤消已完成的写入或其他副作用。已经启动的命令和后台进程不会回滚。 活动的 CLI-backed 运行和其整个代理在工作线程 (`worker-turn`) 上执行的运行不支持实时权限更改。 OpenClaw 在保存之前拒绝更改。停止任务,更改权限,然后在同一会话中继续。仅运行远程命令 (`remote-exec`) 的工作器放置遵循其本地运行的代理运行时的行为。 ## 策略优先级和限制 会话范围的执行策略属于权限模式。未设置模式时,将应用正常的全局或每个代理配置。 `/exec security=... ask=...`仅适用于其消息并且只能收紧显式会话模式; `host` 和 `node` 保留会话放置默认值。请参阅 [Exec 会话覆盖]()。 使用旧会话执行策略升级商店后恢复会话之前,请运行 `openclaw doctor --fix`;运行时不再读取该策略。缺少的策略值继承分层全局和每代理执行策略。当历史沙箱可用性未知时,迁移会使用更严格的沙箱基础来自动选择主机。限制性策略在不扩大对 `read-only` 或 `guarded` 的执行访问权限的情况下进行迁移。现有的权限模式保持不变。旧的完全访问策略已删除并发出通知,因此配置适用,从未转换为 `full` 权限授予。 已停用的 `execSecurity` 和 `execAsk` 字段保留在 `sessions.patch` 和 `sessions.patchMany` 的协议 v4 架构中。包含任一字段(包括 `null`)的请求将被拒绝,并显示 `INVALID_REQUEST` 并指导设置 `permissionMode`(`read-only`、`guarded`、`workspace` 或 `full`)或使用 `/exec` 进行一次运行。这两个字段都不存储为运行时会话策略。 显式 `full` 模式是托管批准文件楼层的管理员授权例外:其 OpenClaw 执行策略保持 `full` 且批准关闭,除非回合范围覆盖收紧它。批准文件层继续收紧配置驱动的执行策略、未设置模式和每个非完整会话模式。加强整个会话的安全性可以恢复这些楼层;仅拧紧 `ask` 则不会。沙箱限制和工具 allow/deny 策略保持独立,并且工具可以将不受支持的模式限制到兼容的更安全的策略元组。 Codex 还继续遵守外部强制执行的 `requirements.toml` 约束。 有关独立沙箱、工具策略和提升的执行控件,请参阅 [Sandbox 与工具策略与提升的 ](/gateway/sandbox-vs-tool-policy-vs-elevated)。