文件系统访问策略控制沙箱可以把哪些宿主路径挂载为工作区。这些规则只决定某个路径能否被 挂载。它们本身不会挂载任何内容,而且在路径被挂载之后,它们也不控制智能体可以读取或 修改其中的哪些文件。
当开发者受治理时,只有当你的文件系统挂载规则允许该挂载所需的访问权限、并且没有任何规则 拒绝它时,他们才能把路径挂载进沙箱。开发者无法用本地策略添加文件系统挂载规则,下一段 描述的内置本地规则也不再生效。更多细节请参阅 组织策略如何与本地规则和 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 访问 权限就足够了:
$ sbx run --clone claude ~/src/app不使用 --clone 而把仓库作为主工作区,还需要 write 访问权限。默认拒绝会阻止它,因为 没有规则允许 write。以只读方式挂载这些目录仍然被允许,例如用 :ro 挂载的额外工作区。
如果另一条策略允许对这些目录执行 write(例如上一个示例中的 ~/** 规则),还要添加 一条带 write 动作的拒绝规则。拒绝规则的优先级高于任何允许规则。更多细节请参阅 克隆模式。
更改何时生效
文件系统策略会在创建沙箱时以及每次启动沙箱时进行检查。一旦策略更改 同步到开发者的机器,它就会在下次启动 沙箱时生效。已经在运行的沙箱会保留其挂载,直到停止。