Skip to content

文件系统访问策略控制沙箱可以把哪些宿主路径挂载为工作区。这些规则只决定某个路径能否被 挂载。它们本身不会挂载任何内容,而且在路径被挂载之后,它们也不控制智能体可以读取或 修改其中的哪些文件。

当开发者受治理时,只有当你的文件系统挂载规则允许该挂载所需的访问权限、并且没有任何规则 拒绝它时,他们才能把路径挂载进沙箱。开发者无法用本地策略添加文件系统挂载规则,下一段 描述的内置本地规则也不再生效。更多细节请参阅 组织策略如何与本地规则和 Kit 规则相互关联。

当开发者未受治理时(例如因为他们没有持有 AI Governance 许可证),文件系统策略不会 限制他们可以挂载哪些宿主路径。本地策略包含两条内置规则,允许对每个路径的读写访问, 开发者在 sbx policy ls --wide 中会看到它们以 default-fs-* 规则的形式出现。

本页说明文件系统挂载规则可以匹配什么、常见任务的示例策略,以及你的更改何时到达开发者。 要创建文件系统访问策略,请参阅创建和管理组织策略。

文件系统挂载规则可以匹配什么 ​

每条文件系统挂载规则对它列出的宿主路径允许或拒绝 read、write,或两者兼有。路径可以 使用通配符和 ~,并按开发者所用操作系统的格式书写。有关各操作系统上路径的写法以及 匹配方式,请参阅文件系统挂载规则语法。

示例策略 ​

下面的策略展示了允许宿主路径的常见做法。请根据开发者使用的目录调整路径。

允许用户主目录和共享的 projects 目录 ​

要让开发者在任意操作系统上挂载其用户主目录或共享 projects 目录下的任何内容,请创建 一条带有 read 和 write 动作的允许规则,并使用以下路径:

路径覆盖范围
~/**每个平台上的用户主目录
/projects/**macOS 和 Linux
*:\projects\**Windows 上的任意驱动器
\\wsl.localhost\*\projects\**WSL 的任意发行版

由于这条规则允许 ~/**,开发者可以挂载整个用户主目录,智能体可以访问其中的每个文件, 包括 .ssh 目录和 .env 文件。有关智能体在已挂载工作区中可以访问什么,请参阅 隔离层。

针对 ~/.ssh/** 的拒绝规则可以阻止开发者直接挂载 ~/.ssh,但无法阻止他们挂载包含该 目录的用户主目录。要把这类文件挡在沙箱之外,请允许更窄的路径(例如 ~/src/**),而不是 ~/**。

允许克隆模式,同时阻止可写挂载 ​

要让智能体能够在代码仓库上工作、但不把修改应用到宿主工作树,请为开发者存放仓库的目录 (例如 ~/src/**)创建一条只有 read 动作的允许规则。

在克隆模式下,沙箱以只读方式挂载仓库,智能体在沙箱内的私有克隆上工作,因此 read 访问 权限就足够了:

console
$ sbx run --clone claude ~/src/app

不使用 --clone 而把仓库作为主工作区,还需要 write 访问权限。默认拒绝会阻止它,因为 没有规则允许 write。以只读方式挂载这些目录仍然被允许,例如用 :ro 挂载的额外工作区。

如果另一条策略允许对这些目录执行 write(例如上一个示例中的 ~/** 规则),还要添加 一条带 write 动作的拒绝规则。拒绝规则的优先级高于任何允许规则。更多细节请参阅 克隆模式。

更改何时生效 ​

文件系统策略会在创建沙箱时以及每次启动沙箱时进行检查。一旦策略更改 同步到开发者的机器,它就会在下次启动 沙箱时生效。已经在运行的沙箱会保留其挂载,直到停止。