/v1/*-Oberfläche wird die Bearer-Authentifizierung mit einem gemeinsamen Geheimnis als vertrauenswürdiger Operatorzugriff auf das gesamte Gateway behandelt.
POST /tools/invoke- Derselbe Port wie das Gateway (WS- und HTTP-Multiplexing):
http://<gateway-host>:<port>/tools/invoke - Standardmäßige maximale Größe des Anfragetexts: 2 MB
Authentifizierung
Verwendet die Authentifizierungskonfiguration des Gateways. Übliche HTTP-Authentifizierungswege:- Authentifizierung mit gemeinsamem Geheimnis (
gateway.auth.mode="token"oder"password"):Authorization: Bearer <token-or-password> - vertrauenswürdige identitätstragende HTTP-Authentifizierung (
gateway.auth.mode="trusted-proxy"): Leiten Sie die Anfrage über den konfigurierten identitätsbewussten Proxy weiter und lassen Sie ihn die erforderlichen Identitätsheader einfügen - offene Authentifizierung an einem privaten Ingress (
gateway.auth.mode="none"): kein Authentifizierungsheader erforderlich
mode="token"verwendetgateway.auth.token(oderOPENCLAW_GATEWAY_TOKEN).mode="password"verwendetgateway.auth.password(oderOPENCLAW_GATEWAY_PASSWORD).mode="trusted-proxy"setzt voraus, dass die HTTP-Anfrage von einer konfigurierten vertrauenswürdigen Proxy-Quelle stammt; Loopback-Proxys auf demselben Host erfordern ausdrücklichgateway.auth.trustedProxy.allowLoopback = true.- Interne Aufrufer auf demselben Host, die den Proxy umgehen, können
gateway.auth.password/OPENCLAW_GATEWAY_PASSWORDals lokalen direkten Rückfallweg verwenden. Jegliche Hinweise durch die HeaderForwarded,X-Forwarded-*oderX-Real-IPsorgen stattdessen dafür, dass die Anfrage auf dem Pfad für vertrauenswürdige Proxys bleibt. - Wenn
gateway.auth.rateLimitkonfiguriert ist und zu viele Authentifizierungsfehler auftreten, gibt der Endpunkt429mitRetry-Afterzurück.
Sicherheitsgrenze (wichtig)
Behandeln Sie diesen Endpunkt als Oberfläche mit vollständigem Operatorzugriff auf die Gateway-Instanz.- Die HTTP-Bearer-Authentifizierung ist hier kein eng begrenztes benutzerspezifisches Berechtigungsmodell.
- Ein gültiges Gateway-Token/-Passwort für diesen Endpunkt sollte wie ein Zugangsmerkmal des Eigentümers/Operators behandelt werden.
- Bei Authentifizierungsmodi mit gemeinsamem Geheimnis (
tokenundpassword) stellt der Endpunkt die normalen vollständigen Operator-Standardwerte wieder her, selbst wenn der Aufrufer einen enger gefasstenx-openclaw-scopes-Header sendet. - Bei der Authentifizierung mit gemeinsamem Geheimnis werden direkte Tool-Aufrufe an diesem Endpunkt außerdem als Durchläufe eines Eigentümer-Absenders behandelt.
- Vertrauenswürdige identitätstragende HTTP-Modi (Authentifizierung über einen vertrauenswürdigen Proxy oder
gateway.auth.mode="none"an einem privaten Ingress) berücksichtigenx-openclaw-scopes, sofern vorhanden, und greifen andernfalls auf den normalen Satz standardmäßiger Operatorberechtigungen zurück. - Beschränken Sie diesen Endpunkt auf Loopback, Tailnet oder einen privaten Ingress; stellen Sie ihn nicht direkt im öffentlichen Internet bereit.
Anfragetext
tool/name(Zeichenfolge, erforderlich): Name des aufzurufenden Tools.namehat Vorrang, wenn beide gesendet werden.action(Zeichenfolge, optional): Wird mitargs.actionzusammengeführt, wenn das Tool-Schema eineaction-Eigenschaft unterstützt undargsnoch keinen Wert dafür festgelegt hat.args(Objekt, optional): Tool-spezifische Argumente.sessionKey(Zeichenfolge, optional): Schlüssel der Zielsitzung. Wenn er weggelassen wird oder"main"lautet, verwendet das Gateway den konfigurierten Schlüssel der Hauptsitzung (berücksichtigtsession.mainKeyund den Standard-Agenten beziehungsweiseglobalim globalen Sitzungsbereich).agentId(Zeichenfolge, optional): Löst den Sitzungsschlüssel für diesen Agenten auf. Führt zu einem400-Fehler, wenn dies mit einem ausdrücklich angegebenensessionKeykollidiert, der bereits einem anderen Agenten zugeordnet ist.idempotencyKey(Zeichenfolge, optional): Wird verwendet, um eine stabile Tool-Aufruf-ID für den Aufruf abzuleiten.dryRun(boolescher Wert, optional): Für die zukünftige Verwendung reserviert; wird derzeit ignoriert.
Richtlinien- und Routingverhalten
Die Verfügbarkeit von Tools wird über dieselbe Richtlinienkette gefiltert, die von Gateway-Agenten verwendet wird:tools.profile/tools.byProvider.profiletools.allow/tools.byProvider.allowagents.<id>.tools.allow/agents.<id>.tools.byProvider.allow- Gruppenrichtlinien (wenn der Sitzungsschlüssel einer Gruppe oder einem Kanal zugeordnet ist)
- Subagent-Richtlinie (beim Aufruf mit dem Sitzungsschlüssel eines Subagenten)
- Ausführungsgenehmigungen sind Schutzmechanismen für Operatoren und keine separate Autorisierungsgrenze für diesen HTTP-Endpunkt. Wenn ein Tool hier über Gateway-Authentifizierung und Tool-Richtlinie erreichbar ist, fügt
/tools/invokekeine zusätzliche Genehmigungsabfrage pro Aufruf hinzu. - Wenn
exechier erreichbar ist, behandeln Sie es als verändernde Shell-Oberfläche. Das Sperren vonwrite,edit,apply_patchoder HTTP-Tools zum Schreiben in das Dateisystem macht die Shell-Ausführung nicht schreibgeschützt. - Geben Sie Gateway-Bearer-Zugangsdaten nicht an nicht vertrauenswürdige Aufrufer weiter. Wenn Sie eine Trennung zwischen Vertrauensgrenzen benötigen, führen Sie separate Gateways aus (idealerweise unter separaten Betriebssystembenutzern oder auf separaten Hosts).
cron, gateway und nodes sind ebenfalls ausschließlich Eigentümern vorbehalten: Selbst außerhalb dieser standardmäßigen Sperrliste können Aufrufer, die keine Eigentümer sind, sie auf dieser Oberfläche nicht aufrufen.
Passen Sie die allgemeine Sperrliste über gateway.tools an:
gateway.tools.allow ist eine Außerkraftsetzung der Exposition und keine Erweiterung der Berechtigungen. In identitätstragenden HTTP-Modi bleiben cron, gateway und nodes für Aufrufer ohne Eigentümer-/Administratoridentität (operator.admin) nicht verfügbar, selbst wenn sie in gateway.tools.allow aufgeführt sind. Die Bearer-Authentifizierung mit gemeinsamem Geheimnis folgt weiterhin der oben beschriebenen Regel für vollständig vertrauenswürdige Operatoren.
Damit Gruppenrichtlinien den Kontext auflösen können, können Sie optional Folgendes festlegen:
x-openclaw-message-channel: <channel>(Beispiel:slack,telegram)x-openclaw-account-id: <accountId>(wenn mehrere Konten vorhanden sind)x-openclaw-message-to: <target>(Zustellungsziel für die Richtlinie des Nachrichten-Tools)x-openclaw-thread-id: <threadId>(Thread-Kontext für die Richtlinie des Nachrichten-Tools)