安全与执行边界

Holon 运行的 Agent 可以执行 shell 命令、委派工作、等待外部事件。理解 Holon 提供了哪些边界——以及没提供哪些——有助于安全地运行 Agent。

宿主本地运行时

Holon 作为用户级进程跑在你的机器上。它不是沙箱:

这意味着: 有意识地限定工作区范围;运行不可信 Agent 工作负载时使用专用 用户账号或容器;对待 Agent 的命令执行,要像对待以你的用户身份运行的 shell 脚本一样谨慎。

执行环境摘要

每个 Agent 都会在上下文中收到一份执行环境摘要。这份摘要描述当前策略快照以及 哪些约束是被强制执行的:

边界级别含义
cwd_rootingruntime_shaped显式请求时,运行时允许 workdir 位于工作区根之外;沙箱是执行后端自己的责任
projection_rootinghard_enforced文件系统视图被限制在投影根内
path_confinementnot_enforced运行时不阻止通过路径访问工作区之外
write_confinementnot_enforced写操作不限制在工作区内
network_confinementnot_enforced默认不限制网络访问
secret_isolationnot_enforced运行时不会把密钥与 Agent 命令隔离
child_process_containmentnot_enforced派生的子进程不受运行时约束

关键结论: 标为 hard_enforced 的边界是运行时的保证。标为 not_enforced 的边界依赖操作者的宿主配置(文件系统权限、防火墙规则、 容器隔离)。

工作区绑定

Holon 提供工作区绑定来约束 Agent 的活动范围:

这些绑定是组织性的护栏,不是安全边界:能执行任意 shell 命令的 Agent 可以 cd /etc,或读取工作区之外的文件——只要你的操作系统权限允许。想要真正的 隔离,就把 Holon 和容器、虚拟机或专用用户账号搭配使用。

远程访问(holon serve)

holon serve 通过 HTTP 暴露 Holon 控制平面。这是很强的能力面,必须保护:

# 安全:仅本地访问,走 Unix socket(默认守护进程模式)——除文件系统
# 权限外不需要额外保护
holon daemon start

# 谨慎:局域网可达——始终要求 token
holon serve --access lan --token "your-secret-token"
holon serve --access lan --token-file ~/.holon/remote.token

# 谨慎:隧道访问——隧道提供方可以把流量路由到你的 Holon 实例
holon serve --access tunnel --token "your-secret-token"

远程访问规则:

能力密钥 URL

Holon 为外部触发和唤醒事件生成回调 URL。这些 URL 包含能力密钥:

http://host:7878/callbacks/wake/cb_<secret>

知道这个 URL 的任何人都能唤醒 Agent。把这些 URL 当作密钥:

信任与来源

Holon 按来源(origin)和信任级别对每个输入分类:

信任级别示例来源含义
trusted-operatorCLI、TUI、已认证 HTTP这个输入由你发起
trusted-system运行时内部事件、计划定时器由运行时生成
trusted-integration来自已知服务的已认证 webhook由可信外部系统发送
untrusted-external公开 webhook、用户提交内容来源未知或未验证

信任元数据是策略信号,不是安全保证。 Agent 能看到信任级别并调整行为(例如 对不可信输入拒绝破坏性命令),但信任标签不能替代沙箱。标为 untrusted-external 的外部内容仍然以你的用户权限运行,除非你加上操作系统级 隔离。

实用建议

  1. 使用专用工作区 — 给 Agent 一个具体的项目目录,而不是你的家目录。
  2. 保护远程访问 — 始终使用 token,优先本地 Unix socket。
  3. 看管能力 URL — 把唤醒/回调 URL 当作凭据。
  4. 不要只依赖信任标签 — 它们影响 Agent 行为,不是操作系统安全。
  5. 高风险工作加操作系统级隔离 — 容器、虚拟机或专用用户账号。

另见