有了多个Agent后,可能会涉及到了一些权限控制了。
Tools工具使用
比如让 Coder 专注于写代码,不给他用不到的一些能力,直接在 Agent 配置里加 tools 字段,限制可用哪些工具,哪些工具不能用。
{
agents: {
list: [
{
"id": "coder",
"name": "coder",
"workspace": "/root/.openclaw/workspace-coder",
"agentDir": "/root/.openclaw/agents/coder/agent",
"model": "zngw/qwen3-coder-next",
"tools": {
"allow": ["read", "write", "edit", "exec", "process"],
"deny": ["gateway", "cron", "message"]
}
}
]
}
}
- 允许使用:文件的读、写、改功能,可执行命令和进程管理。
- 禁用功能:自身网关相关,定时任务,主动给用户发消息。
沙箱模式
工具限制是"软性"的——Agent 仍然在主机上运行,理论上可以访问所有文件。如果你需要更严格的隔离,比如 Agent 要对公司群中,就需要沙箱模式更安全,在Agent中添加sandbox参数。沙箱模式是基于Docker环境的,所以,要开启沙箱模式必须先安装Docker。
{
agents: {
list: [
{
"id": "coder",
"name": "coder",
"workspace": "/root/.openclaw/workspace-coder",
"agentDir": "/root/.openclaw/agents/coder/agent",
"model": "zngw/qwen3-coder-next",
"tools": {
"allow": ["read", "write", "edit", "exec", "process"],
"deny": ["gateway", "cron", "message"]
},
"sandbox": {
"mode": "all",
"scope": "agent",
"workspaceAccess": "ro",
"docker": {
"binds": [
"/home/git:/git:rw"
]
}
}
}
]
}
}
- mode:有三个选项:
- off:不启用沙箱
- non-main:只有非 main session 启用
- all:所有 session 都启用。
- scope 控制容器粒度:
- session:每个会话一个容器
- agent:每个 Agent 一个容器
- shared:所有人共用一个容器
- workspaceAccess:控制工作目录的访问权限
- none:完全隔离
- ro:只读
- rw:读写。
- docker.binds:类似docker的目录映射
上面配置意思是:对于 coder agent来说,所有的session都启用沙箱,整个coder agent使用一个容器,不能访问主机上的其他文件,对自己的工作目录/root/.openclaw/workspace-coder只有读的权限(可以读相应md配置),把主机的 home/git目录以可读写模式挂载到容器里的 /git目录中。
超级权限用户
如果你想在沙箱中能跳出来对主机操作,可以给帐号加白名单的权限。这个要在 tools.elevated`,这个是最外层的tools配置,不是agent中的tools。如:
"tools": {
"elevated": {
"enabled": true,
"allowFrom": {
"feishu": [
"ou_有超级权限的飞书ID"
],
"telegram": [
"tg:有超级权限的tgID"
]
}
}
}
白名单里的用户可以发送 /elevated on 来穿透沙箱,在主机上执行命令。发送 /elevated full 还能自动批准所有 exec。用完后发 /elevated off 恢复沙箱模式。
- tg:输入
/elevated选择机器人,再选择on、off、ask、full - 飞书:输入
@机器人 /elevated on@
评论区