/v1/*-oppervlak wordt shared-secret bearer-authenticatie behandeld als vertrouwde operatortoegang voor de hele Gateway.
POST /tools/invoke- Dezelfde poort als de Gateway (WS + HTTP multiplex):
http://<gateway-host>:<port>/tools/invoke
Authenticatie
Gebruikt de Gateway-authenticatieconfiguratie. Veelvoorkomende HTTP-authenticatiepaden:- shared-secret-authenticatie (
gateway.auth.mode="token"of"password"):Authorization: Bearer <token-or-password> - vertrouwde HTTP-authenticatie met identiteit (
gateway.auth.mode="trusted-proxy"): routeer via de geconfigureerde identity-aware proxy en laat die de vereiste identiteitsheaders injecteren - open authenticatie via private ingress (
gateway.auth.mode="none"): geen authenticatieheader vereist
- Wanneer
gateway.auth.mode="token", gebruikgateway.auth.token(ofOPENCLAW_GATEWAY_TOKEN). - Wanneer
gateway.auth.mode="password", gebruikgateway.auth.password(ofOPENCLAW_GATEWAY_PASSWORD). - Wanneer
gateway.auth.mode="trusted-proxy", moet het HTTP-verzoek afkomstig zijn van een geconfigureerde vertrouwde proxybron; same-host loopback-proxy’s vereisen explicietgateway.auth.trustedProxy.allowLoopback = true. - Interne same-host aanroepers die de proxy omzeilen kunnen
gateway.auth.password/OPENCLAW_GATEWAY_PASSWORDgebruiken als lokale directe fallback. Elk bewijs in eenForwarded-,X-Forwarded-*- ofX-Real-IP-header houdt het verzoek in plaats daarvan op het trusted-proxy-pad. - Als
gateway.auth.rateLimitis geconfigureerd en er te veel authenticatiefouten optreden, retourneert het eindpunt429metRetry-After.
Beveiligingsgrens (belangrijk)
Behandel dit eindpunt als een oppervlak met volledige operatortoegang voor de Gateway-instantie.- HTTP bearer-authenticatie hier is geen nauw scope-model per gebruiker.
- Een geldig Gateway-token/wachtwoord voor dit eindpunt moet worden behandeld als een owner/operator-referentie.
- Voor shared-secret-authenticatiemodi (
tokenenpassword) herstelt het eindpunt de normale volledige operatorstandaarden, zelfs als de aanroeper een smallerex-openclaw-scopes-header verzendt. - Shared-secret-authenticatie behandelt directe toolaanroepen op dit eindpunt ook als owner-sender-beurten.
- Vertrouwde HTTP-modi met identiteit (bijvoorbeeld trusted-proxy-authenticatie of
gateway.auth.mode="none"op een private ingress) respecterenx-openclaw-scopeswanneer aanwezig en vallen anders terug op de normale standaardset operatorscopes. - Houd dit eindpunt alleen op loopback/tailnet/private ingress; stel het niet direct bloot aan het openbare internet.
gateway.auth.mode="token"of"password"+Authorization: Bearer ...- bewijst bezit van het gedeelde Gateway-operatorgeheim
- negeert smallere
x-openclaw-scopes - herstelt de volledige standaardset operatorscopes:
operator.admin,operator.approvals,operator.pairing,operator.read,operator.talk.secrets,operator.write - behandelt directe toolaanroepen op dit eindpunt als owner-sender-beurten
- vertrouwde HTTP-modi met identiteit (bijvoorbeeld trusted-proxy-authenticatie, of
gateway.auth.mode="none"op private ingress)- authenticeren een externe vertrouwde identiteit of deploymentgrens
- respecteren
x-openclaw-scopeswanneer de header aanwezig is - vallen terug op de normale standaardset operatorscopes wanneer de header afwezig is
- verliezen owner-semantiek alleen wanneer de aanroeper scopes expliciet vernauwt en
operator.adminweglaat
Request-body
tool(string, vereist): toolnaam om aan te roepen.action(string, optioneel): wordt naar args gemapt als het toolschemaactionondersteunt en de args-payload dit heeft weggelaten.args(object, optioneel): toolspecifieke argumenten.sessionKey(string, optioneel): doelsessiesleutel. Indien weggelaten of"main", gebruikt de Gateway de geconfigureerde hoofdsessiesleutel (respecteertsession.mainKeyen standaardagent, ofglobalin globale scope).dryRun(boolean, optioneel): gereserveerd voor toekomstig gebruik; momenteel genegeerd.
Beleid + routinggedrag
Toolbeschikbaarheid wordt gefilterd via dezelfde beleidsketen die door Gateway-agenten wordt gebruikt:tools.profile/tools.byProvider.profiletools.allow/tools.byProvider.allowagents.<id>.tools.allow/agents.<id>.tools.byProvider.allow- groepsbeleid (als de sessiesleutel naar een groep of kanaal verwijst)
- subagentbeleid (bij aanroepen met een subagent-sessiesleutel)
- Exec-goedkeuringen zijn operatorvangrails, geen aparte autorisatiegrens voor dit HTTP-eindpunt. Als een tool hier bereikbaar is via Gateway-authenticatie + toolbeleid, voegt
/tools/invokegeen extra goedkeuringsprompt per aanroep toe. - Als
exechier bereikbaar is, behandel het dan als een muterend shelloppervlak. Het weigeren vanwrite,edit,apply_patchof HTTP-tools voor filesystem-write maakt shelluitvoering niet alleen-lezen. - Deel Gateway-bearer-referenties niet met niet-vertrouwde aanroepers. Als je scheiding tussen vertrouwensgrenzen nodig hebt, voer dan aparte gateways uit (en idealiter aparte OS-gebruikers/hosts).
exec- directe opdrachtuitvoering (RCE-oppervlak)spawn- willekeurige aanmaak van childprocessen (RCE-oppervlak)shell- uitvoering van shellopdrachten (RCE-oppervlak)fs_write- willekeurige bestandsmutatie op de hostfs_delete- willekeurige bestandsverwijdering op de hostfs_move- willekeurige bestandsverplaatsing/-hernoeming op de hostapply_patch- patchtoepassing kan willekeurige bestanden herschrijvensessions_spawn- sessieorkestratie; agents op afstand starten is RCEsessions_send- berichtinjectie tussen sessiescron- persistent automatiseringsbesturingsvlakgateway- Gateway-besturingsvlak; voorkomt herconfiguratie via HTTPnodes- node-opdrachtdoorsturing kan system.run bereiken op gekoppelde hostswhatsapp_login- interactieve setup waarvoor een terminal-QR-scan nodig is; blijft hangen via HTTP
gateway.tools:
gateway.tools.allow is een exposure-override, geen scope-upgrade. In
HTTP-modi met identiteit blijven cron, gateway en nodes niet beschikbaar
voor aanroepers die geen owner/admin-identiteit (operator.admin) hebben, zelfs wanneer
ze in gateway.tools.allow staan. Shared-secret bearer-authenticatie volgt nog steeds
de volledige trusted-operator-regel hierboven.
Om groepsbeleid context te helpen oplossen, kun je optioneel instellen:
x-openclaw-message-channel: <channel>(voorbeeld:slack,telegram)x-openclaw-account-id: <accountId>(wanneer er meerdere accounts bestaan)
Responses
200→{ ok: true, result }400→{ ok: false, error: { type, message } }(ongeldig verzoek of fout in toolinvoer)401→ unauthorized429→ authenticatie rate-limited (Retry-Afteringesteld)404→ tool niet beschikbaar (niet gevonden of niet op allowlist)405→ method not allowed500→{ ok: false, error: { type, message } }(onverwachte fout bij tooluitvoering; opgeschoond bericht)