openclaw 通过 yaml 的 tool_whitelist 字段、agent 初始化工具列表、注释 __init__.py 导入语句或 openclaw_disable_tools 环境变量四种方式限制工具调用,未授权工具将报错中断而非静默跳过。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

OpenClaw 是一款面向自动化任务编排的开源工具链框架,其核心设计允许用户通过 YAML 配置声明式定义工具调用行为。若你希望限制某个工作流中可调用的工具集合(例如禁止执行 shell 命令、仅允许调用内置 HTTP 请求或文件读取工具),必须在 agent 或 workflow 级别显式声明白名单,否则默认允许全部注册工具——这会带来不可控的执行风险。
在 workflow.yaml 中声明 tool_whitelist
打开你正在使用的 workflow.yaml 文件,在顶层或具体 task 节点下添加 tool_whitelist 字段:
直接写入允许的工具名列表,如只允许 curl 和 read_file:
tool_whitelist: [curl, read_file]
该字段作用于当前 task;若放在 workflow 根节点,则对所有 task 生效。注意:未出现在列表中的工具在运行时会直接报错并中断执行,不会静默跳过。
通过 agent 配置全局限制
如果你使用的是自定义 agent 实例(如继承 BaseAgent 并重载 get_available_tools 方法),可在初始化时传入受限工具集:
agent = CustomAgent(tools=[HttpTool(), FileReadTool()])
此方式绕过 YAML 解析层,从运行时源头掐断非法工具加载。但需确保所有 workflow 都复用该 agent 实例,否则单个 workflow 仍可能通过配置覆盖。
禁用特定工具类的注册
方法一:修改 tools/__init__.py 中的自动注册逻辑
本次更新实现飞书插件 npm 独立分发,新增 Ollama 本地模型配置及 openclaw 命令别名。引入 SQLite 持久化队列,支持断点续传。全面集成飞书、钉钉、企业微信及 QQ 官方渠道,优化阿里云百炼模型选择。修复多 Agent 路由、定时任务校验及配对授权等关键问题,提升系统稳定性与兼容性。
找到项目中 tools 目录下的 __init__.py,注释掉你不希望被加载的工具类导入语句,例如:
# from .shell import ShellTool ← 这一行必须删掉或注释
方法二:启动时设置环境变量屏蔽
在启动 OpenClaw 服务前,设置 OPENCLAW_DISABLE_TOOLS=shell,exec,系统将跳过这些模块的自动发现与注册。
【OPENCLAW_DISABLE_TOOLS 的值必须全小写、逗号分隔、且与工具模块名完全一致】
验证限制是否生效
第一步:重启 OpenClaw runtime 或 reload agent 实例
第二步:提交一个包含 disallowed_tool 的测试 workflow
第三步:观察日志输出 —— 若看到类似 “Tool ‘exec’ not found in whitelist” 或 “Skipped registration of ShellTool” 的提示,说明限制已起作用
第四步:检查 agent.get_available_tools() 返回列表,确认只含预期工具对象









