Gateway
Tools roepen API aan
De Gateway van OpenClaw biedt een HTTP-eindpunt waarmee één tool rechtstreeks kan worden aangeroepen. Het is altijd ingeschakeld en gebruikt Gateway-authenticatie in combinatie met toolbeleid. Net als bij het OpenAI-compatibele /v1/*-oppervlak wordt bearer-authenticatie met een gedeeld geheim beschouwd als vertrouwde operatortoegang tot 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 een 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 via privé-ingang (
gateway.auth.mode="none"): geen authenticatieheader vereist
Opmerkingen:
mode="token"gebruiktgateway.auth.token(ofOPENCLAW_GATEWAY_TOKEN).mode="password"gebruiktgateway.auth.password(ofOPENCLAW_GATEWAY_PASSWORD).mode="trusted-proxy"vereist dat de HTTP-aanvraag afkomstig is van een geconfigureerde vertrouwde proxybron; local loopback-proxy's op dezelfde host vereisen explicietgateway.auth.trustedProxy.allowLoopback = true.- Interne aanroepers op dezelfde host die de proxy omzeilen, kunnen
gateway.auth.password/OPENCLAW_GATEWAY_PASSWORDgebruiken als lokale directe terugvaloptie. Elk bewijs in eenForwarded-,X-Forwarded-*- ofX-Real-IP-header zorgt er in plaats daarvan voor dat de aanvraag het pad van de vertrouwde proxy blijft volgen. - Als
gateway.auth.rateLimitis geconfigureerd en er te veel authenticatiefouten optreden, retourneert het eindpunt429metRetry-After.
Beveiligingsgrens (belangrijk)
Beschouw dit eindpunt als een oppervlak met volledige operatortoegang tot de Gateway-instantie.
- HTTP-bearer-authenticatie is hier geen beperkt scopemodel per gebruiker.
- Een geldig Gateway-token of -wachtwoord voor dit eindpunt moet worden behandeld als een referentie van een eigenaar/operator.
- Voor authenticatiemodi met een gedeeld geheim (
tokenenpassword) herstelt het eindpunt de normale volledige standaardinstellingen voor operators, zelfs als de aanroeper een beperkterex-openclaw-scopes-header verstuurt. - 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"via een privé-ingang) respecterenx-openclaw-scopesindien aanwezig en vallen anders terug op de normale standaardset operatorscopes. - Houd dit eindpunt uitsluitend op local loopback/tailnet/privé-ingang; stel het niet rechtstreeks bloot aan het openbare internet.
Authenticatiematrix:
| Authenticatiemodus | Gedrag |
|---|---|
token of password + Authorization: Bearer ... |
Bewijst het bezit van het gedeelde operatorgeheim van de Gateway. Negeert beperktere x-openclaw-scopes. Herstelt de volledige standaardset operatorscopes: operator.admin, operator.approvals, operator.pairing, operator.read, operator.talk.secrets, operator.write. Behandelt rechtstreekse toolaanroepen als beurten van de eigenaar-afzender. |
Vertrouwde HTTP met identiteit (vertrouwde proxy-authenticatie, of mode="none" op privé-ingang) |
Authenticeert een externe vertrouwde identiteit of implementatiegrens. Respecteert x-openclaw-scopes indien aanwezig. Valt terug op de normale standaardset operatorscopes wanneer de header ontbreekt. Verliest alleen eigenaarsemantiek wanneer de aanroeper scopes expliciet beperkt en operator.admin weglaat. |
Aanvraagbody
{ "tool": "sessions_list", "action": "json", "args": {}, "sessionKey": "main", "dryRun": false}Velden:
tool/name(tekenreeks, vereist): naam van de aan te roepen tool.nameheeft voorrang als beide worden verstuurd.action(tekenreeks, optioneel): wordt samengevoegd inargs.actionals het toolschema een eigenschapactionondersteunt en deze nog niet inargswas ingesteld.args(object, optioneel): toolspecifieke argumenten.sessionKey(tekenreeks, optioneel): sleutel van de doelsessie. Als deze wordt weggelaten of"main"is, gebruikt de Gateway de geconfigureerde hoofdsessiesleutel (respecteertsession.mainKeyen de standaardagent, ofglobalin het globale sessiebereik).agentId(tekenreeks, optioneel): bepaalt de sessiesleutel voor die agent. Geeft een fout met400als deze conflicteert met een explicietesessionKeydie al naar een andere agent verwijst.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.
Gedrag van beleid en routering
De beschikbaarheid van tools 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 aanroep met de sessiesleutel van een subagent)
Als een tool niet door het beleid is toegestaan, retourneert het eindpunt 404.
Belangrijke opmerkingen over de grens:
- Goedkeuringen voor uitvoerbewerkingen zijn operatorbeveiligingen, geen afzonderlijke autorisatiegrens voor dit HTTP-eindpunt. Als een tool hier bereikbaar is via Gateway-authenticatie en toolbeleid, voegt
/tools/invokegeen extra goedkeuringsprompt per aanroep toe. - Als
exechier bereikbaar is, beschouw dit dan als een muterend shell-oppervlak. Het weigeren vanwrite,edit,apply_patchof HTTP-tools die naar het bestandssysteem schrijven, maakt shell-uitvoering niet alleen-lezen. - Deel bearer-referenties van de Gateway niet met niet-vertrouwde aanroepers. Als u scheiding tussen vertrouwensgrenzen nodig hebt, voert u afzonderlijke Gateways uit (bij voorkeur onder afzonderlijke gebruikers van het besturingssysteem of op afzonderlijke hosts).
Gateway HTTP past standaard ook een harde weigeringslijst toe (zelfs als het sessiebeleid de tool toestaat):
| Tool | Reden |
|---|---|
exec |
Rechtstreekse opdrachtuitvoering (RCE-oppervlak) |
spawn |
Willekeurig onderliggend proces maken (RCE-oppervlak) |
shell |
Shell-opdracht uitvoeren (RCE-oppervlak) |
fs_write |
Willekeurige bestandswijziging op de host |
fs_delete |
Willekeurige bestandsverwijdering op de host |
fs_move |
Willekeurig bestand verplaatsen/hernoemen op de host |
apply_patch |
Het toepassen van patches kan willekeurige bestanden herschrijven |
sessions_spawn |
Sessieorkestratie; agenten op afstand starten is RCE |
sessions_send |
Berichten tussen sessies injecteren |
cron |
Besturingsvlak voor permanente automatisering |
gateway |
Besturingsvlak van de Gateway; voorkomt herconfiguratie via HTTP |
nodes |
Node-opdrachtrelay kan system.run bereiken op gekoppelde hosts |
cron, gateway en nodes zijn ook uitsluitend voor eigenaren: zelfs buiten deze standaardweigeringslijst kunnen niet-eigenaren ze niet via dit oppervlak aanroepen.
Pas de algemene weigeringslijst aan via gateway.tools:
{ gateway: { tools: { // Additional tools to block over HTTP /tools/invoke deny: ["browser"], // Remove tools from the default deny list for owner/admin callers allow: ["gateway"], }, },}gateway.tools.allow is een overschrijving van de blootstelling, geen uitbreiding van scopes. In HTTP-modi met identiteit blijven cron, gateway en nodes niet beschikbaar voor aanroepers zonder eigenaar-/beheerdersidentiteit (operator.admin), zelfs wanneer ze in gateway.tools.allow staan. Bearer-authenticatie met een gedeeld geheim blijft de regel voor volledig vertrouwde operators hierboven volgen.
Om groepsbeleid te helpen de context te bepalen, kunt u optioneel het volgende instellen:
x-openclaw-message-channel: <channel>(voorbeeld:slack,telegram)x-openclaw-account-id: <accountId>(wanneer er meerdere accounts zijn)x-openclaw-message-to: <target>(afleverdoel voor beleid van berichttools)x-openclaw-thread-id: <threadId>(threadcontext voor beleid van berichttools)
Antwoorden
| Status | Betekenis |
|---|---|
200 |
{ ok: true, result } |
400 |
{ ok: false, error: { type, message } } (ongeldige aanvraag of fout in toolinvoer) |
401 |
Niet geautoriseerd |
403 |
{ ok: false, error: { type, message, requiresApproval? } } (toolaanroep geblokkeerd door beleid) |
404 |
Tool niet beschikbaar (niet gevonden of niet op de toestemmingslijst) |
405 |
Methode niet toegestaan |
408 |
Time-out bij het lezen van de aanvraagbody |
413 |
Aanvraagbody overschreed de maximale payloadgrootte |
429 |
Authenticatie beperkt wegens te veel aanvragen (Retry-After ingesteld) |
500 |
{ ok: false, error: { type, message } } (onverwachte fout bij tooluitvoering; opgeschoond bericht) |
Voorbeeld
curl -sS http://127.0.0.1:18789/tools/invoke \ -H 'Authorization: Bearer secret' \ -H 'Content-Type: application/json' \ -d '{ "tool": "sessions_list", "action": "json", "args": {} }'