tools.* e configurazione di provider personalizzati / URL di base. Per agenti, canali e altre chiavi di configurazione di primo livello, consulta il Riferimento alla configurazione.
Strumenti
Profili degli strumenti
tools.profile imposta una allowlist di base prima di tools.allow/tools.deny:
L’onboarding locale imposta per impostazione predefinita le nuove configurazioni locali su
tools.profile: "coding" quando non è impostato (i profili espliciti esistenti vengono preservati).| Profilo | Include |
|---|---|
minimal | solo session_status |
coding | group:fs, group:runtime, group:web, group:sessions, group:memory, cron, image, image_generate, skill_workshop, video_generate |
messaging | group:messaging, sessions_list, sessions_history, sessions_send, session_status |
full | Nessuna restrizione (uguale a non impostato) |
Gruppi di strumenti
| Gruppo | Strumenti |
|---|---|
group:runtime | exec, process, code_execution (bash è accettato come alias di exec) |
group:fs | read, write, edit, apply_patch |
group:sessions | sessions_list, sessions_history, sessions_send, sessions_spawn, sessions_yield, subagents, session_status |
group:memory | memory_search, memory_get |
group:web | web_search, x_search, web_fetch |
group:ui | browser, canvas |
group:automation | heartbeat_respond, cron, gateway |
group:messaging | message |
group:nodes | nodes |
group:agents | agents_list, update_plan |
group:media | image, image_generate, music_generate, video_generate, tts |
group:openclaw | Tutti gli strumenti integrati (esclude i plugin dei provider) |
group:plugins | Strumenti di proprietà dei plugin caricati, inclusi i server MCP configurati esposti tramite bundle-mcp |
Strumenti MCP e plugin nella policy degli strumenti della sandbox
I server MCP configurati sono esposti come strumenti di proprietà del plugin sotto l’id pluginbundle-mcp. I normali profili degli strumenti possono consentirli, ma tools.sandbox.tools è un gate aggiuntivo per le sessioni in sandbox. Se la modalità sandbox è "all" o "non-main", includi una di queste voci nella allowlist degli strumenti della sandbox quando gli strumenti MCP/plugin devono essere visibili:
bundle-mcpper i server MCP gestiti da OpenClaw damcp.servers- l’id plugin per un plugin nativo specifico
group:pluginsper tutti gli strumenti di proprietà dei plugin caricati- nomi esatti degli strumenti del server MCP o glob di server come
outlook__send_mailooutlook__*quando vuoi solo un server
mcp.servers. I caratteri non [A-Za-z0-9_-] diventano -, i nomi che non iniziano con una lettera ricevono un prefisso mcp- e i prefissi lunghi o duplicati possono essere troncati o avere un suffisso; ad esempio, mcp.servers["Outlook Graph"] usa un glob come outlook-graph__*.
openclaw doctor per rilevare questa forma per i server gestiti da OpenClaw in mcp.servers. I server MCP caricati dai manifest dei plugin in bundle o da .mcp.json di Claude usano lo stesso gate sandbox, ma questa diagnostica non enumera ancora quelle origini; usa le stesse voci della allowlist se i loro strumenti scompaiono nei turni in sandbox.
tools.codeMode
tools.codeMode abilita la superficie generica della modalità codice di OpenClaw. Quando è abilitata
per un’esecuzione con strumenti, il modello vede solo exec e wait; i normali strumenti
OpenClaw passano dietro il bridge del catalogo tools.* nella sandbox, e gli strumenti MCP sono
disponibili tramite il namespace MCP generato.
API.list("mcp") e
API.read("mcp/<server>.d.ts") per ispezionare le firme in stile TypeScript prima di
chiamare MCP.<server>.<tool>(). Consulta Modalità codice per il
contratto runtime, i limiti e i passaggi di debug.
tools.allow / tools.deny
Policy globale di allow/deny degli strumenti (deny prevale). Non distingue tra maiuscole e minuscole, supporta i caratteri jolly *. Applicata anche quando la sandbox Docker è disattivata.
write e apply_patch sono id strumento separati. allow: ["write"] abilita anche apply_patch per i modelli compatibili, ma deny: ["write"] non nega apply_patch. Per bloccare tutte le modifiche ai file, nega group:fs o elenca esplicitamente ogni strumento che può modificare:
tools.byProvider
Limita ulteriormente gli strumenti per provider o modelli specifici. Ordine: profilo di base → profilo del provider → allow/deny.
tools.toolsBySender
Limita gli strumenti per una specifica identità richiedente. Questa è una difesa in profondità sopra il controllo di accesso del canale; i valori sender devono provenire dall’adapter del canale, non dal testo del messaggio.
channel:<channelId>:<senderId>, id:<senderId>, e164:<phone>, username:<handle>, name:<displayName> oppure "*". Gli id canale sono id canonici di OpenClaw; alias come teams vengono normalizzati in msteams. Le chiavi legacy senza prefisso sono accettate solo come id:. L’ordine di corrispondenza è channel+id, id, e164, username, name, quindi wildcard.
agents.list[].tools.toolsBySender per agente sovrascrive la corrispondenza globale del sender quando corrisponde, anche con una policy vuota {}.
tools.elevated
Controlla l’accesso exec elevato fuori dalla sandbox:
- L’override per agente (
agents.list[].tools.elevated) può solo restringere ulteriormente. /elevated on|off|ask|fullmemorizza lo stato per sessione; le direttive inline si applicano al singolo messaggio.execelevato aggira la sandbox e usa il percorso di escape configurato (gatewayper impostazione predefinita, oppurenodequando il target exec ènode).
tools.exec
tools.loopDetection
I controlli di sicurezza per i loop degli strumenti sono disabilitati per impostazione predefinita. Imposta enabled: true per attivare il rilevamento. Le impostazioni possono essere definite globalmente in tools.loopDetection e sovrascritte per agente in agents.list[].tools.loopDetection.
Cronologia massima delle chiamate strumento conservata per l’analisi dei loop.
Soglia dei pattern ripetuti senza avanzamento per gli avvisi.
Soglia di ripetizione più alta per bloccare i loop critici.
Soglia di arresto rigida per qualsiasi esecuzione senza avanzamento.
Avvisa in caso di chiamate ripetute allo stesso strumento/con gli stessi argomenti.
Avvisa/blocca su strumenti di polling noti (
process.poll, command_status, ecc.).Avvisa/blocca sui pattern a coppie alternate senza avanzamento.
tools.web
tools.media
Configura la comprensione dei media in ingresso (immagini/audio/video):
Media model entry fields
Media model entry fields
Voce provider (
type: "provider" oppure omessa):provider: id del provider API (openai,anthropic,google/gemini,groq, ecc.)model: override dell’id del modelloprofile/preferredProfile: selezione del profiloauth-profiles.json
type: "cli"):command: eseguibile da avviareargs: argomenti con template (supporta{{MediaPath}},{{Prompt}},{{MaxChars}}, ecc.;openclaw doctor --fixmigra i placeholder deprecati{input}a{{MediaPath}})
capabilities: elenco opzionale (image,audio,video). Valori predefiniti:openai/anthropic/minimax→ immagine,google→ immagine+audio+video,groq→ audio.prompt,maxChars,maxBytes,timeoutSeconds,language: override per voce.tools.media.image.timeoutSecondse le vocitimeoutSecondsdel modello immagine corrispondente si applicano anche quando l’agente chiama lo strumento esplicitoimage. Per la comprensione delle immagini, questo timeout si applica alla richiesta stessa e non viene ridotto dal lavoro di preparazione precedente.- Gli errori passano alla voce successiva.
auth-profiles.json → variabili di ambiente → models.providers.*.apiKey.Campi di completamento asincrono:asyncCompletion.directSend: flag di compatibilità deprecato. Le attività multimediali asincrone completate restano mediate dalla sessione del richiedente, così l’agente riceve il risultato, decide come comunicarlo all’utente e usa lo strumento messaggio quando la consegna di origine lo richiede.
tools.agentToAgent
tools.sessions
Controlla quali sessioni possono essere indirizzate dagli strumenti di sessione (sessions_list, sessions_history, sessions_send).
Predefinito: tree (sessione corrente + sessioni generate da essa, come i sottoagenti).
Visibility scopes
Visibility scopes
self: solo la chiave della sessione corrente.tree: sessione corrente + sessioni generate dalla sessione corrente (sottoagenti).agent: qualsiasi sessione appartenente all’id agente corrente (può includere altri utenti se esegui sessioni per mittente sotto lo stesso id agente).all: qualsiasi sessione. Il targeting tra agenti richiede comunquetools.agentToAgent.- Vincolo sandbox: quando la sessione corrente è in sandbox e
agents.defaults.sandbox.sessionToolsVisibility="spawned", la visibilità viene forzata atreeanche setools.sessions.visibility="all". - Quando non è
all,sessions_listinclude un campo compattovisibilityche descrive la modalità effettiva e un avviso che alcune sessioni potrebbero essere omesse fuori dall’ambito corrente.
tools.sessions_spawn
Controlla il supporto per allegati inline per sessions_spawn.
Attachment notes
Attachment notes
- Gli allegati richiedono
enabled: true. - Gli allegati dei sottoagenti vengono materializzati nell’area di lavoro figlia in
.openclaw/attachments/<uuid>/con un.manifest.json. - Gli allegati ACP sono solo immagini e vengono inoltrati inline al runtime ACP dopo il superamento degli stessi limiti di numero di file, byte per file e byte totali.
- Il contenuto degli allegati viene automaticamente oscurato dalla persistenza della trascrizione.
- Gli input Base64 vengono convalidati con controlli rigorosi su alfabeto/padding e una protezione sulla dimensione prima della decodifica.
- I permessi dei file degli allegati dei sottoagenti sono
0700per le directory e0600per i file. - La pulizia dei sottoagenti segue la policy
cleanup:deleterimuove sempre gli allegati;keepli conserva solo quandoretainOnSessionKeep: true.
tools.experimental
Flag sperimentali per strumenti integrati. Disattivati per impostazione predefinita, a meno che si applichi una regola di abilitazione automatica strict-agentic GPT-5.
planTool: abilita lo strumento strutturatoupdate_planper il tracciamento di lavoro multi-step non banale.- Predefinito:
false, a meno cheagents.defaults.embeddedAgent.executionContract(o un override per agente) sia impostato su"strict-agentic"per un’esecuzione della famiglia GPT-5 OpenAI o OpenAI Codex. Impostatrueper forzare l’attivazione dello strumento fuori da tale ambito, oppurefalseper mantenerlo disattivato anche per esecuzioni strict-agentic GPT-5. - Quando abilitato, il prompt di sistema aggiunge anche indicazioni d’uso affinché il modello lo usi solo per lavori sostanziali e mantenga al massimo un passaggio
in_progress.
agents.defaults.subagents
model: modello predefinito per i sottoagenti generati. Se omesso, i sottoagenti ereditano il modello del chiamante.allowAgents: allowlist predefinita degli id degli agenti target configurati persessions_spawnquando l’agente richiedente non imposta il propriosubagents.allowAgents(["*"]= qualsiasi target configurato; predefinito: solo lo stesso agente). Le voci obsolete la cui configurazione agente è stata eliminata vengono rifiutate dasessions_spawne omesse daagents_list; eseguiopenclaw doctor --fixper ripulirle.runTimeoutSeconds: timeout predefinito (secondi) persessions_spawn.0significa nessun timeout.announceTimeoutMs: timeout per chiamata (millisecondi) per i tentativi di consegna dell’annuncioagentdel Gateway. Predefinito:120000. I retry transitori possono rendere l’attesa totale dell’annuncio più lunga di un timeout configurato.- Policy degli strumenti per sottoagente:
tools.subagents.tools.allow/tools.subagents.tools.deny.
Provider personalizzati e URL di base
I Plugin provider pubblicano le proprie righe di catalogo modelli. Aggiungi provider personalizzati tramitemodels.providers nella configurazione o in ~/.openclaw/agents/<agentId>/agent/models.json.
Configurare un baseUrl per un provider personalizzato/locale è anche la decisione ristretta di fiducia di rete per le richieste HTTP ai modelli: OpenClaw consente esattamente quell’origine scheme://host:port attraverso il percorso fetch protetto, senza aggiungere un’opzione di configurazione separata o considerare attendibili altre origini private.
Auth and merge precedence
Auth and merge precedence
- Usa
authHeader: true+headersper esigenze di autenticazione personalizzate. - Esegui l’override della radice di configurazione dell’agente con
OPENCLAW_AGENT_DIR. - Precedenza di merge per ID provider corrispondenti:
- I valori
baseUrlnon vuoti dimodels.jsondell’agente prevalgono. - I valori
apiKeynon vuoti dell’agente prevalgono solo quando quel provider non è gestito da SecretRef nel contesto corrente di configurazione/profilo di autenticazione. - I valori
apiKeydei provider gestiti da SecretRef vengono aggiornati dai marker sorgente (ENV_VAR_NAMEper riferimenti env,secretref-managedper riferimenti file/exec) invece di rendere persistenti i segreti risolti. - I valori header dei provider gestiti da SecretRef vengono aggiornati dai marker sorgente (
secretref-env:ENV_VAR_NAMEper riferimenti env,secretref-managedper riferimenti file/exec). apiKey/baseUrldell’agente vuoti o mancanti fanno fallback amodels.providersnella configurazione.- I
contextWindow/maxTokensdei modelli corrispondenti usano il valore più alto tra la configurazione esplicita e i valori impliciti del catalogo. contextTokensdel modello corrispondente preserva un limite runtime esplicito quando presente; usalo per limitare il contesto effettivo senza modificare i metadati nativi del modello.- I cataloghi dei Plugin provider vengono archiviati come shard di catalogo generati e di proprietà del Plugin nello stato Plugin dell’agente.
- Usa
models.mode: "replace"quando vuoi che la configurazione riscriva completamentemodels.jsone gli shard attivi del catalogo Plugin. - La persistenza dei marker è autoritativa rispetto alla sorgente: i marker vengono scritti dallo snapshot di configurazione sorgente attivo (prima della risoluzione), non dai valori dei segreti runtime risolti.
- I valori
Dettagli dei campi provider
Top-level catalog
Top-level catalog
models.mode: comportamento del catalogo provider (mergeoreplace).models.providers: mappa dei provider personalizzati indicizzata per id provider.- Modifiche sicure: usa
openclaw config set models.providers.<id> '<json>' --strict-json --mergeoppureopenclaw config set models.providers.<id>.models '<json-array>' --strict-json --mergeper aggiornamenti additivi.config setrifiuta sostituzioni distruttive a meno che tu non passi--replace.
- Modifiche sicure: usa
Connessione e autenticazione del provider
Connessione e autenticazione del provider
models.providers.*.api: adattatore di richiesta (openai-completions,openai-responses,anthropic-messages,google-generative-ai, ecc.). Per backend/v1/chat/completionsself-hosted come MLX, vLLM, SGLang e la maggior parte dei server locali compatibili con OpenAI, usaopenai-completions. Un provider personalizzato conbaseUrlma senzaapiusa per impostazione predefinitaopenai-completions; impostaopenai-responsessolo quando il backend supporta/v1/responses.models.providers.*.apiKey: credenziale del provider (preferisci la sostituzione SecretRef/env).models.providers.*.auth: strategia di autenticazione (api-key,token,oauth,aws-sdk).models.providers.*.contextWindow: finestra di contesto nativa predefinita per i modelli di questo provider quando la voce del modello non impostacontextWindow.models.providers.*.contextTokens: limite di contesto effettivo di runtime predefinito per i modelli di questo provider quando la voce del modello non impostacontextTokens.models.providers.*.maxTokens: limite predefinito dei token di output per i modelli di questo provider quando la voce del modello non impostamaxTokens.models.providers.*.timeoutSeconds: timeout opzionale per provider delle richieste HTTP al modello, in secondi, inclusa la gestione di connessione, intestazioni, corpo e interruzione totale della richiesta.models.providers.*.injectNumCtxForOpenAICompat: per Ollama +openai-completions, iniettaoptions.num_ctxnelle richieste (predefinito:true).models.providers.*.authHeader: forza il trasporto delle credenziali nell’intestazioneAuthorizationquando richiesto.models.providers.*.baseUrl: URL di base dell’API upstream.models.providers.*.headers: intestazioni statiche aggiuntive per routing proxy/tenant.
Override del trasporto delle richieste
Override del trasporto delle richieste
models.providers.*.request: override del trasporto per le richieste HTTP al provider del modello.request.headers: intestazioni aggiuntive (unite ai valori predefiniti del provider). I valori accettano SecretRef.request.auth: override della strategia di autenticazione. Modalità:"provider-default"(usa l’autenticazione integrata del provider),"authorization-bearer"(contoken),"header"(conheaderName,value,prefixopzionale).request.proxy: override del proxy HTTP. Modalità:"env-proxy"(usa le variabili envHTTP_PROXY/HTTPS_PROXY),"explicit-proxy"(conurl). Entrambe le modalità accettano un sotto-oggettotlsopzionale.request.tls: override TLS per connessioni dirette. Campi:ca,cert,key,passphrase(tutti accettano SecretRef),serverName,insecureSkipVerify.request.allowPrivateNetwork: quandotrue, consente alle richieste HTTP al provider del modello di raggiungere reti private, CGNAT o intervalli simili attraverso la protezione fetch HTTP del provider. Gli URL di base dei provider personalizzati/locali considerano già attendibile l’origine esatta configurata, eccetto le origini metadata/link-local, che restano bloccate senza opt-in esplicito. Impostalo sufalseper disattivare l’attendibilità dell’origine esatta. WebSocket usa lo stessorequestper intestazioni/TLS, ma non quel gate SSRF fetch. Predefinitofalse.
Voci del catalogo modelli
Voci del catalogo modelli
models.providers.*.models: voci esplicite del catalogo modelli del provider.models.providers.*.models.*.input: modalità di input del modello. Usa["text"]per modelli solo testo e["text", "image"]per modelli nativi immagine/visione. Gli allegati immagine vengono iniettati nei turni dell’agente solo quando il modello selezionato è contrassegnato come compatibile con immagini.models.providers.*.models.*.contextWindow: metadati della finestra di contesto nativa del modello. Questo sovrascrivecontextWindowa livello di provider per quel modello.models.providers.*.models.*.contextTokens: limite opzionale del contesto di runtime. Questo sovrascrivecontextTokensa livello di provider; usalo quando vuoi un budget di contesto effettivo inferiore allacontextWindownativa del modello;openclaw models listmostra entrambi i valori quando differiscono.models.providers.*.models.*.compat.supportsDeveloperRole: suggerimento di compatibilità opzionale. Perapi: "openai-completions"con unbaseUrlnon nativo e non vuoto (host diverso daapi.openai.com), OpenClaw forza questo valore afalsea runtime.baseUrlvuoto/omesso mantiene il comportamento OpenAI predefinito.models.providers.*.models.*.compat.requiresStringContent: suggerimento di compatibilità opzionale per endpoint chat compatibili con OpenAI che accettano solo stringhe. Quandotrue, OpenClaw appiattisce gli array di puro testomessages[].contentin stringhe semplici prima di inviare la richiesta.models.providers.*.models.*.compat.strictMessageKeys: suggerimento di compatibilità opzionale per endpoint chat compatibili con OpenAI rigorosi. Quandotrue, OpenClaw riduce gli oggetti messaggio Chat Completions in uscita aroleecontentprima di inviare la richiesta.models.providers.*.models.*.compat.thinkingFormat: suggerimento opzionale per il payload di thinking. Usa"together"perreasoning.enabledin stile Together,"qwen"perenable_thinkingdi primo livello, oppure"qwen-chat-template"perchat_template_kwargs.enable_thinkingsu server compatibili con OpenAI della famiglia Qwen che supportano kwargs chat-template a livello di richiesta, come vLLM. I modelli Qwen vLLM configurati espongono scelte binarie/think(off,on) per questi formati.models.providers.*.models.*.compat.requiresReasoningContentOnAssistantMessages: suggerimento di compatibilità opzionale per backend Chat Completions in stile DeepSeek che richiedono ai messaggi assistant precedenti di mantenerereasoning_contentdurante il replay. Quandotrue, OpenClaw preserva quel campo nei messaggi assistant in uscita. Usalo quando colleghi un proxy personalizzato compatibile con DeepSeek che rifiuta richieste dopo la rimozione del reasoning. Predefinitofalse.
Rilevamento Amazon Bedrock
Rilevamento Amazon Bedrock
plugins.entries.amazon-bedrock.config.discovery: radice delle impostazioni di rilevamento automatico Bedrock.plugins.entries.amazon-bedrock.config.discovery.enabled: attiva/disattiva il rilevamento implicito.plugins.entries.amazon-bedrock.config.discovery.region: regione AWS per il rilevamento.plugins.entries.amazon-bedrock.config.discovery.providerFilter: filtro provider-id opzionale per rilevamento mirato.plugins.entries.amazon-bedrock.config.discovery.refreshInterval: intervallo di polling per aggiornare il rilevamento.plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow: finestra di contesto di fallback per i modelli rilevati.plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens: token massimi di output di fallback per i modelli rilevati.
--custom-image-input per forzare metadati compatibili con immagini oppure --custom-text-input per forzare metadati solo testo.
Esempi di provider
Cerebras (GLM 4.7 / GPT OSS)
Cerebras (GLM 4.7 / GPT OSS)
Il Plugin provider esterno ufficiale Usa
cerebras può configurarlo tramite openclaw onboard --auth-choice cerebras-api-key. Usa la configurazione esplicita del provider solo quando sovrascrivi i valori predefiniti.cerebras/zai-glm-4.7 per Cerebras; zai/glm-4.7 per Z.AI diretto.Kimi Coding
Kimi Coding
openclaw onboard --auth-choice kimi-code-api-key.Modelli locali (LM Studio)
Modelli locali (LM Studio)
Vedi Modelli locali. In breve: esegui un modello locale grande tramite LM Studio Responses API su hardware serio; mantieni uniti i modelli hosted per il fallback.
MiniMax M3 (diretto)
MiniMax M3 (diretto)
MINIMAX_API_KEY. Scorciatoie: openclaw onboard --auth-choice minimax-global-api oppure openclaw onboard --auth-choice minimax-cn-api. Il catalogo modelli usa M3 come predefinito e include anche le varianti M2.7. Nel percorso di streaming compatibile con Anthropic, OpenClaw disabilita per impostazione predefinita il thinking di MiniMax M2.x, a meno che tu non imposti esplicitamente thinking; MiniMax-M3 (e M3.x) resta per impostazione predefinita sul percorso di thinking omesso/adattivo del provider. /fast on o params.fastMode: true riscrive MiniMax-M2.7 in MiniMax-M2.7-highspeed.Moonshot AI (Kimi)
Moonshot AI (Kimi)
baseUrl: "https://api.moonshot.cn/v1" oppure openclaw onboard --auth-choice moonshot-api-key-cn.Gli endpoint Moonshot nativi dichiarano compatibilità con l’uso in streaming sul trasporto condiviso openai-completions, e OpenClaw lo determina in base alle capacità dell’endpoint anziché solo all’id del provider integrato.OpenCode
OpenCode
OPENCODE_API_KEY (oppure OPENCODE_ZEN_API_KEY). Usa riferimenti opencode/... per il catalogo Zen oppure riferimenti opencode-go/... per il catalogo Go. Scorciatoia: openclaw onboard --auth-choice opencode-zen oppure openclaw onboard --auth-choice opencode-go.Sintetico (compatibile con Anthropic)
Sintetico (compatibile con Anthropic)
/v1 (il client Anthropic lo aggiunge). Scorciatoia: openclaw onboard --auth-choice synthetic-api-key.Z.AI (GLM-4.7)
Z.AI (GLM-4.7)
ZAI_API_KEY. I riferimenti ai modelli usano l’ID provider canonico zai/*. Scorciatoia: openclaw onboard --auth-choice zai-api-key.- Endpoint generale:
https://api.z.ai/api/paas/v4 - Endpoint di coding (predefinito):
https://api.z.ai/api/coding/paas/v4 - Per l’endpoint generale, definisci un provider personalizzato con l’override dell’URL di base.
Correlati
- Configurazione — agenti
- Configurazione — canali
- Riferimento della configurazione — altre chiavi di livello superiore
- Strumenti e plugin