/v1/*, l’autenticazione bearer con segreto condiviso viene considerata un accesso operatore attendibile per l’intero Gateway.
POST /tools/invoke- Stessa porta del Gateway (multiplexing WS + HTTP):
http://<gateway-host>:<port>/tools/invoke - Dimensione massima predefinita del corpo della richiesta: 2 MB
Autenticazione
Usa la configurazione di autenticazione del Gateway. Percorsi comuni di autenticazione HTTP:- autenticazione con segreto condiviso (
gateway.auth.mode="token"o"password"):Authorization: Bearer <token-or-password> - autenticazione HTTP attendibile con identità (
gateway.auth.mode="trusted-proxy"): instrada la richiesta attraverso il proxy configurato con riconoscimento dell’identità e lascia che inserisca le intestazioni di identità richieste - autenticazione aperta su ingresso privato (
gateway.auth.mode="none"): non è richiesta alcuna intestazione di autenticazione
mode="token"usagateway.auth.token(oOPENCLAW_GATEWAY_TOKEN).mode="password"usagateway.auth.password(oOPENCLAW_GATEWAY_PASSWORD).mode="trusted-proxy"richiede che la richiesta HTTP provenga da un’origine proxy attendibile configurata; i proxy local loopback sullo stesso host richiedono esplicitamentegateway.auth.trustedProxy.allowLoopback = true.- I chiamanti interni sullo stesso host che bypassano il proxy possono usare
gateway.auth.password/OPENCLAW_GATEWAY_PASSWORDcome ripiego diretto locale. Qualsiasi evidenza nelle intestazioniForwarded,X-Forwarded-*oX-Real-IPmantiene invece la richiesta sul percorso del proxy attendibile. - Se
gateway.auth.rateLimitè configurato e si verificano troppi errori di autenticazione, l’endpoint restituisce429conRetry-After.
Confine di sicurezza (importante)
Considera questo endpoint come una superficie di accesso operatore completo per l’istanza del Gateway.- In questo caso, l’autenticazione bearer HTTP non è un modello con ambito ristretto per singolo utente.
- Un token o una password del Gateway validi per questo endpoint devono essere considerati credenziali di proprietario/operatore.
- Per le modalità di autenticazione con segreto condiviso (
tokenepassword), l’endpoint ripristina i normali valori predefiniti di accesso operatore completo anche se il chiamante invia un’intestazionex-openclaw-scopespiù restrittiva. - L’autenticazione con segreto condiviso considera inoltre le invocazioni dirette degli strumenti su questo endpoint come turni inviati dal proprietario.
- Le modalità HTTP attendibili con identità (autenticazione tramite proxy attendibile oppure
gateway.auth.mode="none"su un ingresso privato) rispettanox-openclaw-scopesquando presente; in caso contrario, usano il normale insieme predefinito di ambiti dell’operatore. - Mantieni questo endpoint accessibile solo tramite local loopback, tailnet o ingresso privato; non esporlo direttamente alla rete Internet pubblica.
Corpo della richiesta
tool/name(stringa, obbligatorio): nome dello strumento da invocare.nameha la precedenza se vengono inviati entrambi.action(stringa, facoltativo): viene unito inargs.actionse lo schema dello strumento supporta una proprietàactioneargsnon ne ha già impostata una.args(oggetto, facoltativo): argomenti specifici dello strumento.sessionKey(stringa, facoltativo): chiave della sessione di destinazione. Se omessa o impostata su"main", il Gateway usa la chiave della sessione principale configurata (rispettasession.mainKeye l’agente predefinito, oppureglobalnell’ambito di sessione globale).agentId(stringa, facoltativo): risolve la chiave di sessione per quell’agente. Restituisce un errore400se è in conflitto con unsessionKeyesplicito già associato a un agente diverso.idempotencyKey(stringa, facoltativo): usata per derivare un ID stabile della chiamata allo strumento per l’invocazione.dryRun(booleano, facoltativo): riservato per usi futuri; attualmente ignorato.
Comportamento dei criteri e dell’instradamento
La disponibilità degli strumenti viene filtrata tramite la stessa catena di criteri usata dagli agenti del Gateway:tools.profile/tools.byProvider.profiletools.allow/tools.byProvider.allowagents.<id>.tools.allow/agents.<id>.tools.byProvider.allow- criteri di gruppo (se la chiave di sessione è associata a un gruppo o a un canale)
- criteri del sottoagente (quando si invoca usando la chiave di sessione di un sottoagente)
- Le approvazioni di esecuzione sono misure di protezione per l’operatore, non un confine di autorizzazione separato per questo endpoint HTTP. Se uno strumento è raggiungibile da qui tramite l’autenticazione del Gateway e i criteri degli strumenti,
/tools/invokenon aggiunge un’ulteriore richiesta di approvazione per ogni chiamata. - Se
execè raggiungibile da qui, consideralo una superficie shell con capacità di modifica. Negarewrite,edit,apply_patcho gli strumenti HTTP di scrittura sul file system non rende l’esecuzione della shell di sola lettura. - Non condividere le credenziali bearer del Gateway con chiamanti non attendibili. Se devi separare diversi confini di attendibilità, esegui Gateway distinti, preferibilmente con utenti o host del sistema operativo separati.
Anche
cron, gateway e nodes sono riservati al proprietario: persino al di fuori di questo elenco di esclusione predefinito, i chiamanti non proprietari non possono invocarli tramite questa interfaccia.
Personalizza l’elenco generale di esclusione tramite gateway.tools:
gateway.tools.allow è una deroga all’esposizione, non un’elevazione degli ambiti. Nelle modalità HTTP con identità, cron, gateway e nodes restano non disponibili ai chiamanti senza identità di proprietario/amministratore (operator.admin), anche quando sono elencati in gateway.tools.allow. L’autenticazione bearer con segreto condiviso continua a seguire la regola dell’operatore completamente attendibile descritta sopra.
Per agevolare la risoluzione del contesto da parte dei criteri di gruppo, puoi facoltativamente impostare:
x-openclaw-message-channel: <channel>(esempio:slack,telegram)x-openclaw-account-id: <accountId>(quando esistono più account)x-openclaw-message-to: <target>(destinazione di consegna per i criteri dello strumento di messaggistica)x-openclaw-thread-id: <threadId>(contesto del thread per i criteri dello strumento di messaggistica)