Technical Guide
17. 安全边界:DM、Sandbox、工具策略和敏感信息
OpenClaw 连接真实消息平台和本地机器,必须理解默认安全策略和风险边界。
这篇解决什么问题
OpenClaw 能连接真实消息平台,也能操作本地机器。
所以安全不是可选项。
README 里直接提醒:
OpenClaw connects to real messaging surfaces. Treat inbound DMs as untrusted input.
第一层:DM pairing 和 allowlist
默认行为里,多个平台的 DM policy 是 pairing。
未知发送者不会直接进入 Agent,而是拿到 pairing code。
批准方式:
openclaw pairing approve <channel> <code>
如果你把 DM policy 改成 open,还把 allowlist 放开,就等于让远程输入直接触达你的本地 Agent。这个操作要非常谨慎。
第二层:sandbox
README 里写到:
Default: tools run on the host for the main session.
Group/channel safety: set agents.defaults.sandbox.mode: "non-main"
也就是说,main session 默认更像“你自己在本机使用”;而非 main session、群聊、外部 channel 更适合放进 sandbox。
第三层:工具策略
OpenClaw 工具面会应用 sandbox、profile、provider、sender、group、sub-agent policy。
这意味着工具权限不是固定的。
同一个 exec 或 write,在不同 sender、group、sandbox 下可能结果完全不同。
第四层:配置和敏感信息
相关源码里能看到:
src/config/sensitive-paths.ts
src/config/redact-snapshot.ts
src/config/types.secrets.test.ts
OpenClaw 需要避免把 token、secret、凭证路径、provider 错误体直接暴露到聊天或日志里。
第五层:远程暴露
Gateway 如果暴露到公网,要先看官方 Security 和 Gateway exposure runbook。
不要为了方便远程访问就直接把端口暴露出去。
更稳的方式通常是 Tailscale、反向代理认证、allowlist 和最小权限组合。
新增能力时的安全检查
新增 channel、tool、plugin、MCP 时都要问:
这个入口是否来自远程不可信用户?
会不会读写本地文件?
会不会执行命令?
是否受 allowlist 控制?
是否有 sandbox 版本?
错误信息会不会带 secret?
是否默认启用?
下一篇看什么
下一篇看调试与排障。