Skip to main content
OpenClaw’s Gateway biedt een HTTP-eindpunt om één tool rechtstreeks aan te roepen. Het is altijd ingeschakeld en gebruikt Gateway-authenticatie plus toolbeleid. Net als bij het OpenAI-compatibele /v1/*-oppervlak wordt bearer-authenticatie met een gedeeld geheim beschouwd als vertrouwde operatortoegang voor de volledige Gateway.
  • POST /tools/invoke
  • Dezelfde poort als de Gateway (WS + HTTP-multiplexing): http://<gateway-host>:<port>/tools/invoke
  • Standaard maximale grootte van de aanvraagbody: 2 MB

Authenticatie

Gebruikt de authenticatieconfiguratie van de Gateway. Veelgebruikte HTTP-authenticatiepaden:
  • authenticatie met gedeeld geheim (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 identiteitsbewuste proxy en laat deze de vereiste identiteitsheaders invoegen
  • open authenticatie voor private ingress (gateway.auth.mode="none"): geen authenticatieheader vereist
Opmerkingen:
  • mode="token" gebruikt gateway.auth.token (of OPENCLAW_GATEWAY_TOKEN).
  • mode="password" gebruikt gateway.auth.password (of OPENCLAW_GATEWAY_PASSWORD).
  • mode="trusted-proxy" vereist dat de HTTP-aanvraag afkomstig is van een geconfigureerde vertrouwde proxybron; loopbackproxy’s op dezelfde host vereisen expliciet gateway.auth.trustedProxy.allowLoopback = true.
  • Interne aanroepers op dezelfde host die de proxy omzeilen, kunnen gateway.auth.password / OPENCLAW_GATEWAY_PASSWORD gebruiken als lokale directe fallback. Bewijs in een Forwarded-, X-Forwarded-*- of X-Real-IP-header houdt de aanvraag in plaats daarvan op het pad voor vertrouwde proxy’s.
  • Als gateway.auth.rateLimit is geconfigureerd en er te veel authenticatiefouten optreden, retourneert het eindpunt 429 met Retry-After.

Beveiligingsgrens (belangrijk)

Beschouw dit eindpunt als een oppervlak met volledige operatortoegang tot de Gateway-instantie.
  • HTTP-bearer-authenticatie is hier geen model met een beperkte scope per gebruiker.
  • Een geldig Gateway-token/wachtwoord voor dit eindpunt moet worden beschouwd als een referentie van een eigenaar/operator.
  • Voor authenticatiemodi met een gedeeld geheim (token en password) herstelt het eindpunt de normale volledige operatorstandaardwaarden, zelfs als de aanroeper een beperktere x-openclaw-scopes-header verzendt.
  • Authenticatie met een gedeeld geheim behandelt rechtstreekse toolaanroepen op dit eindpunt ook als beurten van de eigenaar-afzender.
  • Vertrouwde HTTP-modi met identiteit (authenticatie via een vertrouwde proxy, of gateway.auth.mode="none" op een private ingress) respecteren x-openclaw-scopes wanneer aanwezig en vallen anders terug op de normale set standaardscopes voor operators.
  • Houd dit eindpunt uitsluitend op loopback/tailnet/private ingress; stel het niet rechtstreeks bloot aan het openbare internet.
Authenticatiematrix:

Aanvraagbody

Velden:
  • tool / name (tekenreeks, vereist): naam van de aan te roepen tool. name heeft voorrang als beide worden verzonden.
  • action (tekenreeks, optioneel): wordt samengevoegd in args.action als het toolschema een action-eigenschap ondersteunt en args er nog geen heeft ingesteld.
  • args (object, optioneel): toolspecifieke argumenten.
  • sessionKey (tekenreeks, optioneel): sleutel van de doelsessie. Indien weggelaten of "main", gebruikt de Gateway de geconfigureerde sleutel van de hoofdsessie (respecteert session.mainKey en de standaardagent, of global binnen de globale sessiescope).
  • agentId (tekenreeks, optioneel): bepaalt de sessiesleutel voor die agent. Geeft een fout met 400 als deze conflicteert met een expliciete sessionKey die al aan een andere agent is gekoppeld.
  • idempotencyKey (tekenreeks, optioneel): wordt gebruikt om een stabiele toolaanroep-id voor de aanroep af te leiden.
  • dryRun (booleaans, optioneel): gereserveerd voor toekomstig gebruik; wordt momenteel genegeerd.

Beleids- en routeringsgedrag

De beschikbaarheid van tools wordt gefilterd via dezelfde beleidsketen die Gateway-agents gebruiken:
  • tools.profile / tools.byProvider.profile
  • tools.allow / tools.byProvider.allow
  • agents.<id>.tools.allow / agents.<id>.tools.byProvider.allow
  • groepsbeleid (als de sessiesleutel aan een groep of kanaal is gekoppeld)
  • subagentbeleid (bij aanroepen met de sessiesleutel van een subagent)
Als een tool niet door het beleid is toegestaan, retourneert het eindpunt 404. Belangrijke opmerkingen over grenzen:
  • Uitvoeringsgoedkeuringen zijn veiligheidsmaatregelen voor operators, geen afzonderlijke autorisatiegrens voor dit HTTP-eindpunt. Als een tool hier bereikbaar is via Gateway-authenticatie + toolbeleid, voegt /tools/invoke geen extra goedkeuringsprompt per aanroep toe.
  • Als exec hier bereikbaar is, beschouw deze dan als een muterend shell-oppervlak. Het weigeren van write, edit, apply_patch of HTTP-tools die naar het bestandssysteem schrijven, maakt shell-uitvoering niet alleen-lezen.
  • Deel Gateway-bearer-referenties niet met niet-vertrouwde aanroepers. Als scheiding tussen vertrouwensgrenzen nodig is, voer dan afzonderlijke Gateways uit (bij voorkeur onder afzonderlijke OS-gebruikers/op hosts).
Gateway HTTP past standaard ook een harde blokkeerlijst toe (zelfs als het sessiebeleid de tool toestaat): cron, gateway en nodes zijn ook uitsluitend voor eigenaren: zelfs buiten deze standaardblokkeerlijst kunnen aanroepers die geen eigenaar zijn ze niet via dit oppervlak aanroepen. Pas de algemene blokkeerlijst aan via gateway.tools:
gateway.tools.allow is een overschrijving van de blootstelling, geen scope-upgrade. In HTTP-modi met identiteit blijven cron, gateway en nodes niet beschikbaar voor aanroepers zonder eigenaar-/beheerdersidentiteit (operator.admin), zelfs als ze in gateway.tools.allow staan. Bearer-authenticatie met een gedeeld geheim volgt nog steeds de bovenstaande regel voor volledig vertrouwde operators. Om groepsbeleid te helpen bij het bepalen van de context, kun je optioneel het volgende instellen:
  • x-openclaw-message-channel: <channel> (voorbeeld: slack, telegram)
  • x-openclaw-account-id: <accountId> (wanneer er meerdere accounts bestaan)
  • x-openclaw-message-to: <target> (afleverdoel voor beleid van de berichtentool)
  • x-openclaw-thread-id: <threadId> (threadcontext voor beleid van de berichtentool)

Antwoorden

Voorbeeld

Gerelateerd