/v1/* 接口一样,共享密钥承载令牌身份验证被视为对整个 Gateway 网关的可信操作员访问。
POST /tools/invoke- 与 Gateway 网关使用相同端口(WS + HTTP 多路复用):
http://<gateway-host>:<port>/tools/invoke - 默认最大请求正文大小:2 MB
身份验证
使用 Gateway 网关身份验证配置。 常见的 HTTP 身份验证路径:- 共享密钥身份验证(
gateway.auth.mode="token"或"password"):Authorization: Bearer <token-or-password> - 携带可信身份的 HTTP 身份验证(
gateway.auth.mode="trusted-proxy"):通过已配置的身份感知代理进行路由,并让其注入所需的身份标头 - 私有入口开放身份验证(
gateway.auth.mode="none"):无需身份验证标头
mode="token"使用gateway.auth.token(或OPENCLAW_GATEWAY_TOKEN)。mode="password"使用gateway.auth.password(或OPENCLAW_GATEWAY_PASSWORD)。mode="trusted-proxy"要求 HTTP 请求来自已配置的可信代理源;同一主机上的回环代理需要显式配置gateway.auth.trustedProxy.allowLoopback = true。- 绕过代理的同一主机内部调用方可使用
gateway.auth.password/OPENCLAW_GATEWAY_PASSWORD作为本地直接回退方式。如果存在任何Forwarded、X-Forwarded-*或X-Real-IP标头凭据,请求将继续走可信代理路径。 - 如果配置了
gateway.auth.rateLimit且身份验证失败次数过多,该端点将返回429,并附带Retry-After。
安全边界(重要)
应将此端点视为 Gateway 网关实例的完整操作员访问权限接口。- 此处的 HTTP 承载令牌身份验证并非范围狭窄的按用户权限范围模型。
- 此端点的有效 Gateway 网关令牌/密码应被视为所有者/操作员凭据。
- 对于共享密钥身份验证模式(
token和password),即使调用方发送了权限范围更窄的x-openclaw-scopes标头,该端点也会恢复常规的完整操作员默认权限。 - 共享密钥身份验证还会将此端点上的直接工具调用视为所有者发送方轮次。
- 携带可信身份的 HTTP 模式(可信代理身份验证,或私有入口上的
gateway.auth.mode="none")会在存在x-openclaw-scopes时遵循该标头,否则回退到常规操作员默认权限范围集。 - 仅在回环网络、tailnet 或私有入口上提供此端点;不要将其直接暴露到公共互联网。
请求正文
tool/name(字符串,必填):要调用的工具名称。如果同时发送两者,则name优先。action(字符串,可选):如果工具架构支持action属性,且args尚未设置该属性,则将其合并到args.action中。args(对象,可选):工具专用参数。sessionKey(字符串,可选):目标会话键。如果省略或为"main",Gateway 网关将使用已配置的主会话键(遵循session.mainKey和默认智能体;在全局会话范围中则使用global)。agentId(字符串,可选):为该智能体解析会话键。如果它与已显式映射到其他智能体的sessionKey冲突,则返回400错误。idempotencyKey(字符串,可选):用于为此次调用派生稳定的工具调用 ID。dryRun(布尔值,可选):保留供将来使用;目前会被忽略。
策略和路由行为
工具可用性会通过 Gateway 网关智能体使用的同一策略链进行筛选:tools.profile/tools.byProvider.profiletools.allow/tools.byProvider.allowagents.<id>.tools.allow/agents.<id>.tools.byProvider.allow- 群组策略(如果会话键映射到群组或渠道)
- 子智能体策略(使用子智能体会话键调用时)
- Exec 审批是操作员防护措施,而不是此 HTTP 端点的独立授权边界。如果可通过 Gateway 网关身份验证 + 工具策略访问某个工具,
/tools/invoke不会额外添加按调用审批提示。 - 如果可通过此处访问
exec,应将其视为可修改内容的 Shell 接口。拒绝write、edit、apply_patch或 HTTP 文件系统写入工具,并不会使 Shell 执行变为只读。 - 不要与不可信调用方共享 Gateway 网关承载令牌凭据。如果需要跨信任边界进行隔离,请运行独立的 Gateway 网关(最好使用独立的操作系统用户/主机)。
cron、gateway 和 nodes 也仅限所有者使用:即使不在此默认拒绝列表中,非所有者调用方也无法在此接口上调用它们。
通过 gateway.tools 自定义通用拒绝列表:
gateway.tools.allow 是暴露范围覆盖项,而不是权限范围升级项。在携带身份的 HTTP 模式中,即使 cron、gateway 和 nodes 已列入 gateway.tools.allow,没有所有者/管理员身份(operator.admin)的调用方仍无法使用它们。共享密钥承载令牌身份验证仍遵循上述完整可信操作员规则。
为了帮助群组策略解析上下文,可以选择设置:
x-openclaw-message-channel: <channel>(示例:slack、telegram)x-openclaw-account-id: <accountId>(存在多个账户时)x-openclaw-message-to: <target>(消息工具策略的投递目标)x-openclaw-thread-id: <threadId>(消息工具策略的线程上下文)