/v1/*, l’autenticazione bearer con segreto condiviso viene trattata come accesso operatore attendibile per l’intero gateway.
POST /tools/invoke- Stessa porta del Gateway (multiplex WS + HTTP):
http://<gateway-host>:<port>/tools/invoke
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 con identità attendibile (
gateway.auth.mode="trusted-proxy"): passa attraverso il proxy configurato consapevole dell’identità e lascia che inietti gli header di identità richiesti - autenticazione aperta su ingresso privato (
gateway.auth.mode="none"): nessun header di autenticazione richiesto
- Quando
gateway.auth.mode="token", usagateway.auth.token(oOPENCLAW_GATEWAY_TOKEN). - Quando
gateway.auth.mode="password", usagateway.auth.password(oOPENCLAW_GATEWAY_PASSWORD). - Quando
gateway.auth.mode="trusted-proxy", la richiesta HTTP deve provenire da una sorgente proxy attendibile configurata; i proxy local loopback sullo stesso host richiedonogateway.auth.trustedProxy.allowLoopback = trueesplicito. - I chiamanti interni sullo stesso host che aggirano il proxy possono usare
gateway.auth.password/OPENCLAW_GATEWAY_PASSWORDcome fallback locale diretto. Qualsiasi evidenza negli headerForwarded,X-Forwarded-*oX-Real-IPmantiene invece la richiesta sul percorso trusted-proxy. - Se
gateway.auth.rateLimitè configurato e si verificano troppi errori di autenticazione, l’endpoint restituisce429conRetry-After.
Confine di sicurezza (importante)
Tratta questo endpoint come una superficie di accesso operatore completo per l’istanza del gateway.- L’autenticazione bearer HTTP qui non è un modello di ambito ristretto per utente.
- Un token/password Gateway valido per questo endpoint deve essere trattato come una credenziale di proprietario/operatore.
- Per le modalità di autenticazione con segreto condiviso (
tokenepassword), l’endpoint ripristina i normali valori predefiniti di operatore completo anche se il chiamante invia un headerx-openclaw-scopespiù ristretto. - L’autenticazione con segreto condiviso tratta anche le invocazioni dirette degli strumenti su questo endpoint come turni del mittente proprietario.
- Le modalità HTTP con identità attendibile (per esempio l’autenticazione tramite proxy attendibile o
gateway.auth.mode="none"su un ingresso privato) rispettanox-openclaw-scopesquando presente e altrimenti ricadono sul normale insieme di ambiti predefinito dell’operatore. - Mantieni questo endpoint solo su loopback/tailnet/ingresso privato; non esporlo direttamente a Internet pubblico.
gateway.auth.mode="token"o"password"+Authorization: Bearer ...- prova il possesso del segreto operatore condiviso del gateway
- ignora
x-openclaw-scopespiù ristretto - ripristina l’insieme completo di ambiti operatore predefiniti:
operator.admin,operator.approvals,operator.pairing,operator.read,operator.talk.secrets,operator.write - tratta le invocazioni dirette degli strumenti su questo endpoint come turni del mittente proprietario
- modalità HTTP con identità attendibile (per esempio autenticazione tramite proxy attendibile, oppure
gateway.auth.mode="none"su ingresso privato)- autenticano un’identità esterna attendibile o un confine di distribuzione
- rispettano
x-openclaw-scopesquando l’header è presente - ricadono sul normale insieme di ambiti predefinito dell’operatore quando l’header è assente
- perdono le semantiche di proprietario solo quando il chiamante restringe esplicitamente gli ambiti e omette
operator.admin
Corpo della richiesta
tool(stringa, obbligatorio): nome dello strumento da invocare.action(stringa, facoltativo): mappato negli argomenti se lo schema dello strumento supportaactione il payload degli argomenti lo ha omesso.args(oggetto, facoltativo): argomenti specifici dello strumento.sessionKey(stringa, facoltativo): chiave della sessione di destinazione. Se omessa o"main", il Gateway usa la chiave della sessione principale configurata (rispettasession.mainKeye l’agente predefinito, oppureglobalnell’ambito globale).dryRun(booleano, facoltativo): riservato per uso futuro; attualmente ignorato.
Comportamento di policy e instradamento
La disponibilità degli strumenti viene filtrata attraverso la stessa catena di policy usata dagli agenti del Gateway:tools.profile/tools.byProvider.profiletools.allow/tools.byProvider.allowagents.<id>.tools.allow/agents.<id>.tools.byProvider.allow- policy di gruppo (se la chiave della sessione è mappata a un gruppo o canale)
- policy del subagente (quando si invoca con una chiave di sessione del subagente)
- Le approvazioni exec sono barriere di protezione per l’operatore, non un confine di autorizzazione separato per questo endpoint HTTP. Se uno strumento è raggiungibile qui tramite autenticazione Gateway + policy degli strumenti,
/tools/invokenon aggiunge una richiesta di approvazione per chiamata aggiuntiva. - Se
execè raggiungibile qui, trattalo come una superficie shell mutante. Negarewrite,edit,apply_patcho strumenti HTTP di scrittura sul filesystem non rende l’esecuzione shell di sola lettura. - Non condividere le credenziali bearer del Gateway con chiamanti non attendibili. Se hai bisogno di separazione tra confini di fiducia, esegui gateway separati (e idealmente utenti/host del sistema operativo separati).
exec- esecuzione diretta di comandi (superficie RCE)spawn- creazione arbitraria di processi figli (superficie RCE)shell- esecuzione di comandi shell (superficie RCE)fs_write- mutazione arbitraria di file sull’hostfs_delete- eliminazione arbitraria di file sull’hostfs_move- spostamento/rinomina arbitraria di file sull’hostapply_patch- l’applicazione di patch può riscrivere file arbitrarisessions_spawn- orchestrazione di sessioni; generare agenti da remoto è RCEsessions_send- iniezione di messaggi tra sessionicron- piano di controllo dell’automazione persistentegateway- piano di controllo del gateway; impedisce la riconfigurazione via HTTPnodes- il relay dei comandi dei nodi può raggiungere system.run sugli host associatiwhatsapp_login- configurazione interattiva che richiede la scansione del QR da terminale; si blocca su HTTP
gateway.tools:
gateway.tools.allow è una sovrascrittura di esposizione, non un aumento di ambito. Nelle
modalità HTTP con identità, cron, gateway e nodes restano non disponibili
per i chiamanti che non hanno identità proprietario/admin (operator.admin) anche quando
sono elencati in gateway.tools.allow. L’autenticazione bearer con segreto condiviso segue comunque
la regola dell’operatore attendibile completo descritta sopra.
Per aiutare le policy di gruppo a risolvere il contesto, puoi facoltativamente impostare:
x-openclaw-message-channel: <channel>(esempio:slack,telegram)x-openclaw-account-id: <accountId>(quando esistono più account)
Risposte
200→{ ok: true, result }400→{ ok: false, error: { type, message } }(richiesta non valida o errore di input dello strumento)401→ non autorizzato429→ autenticazione soggetta a limite di frequenza (Retry-Afterimpostato)404→ strumento non disponibile (non trovato o non inserito nella lista consentita)405→ metodo non consentito500→{ ok: false, error: { type, message } }(errore imprevisto di esecuzione dello strumento; messaggio sanificato)