/v1/* 介面相同,共用密鑰的 Bearer 驗證會被視為對整個閘道具有受信任的操作者存取權。
POST /tools/invoke- 與閘道使用相同連接埠(WS + HTTP 多工):
http://<gateway-host>:<port>/tools/invoke - 預設要求主體大小上限:2 MB
驗證
使用閘道驗證設定。 常見的 HTTP 驗證路徑:- 共用密鑰驗證(
gateway.auth.mode="token"或"password"):Authorization: Bearer <token-or-password> - 攜帶受信任身分的 HTTP 驗證(
gateway.auth.mode="trusted-proxy"):透過已設定的身分識別感知 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 請求來自已設定的受信任 Proxy 來源;同一主機上的迴路 Proxy 需要明確設定gateway.auth.trustedProxy.allowLoopback = true。- 繞過 Proxy 的同一主機內部呼叫端,可以使用
gateway.auth.password/OPENCLAW_GATEWAY_PASSWORD作為本機直接備援。任何Forwarded、X-Forwarded-*或X-Real-IP標頭證據,則會讓請求繼續走受信任 Proxy 路徑。 - 如果已設定
gateway.auth.rateLimit,且發生過多次驗證失敗,端點會傳回429,並附帶Retry-After。
安全性邊界(重要)
請將此端點視為閘道執行個體的完整操作者存取權介面。- 此處的 HTTP Bearer 驗證不是狹義的每位使用者範圍模型。
- 此端點的有效閘道權杖/密碼應被視為擁有者/操作者認證資訊。
- 對於共用密鑰驗證模式(
token和password),即使呼叫端傳送範圍較窄的x-openclaw-scopes標頭,此端點仍會還原一般的完整操作者預設值。 - 共用密鑰驗證也會將此端點上的直接工具叫用視為擁有者傳送者回合。
- 攜帶受信任身分的 HTTP 模式(受信任 Proxy 驗證,或私有入口上的
gateway.auth.mode="none")會採用存在的x-openclaw-scopes,否則回退到一般操作者預設範圍集。 - 此端點應僅限於迴路/Tailnet/私有入口;請勿直接公開至公用網際網路。
要求主體
tool/name(字串,必填):要叫用的工具名稱。如果兩者皆有傳送,則以name為優先。action(字串,選填):如果工具結構描述支援action屬性,且args尚未設定該屬性,則會合併至args.action。args(物件,選填):工具專屬引數。sessionKey(字串,選填):目標工作階段金鑰。如果省略或為"main",閘道會使用已設定的主要工作階段金鑰(採用session.mainKey和預設代理程式,或在全域工作階段範圍中使用global)。agentId(字串,選填):解析該代理程式的工作階段金鑰。如果它與已明確指定且對應至其他代理程式的sessionKey衝突,則傳回400錯誤。idempotencyKey(字串,選填):用於為叫用衍生穩定的工具呼叫 ID。dryRun(布林值,選填):保留供未來使用;目前會忽略。
政策與路由行為
工具可用性會經過與閘道代理程式相同的政策鏈篩選:tools.profile/tools.byProvider.profiletools.allow/tools.byProvider.allowagents.<id>.tools.allow/agents.<id>.tools.byProvider.allow- 群組政策(如果工作階段金鑰對應至群組或頻道)
- 子代理程式政策(使用子代理程式工作階段金鑰叫用時)
- 執行核准是操作者防護措施,並非此 HTTP 端點的獨立授權邊界。如果可透過閘道驗證與工具政策存取此處的工具,
/tools/invoke不會另外加入每次呼叫的核准提示。 - 如果可在此處存取
exec,請將其視為會修改內容的 Shell 介面。拒絕write、edit、apply_patch或 HTTP 檔案系統寫入工具,不會使 Shell 執行變成唯讀。 - 請勿與不受信任的呼叫端共用閘道 Bearer 認證資訊。如果需要跨信任邊界隔離,請執行不同的閘道(最好使用不同的作業系統使用者/主機)。
cron、gateway 和 nodes 也僅限擁有者:即使不在此預設拒絕清單中,非擁有者呼叫端仍無法在此介面叫用它們。
透過 gateway.tools 自訂一般拒絕清單:
gateway.tools.allow 是公開範圍覆寫,而非範圍升級。在攜帶身分的 HTTP 模式中,即使 cron、gateway 和 nodes 列於 gateway.tools.allow,不具擁有者/管理員身分(operator.admin)的呼叫端仍無法使用它們。共用密鑰 Bearer 驗證仍遵循上述完整受信任操作者規則。
為協助群組政策解析內容,你可以選擇性設定:
x-openclaw-message-channel: <channel>(例如:slack、telegram)x-openclaw-account-id: <accountId>(存在多個帳戶時)x-openclaw-message-to: <target>(訊息工具政策的傳遞目標)x-openclaw-thread-id: <threadId>(訊息工具政策的討論串內容)