Kernkonfigurationsreferenz fürDocumentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
~/.openclaw/openclaw.json. Eine aufgabenorientierte Übersicht finden Sie unter Konfiguration.
Behandelt die wichtigsten OpenClaw-Konfigurationsbereiche und verlinkt weiter, wenn ein Subsystem eine eigene, detailliertere Referenz hat. Kanal- und Plugin-eigene Befehlskataloge sowie tiefgehende Speicher-/QMD-Schalter befinden sich auf eigenen Seiten statt auf dieser.
Code-Wahrheit:
openclaw config schemagibt das Live-JSON-Schema aus, das für Validierung und Control UI verwendet wird, mit zusammengeführten gebündelten/Plugin-/Kanal-Metadaten, sofern verfügbarconfig.schema.lookupgibt einen pfadbezogenen Schemaknoten für Drill-down-Werkzeuge zurückpnpm config:docs:check/pnpm config:docs:genvalidieren den Baseline-Hash der Konfigurationsdokumentation gegen die aktuelle Schemaoberfläche
gateway-Toolaktion config.schema.lookup für
exakte feldbezogene Dokumentation und Einschränkungen vor Änderungen. Verwenden Sie
Konfiguration für aufgabenorientierte Anleitung und diese Seite
für die breitere Feldübersicht, Standardwerte und Links zu Subsystemreferenzen.
Dedizierte Detailreferenzen:
- Referenz zur Speicherkonfiguration für
agents.defaults.memorySearch.*,memory.qmd.*,memory.citationsund Dreaming-Konfiguration unterplugins.entries.memory-core.config.dreaming - Slash-Befehle für den aktuellen integrierten + gebündelten Befehlskatalog
- zuständige Kanal-/Plugin-Seiten für kanalspezifische Befehlsoberflächen
Kanäle
Kanalspezifische Konfigurationsschlüssel wurden auf eine dedizierte Seite verschoben - siehe Konfiguration - Kanäle fürchannels.*,
einschließlich Slack, Discord, Telegram, WhatsApp, Matrix, iMessage und anderer
gebündelter Kanäle (Authentifizierung, Zugriffskontrolle, mehrere Konten, Erwähnungs-Gating).
Agent-Standardwerte, Multi-Agent, Sitzungen und Nachrichten
Auf eine dedizierte Seite verschoben - siehe Konfiguration - Agents für:agents.defaults.*(Arbeitsbereich, Modell, Denken, Heartbeat, Speicher, Medien, Skills, Sandbox)multiAgent.*(Multi-Agent-Routing und Bindungen)session.*(Sitzungslebenszyklus, Compaction, Pruning)messages.*(Nachrichtenzustellung, TTS, Markdown-Rendering)talk.*(Talk-Modus)talk.consultThinkingLevel: Override der Denkstufe für den vollständigen OpenClaw-Agent-Lauf hinter Control UI Talk-Echtzeitkonsultationentalk.consultFastMode: einmaliger Fast-Mode-Override für Control UI Talk-Echtzeitkonsultationentalk.speechLocale: optionale BCP-47-Locale-ID für Talk-Spracherkennung unter iOS/macOStalk.silenceTimeoutMs: wenn nicht gesetzt, behält Talk das plattformseitige Standard-Pausenfenster vor dem Senden des Transkripts bei (700 ms on macOS and Android, 900 ms on iOS)
Tools und benutzerdefinierte Provider
Tool-Richtlinie, experimentelle Schalter, Provider-gestützte Tool-Konfiguration und Einrichtung benutzerdefinierter Provider / Basis-URLs wurden auf eine dedizierte Seite verschoben - siehe Konfiguration - Tools und benutzerdefinierte Provider.Modelle
Provider-Definitionen, Modell-Allowlists und die Einrichtung benutzerdefinierter Provider befinden sich in Konfiguration - Tools und benutzerdefinierte Provider. Diemodels-Wurzel besitzt außerdem globales Modellkatalogverhalten.
models.mode: Provider-Katalogverhalten (mergeoderreplace).models.providers: Zuordnung benutzerdefinierter Provider, geschlüsselt nach Provider-ID.models.providers.*.localService: optionaler On-Demand-Prozessmanager für lokale Modellserver. OpenClaw prüft den konfigurierten Health-Endpunkt, startet bei Bedarf den absolutencommand, wartet auf Bereitschaft und sendet dann die Modellanfrage. Siehe Lokale Modelldienste.models.pricing.enabled: steuert den Hintergrund-Preis-Bootstrap, der startet, nachdem Sidecars und Kanäle den Gateway-Bereit-Pfad erreicht haben. Wennfalse, überspringt der Gateway OpenRouter- und LiteLLM-Preiskatalogabrufe; konfiguriertemodels.providers.*.models[].cost-Werte funktionieren weiterhin für lokale Kostenschätzungen.
MCP
Von OpenClaw verwaltete MCP-Serverdefinitionen befinden sich untermcp.servers und werden
von eingebettetem Pi und anderen Runtime-Adaptern genutzt. Die Befehle openclaw mcp list,
show, set und unset verwalten diesen Block, ohne während Konfigurationsänderungen eine Verbindung zum
Zielserver herzustellen.
mcp.servers: benannte stdio- oder Remote-MCP-Serverdefinitionen für Runtimes, die konfigurierte MCP-Tools bereitstellen. Remote-Einträge verwendentransport: "streamable-http"odertransport: "sse";type: "http"ist ein CLI-nativer Alias, denopenclaw mcp setundopenclaw doctor --fixin das kanonische Feldtransportnormalisieren.mcp.sessionIdleTtlMs: Leerlauf-TTL für sitzungsbezogene gebündelte MCP-Runtimes. Einmalige eingebettete Läufe fordern Bereinigung am Laufende an; diese TTL ist die Rückfallebene für langlebige Sitzungen und zukünftige Aufrufer.- Änderungen unter
mcp.*werden durch Entsorgen zwischengespeicherter Sitzungs-MCP-Runtimes direkt angewendet. Die nächste Tool-Erkennung/-Nutzung erstellt sie aus der neuen Konfiguration neu, sodass entferntemcp.servers-Einträge sofort bereinigt werden, statt auf die Leerlauf-TTL zu warten.
Skills
allowBundled: optionale Allowlist nur für gebündelte Skills (verwaltete/Arbeitsbereich-Skills nicht betroffen).load.extraDirs: zusätzliche gemeinsame Skill-Wurzeln (niedrigste Priorität).load.allowSymlinkTargets: vertrauenswürdige echte Zielwurzeln, in die Skill-Symlinks auflösen dürfen, wenn sich der Link außerhalb seiner konfigurierten Quellwurzel befindet.install.preferBrew: wenn true, Homebrew-Installer bevorzugen, sofernbrewverfügbar ist, bevor auf andere Installer-Arten zurückgefallen wird.install.nodeManager: Node-Installer-Präferenz fürmetadata.openclaw.install- Spezifikationen (npm|pnpm|yarn|bun).install.allowUploadedArchives: vertrauenswürdigenoperator.admin-Gateway- Clients erlauben, private ZIP-Archive zu installieren, die überskills.upload.*bereitgestellt wurden (Standard: false). Dies aktiviert nur den Pfad für hochgeladene Archive; normale ClawHub- Installationen benötigen dies nicht.entries.<skillKey>.enabled: falsedeaktiviert einen Skill, selbst wenn er gebündelt/installiert ist.entries.<skillKey>.apiKey: Komfortfeld für Skills, die eine primäre Umgebungsvariable deklarieren (Klartextzeichenfolge oder SecretRef-Objekt).
Plugins
- Geladen aus
~/.openclaw/extensions,<workspace>/.openclaw/extensionssowieplugins.load.paths. - Die Erkennung akzeptiert native OpenClaw-Plugins sowie kompatible Codex-Bundles und Claude-Bundles, einschließlich manifestloser Claude-Bundles im Standardlayout.
- Konfigurationsänderungen erfordern einen Gateway-Neustart.
allow: optionale Allowlist (nur aufgeführte Plugins werden geladen).denyhat Vorrang.bundledDiscovery: standardmäßig"allowlist"für neue Konfigurationen, sodass eine nicht leereplugins.allowauch gebündelte Provider-Plugins einschließt, einschließlich Websuche- Runtime-Providern. Doctor schreibt"compat"für migrierte Legacy-Allowlist- Konfigurationen, um bestehendes Verhalten gebündelter Provider beizubehalten, bis Sie sich dafür entscheiden.plugins.entries.<id>.apiKey: Komfortfeld für API-Schlüssel auf Plugin-Ebene (wenn vom Plugin unterstützt).plugins.entries.<id>.env: Plugin-spezifische Zuordnung von Umgebungsvariablen.plugins.entries.<id>.hooks.allowPromptInjection: wennfalse, blockiert Corebefore_prompt_buildund ignoriert Prompt-mutierende Felder aus Legacy-before_agent_start, während Legacy-modelOverrideundproviderOverridebeibehalten werden. Gilt für native Plugin-Hooks und unterstützte, von Bundles bereitgestellte Hook-Verzeichnisse.plugins.entries.<id>.hooks.allowConversationAccess: wenntrue, dürfen vertrauenswürdige nicht gebündelte Plugins rohe Konversationsinhalte aus typisierten Hooks wiellm_input,llm_output,before_model_resolve,before_agent_reply,before_agent_run,before_agent_finalizeundagent_endlesen.plugins.entries.<id>.subagent.allowModelOverride: diesem Plugin ausdrücklich vertrauen, pro Laufprovider- undmodel-Overrides für Hintergrund-Subagent-Läufe anzufordern.plugins.entries.<id>.subagent.allowedModels: optionale Allowlist kanonischerprovider/model-Ziele für vertrauenswürdige Subagent-Overrides. Verwenden Sie"*"nur, wenn Sie bewusst jedes Modell zulassen möchten.plugins.entries.<id>.llm.allowModelOverride: diesem Plugin ausdrücklich vertrauen, Modell-Overrides fürapi.runtime.llm.completeanzufordern.plugins.entries.<id>.llm.allowedModels: optionale Allowlist kanonischerprovider/model-Ziele für vertrauenswürdige Plugin-LLM-Completion-Overrides. Verwenden Sie"*"nur, wenn Sie bewusst jedes Modell zulassen möchten.plugins.entries.<id>.llm.allowAgentIdOverride: diesem Plugin ausdrücklich vertrauen,api.runtime.llm.completegegen eine nicht standardmäßige Agent-ID auszuführen.plugins.entries.<id>.config: vom Plugin definiertes Konfigurationsobjekt (validiert durch natives OpenClaw-Plugin-Schema, sofern verfügbar).- Konto-/Runtime-Einstellungen von Kanal-Plugins befinden sich unter
channels.<id>und sollten durch die Manifest-MetadatenchannelConfigsdes zuständigen Plugins beschrieben werden, nicht durch eine zentrale OpenClaw-Optionsregistrierung.
Codex-Harness-Plugin-Konfiguration
Das gebündeltecodex-Plugin besitzt native Codex-App-Server-Harness-Einstellungen unter
plugins.entries.codex.config. Siehe
Codex-Harness-Referenz für die vollständige Konfigurationsoberfläche
und Codex-Harness für das Runtime-Modell.
codexPlugins gilt nur für Sitzungen, die den nativen Codex-Harness auswählen.
Es aktiviert keine Codex-Plugins für Pi, normale OpenAI-Provider-Läufe, ACP-
Konversationsbindungen oder einen beliebigen Nicht-Codex-Harness.
plugins.entries.codex.config.codexPlugins.enabled: aktiviert native Codex Plugin-/App-Unterstützung für das Codex-Harness. Standard:false.plugins.entries.codex.config.codexPlugins.allow_destructive_actions: standardmäßige Richtlinie für destruktive Aktionen bei migrierten Plugin-App-Elicitations. Standard:true.plugins.entries.codex.config.codexPlugins.plugins.<key>.enabled: aktiviert einen migrierten Plugin-Eintrag, wenn globalcodexPlugins.enabledebenfalls true ist. Standard:truefür explizite Einträge.plugins.entries.codex.config.codexPlugins.plugins.<key>.marketplaceName: stabile Marketplace-Identität. V1 unterstützt nur"openai-curated".plugins.entries.codex.config.codexPlugins.plugins.<key>.pluginName: stabile Codex-Plugin-Identität aus der Migration, zum Beispiel"google-calendar".plugins.entries.codex.config.codexPlugins.plugins.<key>.allow_destructive_actions: Plugin-spezifische Überschreibung für destruktive Aktionen. Wenn ausgelassen, wird der globale Wertallow_destructive_actionsverwendet.
codexPlugins.enabled ist die globale Aktivierungsdirektive. Explizite Plugin-
Einträge, die durch die Migration geschrieben werden, sind die dauerhafte Menge für Installations- und Reparaturberechtigung.
plugins["*"] wird nicht unterstützt, es gibt keinen install-Schalter, und lokale
marketplacePath-Werte sind absichtlich keine Konfigurationsfelder, da sie
hostspezifisch sind.
app/list-Bereitschaftsprüfungen werden für eine Stunde zwischengespeichert und
bei Veraltung asynchron aktualisiert. Die App-Konfiguration des Codex-Threads wird beim Aufbau der Codex-Harness-
Sitzung berechnet, nicht bei jedem Turn; verwenden Sie /new, /reset oder einen Gateway-
Neustart, nachdem Sie die native Plugin-Konfiguration geändert haben.
plugins.entries.firecrawl.config.webFetch: Firecrawl-Web-Fetch-Provider-Einstellungen.apiKey: Firecrawl-API-Schlüssel (akzeptiert SecretRef). Fällt zurück aufplugins.entries.firecrawl.config.webSearch.apiKey, das Legacy-tools.web.fetch.firecrawl.apiKeyoder die Env-VarFIRECRAWL_API_KEY.baseUrl: Firecrawl-API-Basis-URL (Standard:https://api.firecrawl.dev; selbst gehostete Überschreibungen müssen auf private/interne Endpunkte zielen).onlyMainContent: nur den Hauptinhalt aus Seiten extrahieren (Standard:true).maxAgeMs: maximales Cache-Alter in Millisekunden (Standard:172800000/ 2 Tage).timeoutSeconds: Timeout für Scrape-Anfragen in Sekunden (Standard:60).
plugins.entries.xai.config.xSearch: Einstellungen für xAI X Search (Grok-Websuche).enabled: den X-Search-Provider aktivieren.model: Grok-Modell, das für die Suche verwendet werden soll (z. B."grok-4-1-fast").
plugins.entries.memory-core.config.dreaming: Einstellungen für Memory-Dreaming. Siehe Dreaming für Phasen und Schwellenwerte.enabled: Hauptschalter für Dreaming (Standardfalse).frequency: Cron-Takt für jeden vollständigen Dreaming-Durchlauf (standardmäßig"0 3 * * *").model: optionale Modellüberschreibung für den Dream-Diary-Subagenten. Erfordertplugins.entries.memory-core.subagent.allowModelOverride: true; kombinieren Sie dies mitallowedModels, um Ziele einzuschränken. Fehler wegen nicht verfügbarer Modelle werden einmal mit dem Standardmodell der Sitzung erneut versucht; Trust- oder Allowlist-Fehler fallen nicht stillschweigend zurück.- Phasenrichtlinie und Schwellenwerte sind Implementierungsdetails (keine benutzerseitigen Konfigurationsschlüssel).
- Die vollständige Memory-Konfiguration befindet sich in der Memory-Konfigurationsreferenz:
agents.defaults.memorySearch.*memory.backendmemory.citationsmemory.qmd.*plugins.entries.memory-core.config.dreaming
- Aktivierte Claude-Bundle-Plugins können außerdem eingebettete Pi-Standardwerte aus
settings.jsonbeisteuern; OpenClaw wendet diese als bereinigte Agent-Einstellungen an, nicht als rohe OpenClaw-Konfigurationspatches. plugins.slots.memory: wählen Sie die aktive Memory-Plugin-ID oder"none", um Memory-Plugins zu deaktivieren.plugins.slots.contextEngine: wählen Sie die aktive Kontext-Engine-Plugin-ID; standardmäßig"legacy", sofern Sie keine andere Engine installieren und auswählen.
Zusagen
commitments steuert abgeleitete Nachfass-Memory: OpenClaw kann Check-ins aus Gesprächs-Turns erkennen und sie über Heartbeat-Läufe ausliefern.
commitments.enabled: aktiviert versteckte LLM-Extraktion, Speicherung und Heartbeat-Auslieferung für abgeleitete Nachfasszusagen. Standard:false.commitments.maxPerDay: maximale Anzahl abgeleiteter Nachfasszusagen, die pro Agent-Sitzung innerhalb eines rollierenden Tages ausgeliefert werden. Standard:3.
Browser
evaluateEnabled: falsedeaktiviertact:evaluateundwait --fn.tabCleanupgibt verfolgte Tabs des primären Agenten nach Leerlaufzeit oder wenn eine Sitzung ihr Limit überschreitet wieder frei. Setzen SieidleMinutes: 0odermaxTabsPerSession: 0, um diese einzelnen Bereinigungsmodi zu deaktivieren.ssrfPolicy.dangerouslyAllowPrivateNetworkist deaktiviert, wenn nicht gesetzt, sodass Browser-Navigation standardmäßig strikt bleibt.- Setzen Sie
ssrfPolicy.dangerouslyAllowPrivateNetwork: truenur, wenn Sie Browser-Navigation in privaten Netzwerken absichtlich vertrauen. - Im strikten Modus unterliegen Remote-CDP-Profilendpunkte (
profiles.*.cdpUrl) bei Erreichbarkeits-/Erkennungsprüfungen derselben Blockierung privater Netzwerke. ssrfPolicy.allowPrivateNetworkbleibt als Legacy-Alias unterstützt.- Verwenden Sie im strikten Modus
ssrfPolicy.hostnameAllowlistundssrfPolicy.allowedHostnamesfür explizite Ausnahmen. - Remote-Profile sind nur zum Anhängen vorgesehen (Start/Stopp/Reset deaktiviert).
profiles.*.cdpUrlakzeptierthttp://,https://,ws://undwss://. Verwenden Sie HTTP(S), wenn OpenClaw/json/versionermitteln soll; verwenden Sie WS(S), wenn Ihr Provider Ihnen eine direkte DevTools-WebSocket-URL bereitstellt.remoteCdpTimeoutMsundremoteCdpHandshakeTimeoutMsgelten für Remote- undattachOnly-CDP-Erreichbarkeit sowie Tab-Öffnungsanfragen. Verwaltete loopback- Profile behalten lokale CDP-Standardwerte.- Wenn ein extern verwalteter CDP-Dienst über loopback erreichbar ist, setzen Sie für dieses
Profil
attachOnly: true; andernfalls behandelt OpenClaw den loopback-Port als lokal verwaltetes Browser-Profil und kann lokale Portbesitzfehler melden. existing-session-Profile verwenden Chrome MCP statt CDP und können auf dem ausgewählten Host oder über einen verbundenen Browser-Knoten anhängen.existing-session-Profile könnenuserDataDirsetzen, um ein bestimmtes Chromium-basiertes Browser-Profil wie Brave oder Edge anzusteuern.existing-session-Profile behalten die aktuellen Chrome-MCP-Routenlimits: snapshot-/ref-gesteuerte Aktionen statt CSS-Selektor-Targeting, Ein-Datei-Upload- Hooks, keine Dialog-Timeout-Überschreibungen, keinwait --load networkidleund keinresponsebody, PDF-Export, Download-Interception oder Batch-Aktionen.- Lokal verwaltete
openclaw-Profile weisencdpPortundcdpUrlautomatisch zu; setzen SiecdpUrlnur explizit für Remote-CDP. - Lokal verwaltete Profile können
executablePathsetzen, um das globalebrowser.executablePathfür dieses Profil zu überschreiben. Verwenden Sie dies, um ein Profil in Chrome und ein anderes in Brave auszuführen. - Lokal verwaltete Profile verwenden
browser.localLaunchTimeoutMsfür die HTTP- Erkennung von Chrome CDP nach dem Prozessstart undbrowser.localCdpReadyTimeoutMsfür die CDP-WebSocket-Bereitschaft nach dem Start. Erhöhen Sie diese Werte auf langsameren Hosts, bei denen Chrome erfolgreich startet, Bereitschaftsprüfungen aber mit dem Start konkurrieren. Beide Werte müssen positive Ganzzahlen bis120000ms sein; ungültige Konfigurationswerte werden abgelehnt. - Reihenfolge der automatischen Erkennung: Standardbrowser, wenn Chromium-basiert → Chrome → Brave → Edge → Chromium → Chrome Canary.
browser.executablePathundbrowser.profiles.<name>.executablePathakzeptieren beide~und~/...für Ihr OS-Home-Verzeichnis vor dem Chromium-Start. ProfilbezogenesuserDataDirinexisting-session-Profilen wird ebenfalls mit Tilde expandiert.- Steuerdienst: nur loopback (Port abgeleitet aus
gateway.port, Standard18791). extraArgshängt zusätzliche Start-Flags an den lokalen Chromium-Start an (zum Beispiel--disable-gpu, Fenstergrößen oder Debug-Flags).
UI
seamColor: Akzentfarbe für die Chrome-Elemente der nativen App-UI (Talk-Mode-Bubble-Färbung usw.).assistant: Überschreibung der Control-UI-Identität. Fällt auf die aktive Agent-Identität zurück.
Gateway
Gateway field details
Gateway field details
mode:local(Gateway ausführen) oderremote(mit Remote-Gateway verbinden). Gateway verweigert den Start, sofern nichtlocalfestgelegt ist.port: einzelner multiplexter Port für WS + HTTP. Priorität:--port>OPENCLAW_GATEWAY_PORT>gateway.port>18789.bind:auto,loopback(Standard),lan(0.0.0.0),tailnet(nur Tailscale-IP) odercustom.- Legacy-Bind-Aliasse: Verwenden Sie Bind-Modus-Werte in
gateway.bind(auto,loopback,lan,tailnet,custom), nicht Host-Aliasse (0.0.0.0,127.0.0.1,localhost,::,::1). - Docker-Hinweis: Das standardmäßige
loopback-Binding lauscht im Container auf127.0.0.1. Bei Docker-Bridge-Networking (-p 18789:18789) kommt Traffic aufeth0an, daher ist das Gateway nicht erreichbar. Verwenden Sie--network host, oder setzen Siebind: "lan"(oderbind: "custom"mitcustomBindHost: "0.0.0.0"), um auf allen Interfaces zu lauschen. - Authentifizierung: standardmäßig erforderlich. Nicht-Loopback-Bindings erfordern Gateway-Authentifizierung. Praktisch bedeutet das ein gemeinsames Token/Passwort oder einen identitätsbewussten Reverse Proxy mit
gateway.auth.mode: "trusted-proxy". Der Onboarding-Assistent erzeugt standardmäßig ein Token. - Wenn sowohl
gateway.auth.tokenals auchgateway.auth.passwordkonfiguriert sind (einschließlich SecretRefs), setzen Siegateway.auth.modeexplizit auftokenoderpassword. Start- und Service-Installations-/Reparaturflüsse schlagen fehl, wenn beide konfiguriert sind und kein Modus gesetzt ist. gateway.auth.mode: "none": expliziter Modus ohne Authentifizierung. Nur für vertrauenswürdige lokale local loopback-Setups verwenden; dies wird absichtlich nicht in Onboarding-Eingabeaufforderungen angeboten.gateway.auth.mode: "trusted-proxy": Browser-/Benutzerauthentifizierung an einen identitätsbewussten Reverse Proxy delegieren und Identitäts-Header vongateway.trustedProxiesvertrauen (siehe Trusted-Proxy-Authentifizierung). Dieser Modus erwartet standardmäßig eine Nicht-Loopback-Proxy-Quelle; same-host local loopback-Reverse-Proxys erfordern explizitgateway.auth.trustedProxy.allowLoopback = true. Interne same-host-Aufrufer könnengateway.auth.passwordals lokalen direkten Fallback verwenden;gateway.auth.tokenbleibt mit dem Trusted-Proxy-Modus gegenseitig ausgeschlossen.gateway.auth.allowTailscale: Wenntrue, können Tailscale Serve-Identitäts-Header die Control-UI-/WebSocket-Authentifizierung erfüllen (verifiziert übertailscale whois). HTTP-API-Endpunkte verwenden diese Tailscale-Header-Authentifizierung nicht; sie folgen stattdessen dem normalen HTTP-Authentifizierungsmodus des Gateways. Dieser tokenlose Flow geht davon aus, dass der Gateway-Host vertrauenswürdig ist. Standard isttrue, wenntailscale.mode = "serve".gateway.auth.rateLimit: optionaler Limiter für fehlgeschlagene Authentifizierung. Gilt pro Client-IP und pro Authentifizierungsbereich (shared-secret und device-token werden unabhängig verfolgt). Blockierte Versuche geben429+Retry-Afterzurück.- Im asynchronen Tailscale-Serve-Control-UI-Pfad werden fehlgeschlagene Versuche für dasselbe
{scope, clientIp}vor dem Schreiben des Fehlers serialisiert. Gleichzeitige fehlerhafte Versuche desselben Clients können den Limiter daher bei der zweiten Anfrage auslösen, statt beide als einfache Fehlübereinstimmungen durchlaufen zu lassen. gateway.auth.rateLimit.exemptLoopbackist standardmäßigtrue; setzen Siefalse, wenn Sie localhost-Traffic absichtlich ebenfalls rate-limitieren möchten (für Test-Setups oder strikte Proxy-Deployments).
- Im asynchronen Tailscale-Serve-Control-UI-Pfad werden fehlgeschlagene Versuche für dasselbe
- Browser-Origin-WS-Authentifizierungsversuche werden immer gedrosselt, wobei die Loopback-Ausnahme deaktiviert ist (Defense-in-Depth gegen browserbasierte localhost-Brute-Force-Angriffe).
- Bei local loopback werden diese browserbezogenen Sperren pro normalisiertem
Origin-Wert isoliert, sodass wiederholte Fehlschläge von einem localhost-Origin nicht automatisch einen anderen Origin sperren. tailscale.mode:serve(nur Tailnet, local loopback-Bind) oderfunnel(öffentlich, erfordert Authentifizierung).tailscale.preserveFunnel: Wenntrueundtailscale.mode = "serve", prüft OpenClawtailscale funnel status, bevor Serve beim Start erneut angewendet wird, und überspringt dies, wenn eine extern konfigurierte Funnel-Route bereits den Gateway-Port abdeckt. Standardfalse.controlUi.allowedOrigins: explizite Browser-Origin-Allowlist für Gateway-WebSocket-Verbindungen. Erforderlich, wenn Browser-Clients von Nicht-Loopback-Origins erwartet werden.controlUi.chatMessageMaxWidth: optionale maximale Breite für gruppierte Control-UI-Chatnachrichten. Akzeptiert eingeschränkte CSS-Breitenwerte wie960px,82%,min(1280px, 82%)undcalc(100% - 2rem).controlUi.dangerouslyAllowHostHeaderOriginFallback: gefährlicher Modus, der den Host-Header-Origin-Fallback für Deployments aktiviert, die absichtlich auf Host-Header-Origin-Policy setzen.remote.transport:ssh(Standard) oderdirect(ws/wss). Fürdirectmussremote.urlws://oderwss://sein.OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1: clientseitiger Prozessumgebungs-Break-Glass-Override, der Klartext-ws://zu vertrauenswürdigen Private-Network-IPs erlaubt; Standard bleibt Klartext nur für local loopback. Es gibt keinopenclaw.json-Äquivalent, und Browser-Private-Network-Konfiguration wiebrowser.ssrfPolicy.dangerouslyAllowPrivateNetworkwirkt sich nicht auf Gateway-WebSocket-Clients aus.gateway.remote.token/.passwordsind Zugangsdatenfelder für Remote-Clients. Sie konfigurieren die Gateway-Authentifizierung nicht selbst.gateway.push.apns.relay.baseUrl: Basis-HTTPS-URL für das externe APNs-Relay, das von offiziellen/TestFlight-iOS-Builds verwendet wird, nachdem sie relaygestützte Registrierungen im Gateway veröffentlicht haben. Diese URL muss mit der in den iOS-Build einkompilierten Relay-URL übereinstimmen.gateway.push.apns.relay.timeoutMs: Sende-Timeout vom Gateway zum Relay in Millisekunden. Standard ist10000.- Relaygestützte Registrierungen werden an eine bestimmte Gateway-Identität delegiert. Die gekoppelte iOS-App ruft
gateway.identity.getab, fügt diese Identität in die Relay-Registrierung ein und leitet eine registrierungsbezogene Sendeberechtigung an das Gateway weiter. Ein anderes Gateway kann diese gespeicherte Registrierung nicht wiederverwenden. OPENCLAW_APNS_RELAY_BASE_URL/OPENCLAW_APNS_RELAY_TIMEOUT_MS: temporäre Env-Overrides für die obige Relay-Konfiguration.OPENCLAW_APNS_RELAY_ALLOW_HTTP=true: nur für Entwicklung vorgesehene Ausweichoption für local loopback-HTTP-Relay-URLs. Produktions-Relay-URLs sollten bei HTTPS bleiben.gateway.handshakeTimeoutMs: Pre-Auth-Gateway-WebSocket-Handshake-Timeout in Millisekunden. Standard:15000.OPENCLAW_HANDSHAKE_TIMEOUT_MShat Vorrang, wenn gesetzt. Erhöhen Sie diesen Wert auf ausgelasteten oder leistungsschwachen Hosts, bei denen lokale Clients verbinden können, während sich das Startup-Warmup noch stabilisiert.gateway.channelHealthCheckMinutes: Intervall des Channel-Health-Monitors in Minuten. Setzen Sie0, um Health-Monitor-Neustarts global zu deaktivieren. Standard:5.gateway.channelStaleEventThresholdMinutes: Schwellenwert für veraltete Sockets in Minuten. Halten Sie diesen größer oder gleichgateway.channelHealthCheckMinutes. Standard:30.gateway.channelMaxRestartsPerHour: maximale Health-Monitor-Neustarts pro Channel/Konto in einer gleitenden Stunde. Standard:10.channels.<provider>.healthMonitor.enabled: Opt-out pro Channel für Health-Monitor-Neustarts, während der globale Monitor aktiviert bleibt.channels.<provider>.accounts.<accountId>.healthMonitor.enabled: Override pro Konto für Multi-Account-Channels. Wenn gesetzt, hat er Vorrang vor dem Channel-Level-Override.- Lokale Gateway-Aufrufpfade können
gateway.remote.*nur als Fallback verwenden, wenngateway.auth.*nicht gesetzt ist. - Wenn
gateway.auth.token/gateway.auth.passwordexplizit über SecretRef konfiguriert und nicht auflösbar ist, schlägt die Auflösung geschlossen fehl (keine Maskierung durch Remote-Fallback). trustedProxies: Reverse-Proxy-IPs, die TLS terminieren oder Forwarded-Client-Header injizieren. Listen Sie nur Proxys auf, die Sie kontrollieren. Loopback-Einträge sind weiterhin gültig für same-host Proxy-/Local-Detection-Setups (zum Beispiel Tailscale Serve oder ein lokaler Reverse Proxy), machen local loopback-Anfragen jedoch nicht fürgateway.auth.mode: "trusted-proxy"zulässig.allowRealIpFallback: Wenntrue, akzeptiert das GatewayX-Real-IP, fallsX-Forwarded-Forfehlt. Standardfalsefür Fail-Closed-Verhalten.gateway.nodes.pairing.autoApproveCidrs: optionale CIDR/IP-Allowlist für die automatische Genehmigung erstmaliger Node-Device-Kopplung ohne angeforderte Scopes. Sie ist deaktiviert, wenn nicht gesetzt. Dies genehmigt keine Operator-/Browser-/Control-UI-/WebChat-Kopplung automatisch und genehmigt auch keine Rollen-, Scope-, Metadaten- oder Public-Key-Upgrades automatisch.gateway.nodes.allowCommands/gateway.nodes.denyCommands: globale Allow-/Deny-Formung für deklarierte Node-Befehle nach Kopplung und Plattform-Allowlist-Auswertung. Verwenden SieallowCommands, um gefährliche Node-Befehle wiecamera.snap,camera.clipundscreen.recordexplizit zuzulassen;denyCommandsentfernt einen Befehl, selbst wenn ein Plattformstandard oder eine explizite Zulassung ihn sonst einschließen würde. Nachdem ein Node seine deklarierte Befehlsliste geändert hat, lehnen Sie diese Gerätekopplung ab und genehmigen Sie sie erneut, damit das Gateway den aktualisierten Befehls-Snapshot speichert.gateway.tools.deny: zusätzliche Tool-Namen, die für HTTPPOST /tools/invokeblockiert sind (erweitert die Standard-Deny-Liste).gateway.tools.allow: Tool-Namen aus der Standard-HTTP-Deny-Liste entfernen.
OpenAI-kompatible Endpunkte
- Chat Completions: standardmäßig deaktiviert. Aktivieren mit
gateway.http.endpoints.chatCompletions.enabled: true. - Responses API:
gateway.http.endpoints.responses.enabled. - Responses-URL-Eingabehärtung:
gateway.http.endpoints.responses.maxUrlPartsgateway.http.endpoints.responses.files.urlAllowlistgateway.http.endpoints.responses.images.urlAllowlistLeere Allowlists werden als nicht gesetzt behandelt; verwenden Siegateway.http.endpoints.responses.files.allowUrl=falseund/odergateway.http.endpoints.responses.images.allowUrl=false, um URL-Abrufe zu deaktivieren.
- Optionaler Response-Härtungs-Header:
gateway.http.securityHeaders.strictTransportSecurity(nur für HTTPS-Origins setzen, die Sie kontrollieren; siehe Trusted-Proxy-Authentifizierung)
Multi-Instanz-Isolierung
Führen Sie mehrere Gateways auf einem Host mit eindeutigen Ports und State-Verzeichnissen aus:--dev (verwendet ~/.openclaw-dev + Port 19001), --profile <name> (verwendet ~/.openclaw-<name>).
Siehe Mehrere Gateways.
gateway.tls
enabled: aktiviert TLS-Terminierung am Gateway-Listener (HTTPS/WSS) (Standard:false).autoGenerate: erzeugt automatisch ein lokales selbstsigniertes Zertifikat/Schlüsselpaar, wenn keine expliziten Dateien konfiguriert sind; nur für lokale/Dev-Nutzung.certPath: Dateisystempfad zur TLS-Zertifikatsdatei.keyPath: Dateisystempfad zur privaten TLS-Schlüsseldatei; Berechtigungen restriktiv halten.caPath: optionaler CA-Bundle-Pfad für Client-Verifizierung oder benutzerdefinierte Trust Chains.
gateway.reload
mode: steuert, wie Konfigurationsänderungen zur Laufzeit angewendet werden."off": Live-Änderungen ignorieren; Änderungen erfordern einen expliziten Neustart."restart": Gateway-Prozess bei Konfigurationsänderung immer neu starten."hot": Änderungen im Prozess ohne Neustart anwenden."hybrid"(Standard): zuerst Hot Reload versuchen; bei Bedarf auf Neustart zurückfallen.
debounceMs: Debounce-Fenster in ms, bevor Konfigurationsänderungen angewendet werden (nichtnegative ganze Zahl).deferralTimeoutMs: optionale maximale Wartezeit in ms für laufende Operationen, bevor ein Neustart oder Channel-Hot-Reload erzwungen wird. Weglassen, um die standardmäßige begrenzte Wartezeit (300000) zu verwenden; auf0setzen, um unbegrenzt zu warten und regelmäßig Warnungen zu noch ausstehenden Vorgängen zu protokollieren.
Hooks
Authorization: Bearer <token> oder x-openclaw-token: <token>.
Hook-Tokens in Query-Strings werden abgelehnt.
Validierungs- und Sicherheitshinweise:
hooks.enabled=trueerfordert ein nicht leereshooks.token.hooks.tokenmuss sich vongateway.auth.tokenunterscheiden; die Wiederverwendung des Gateway-Tokens wird abgelehnt.hooks.pathdarf nicht/sein; verwenden Sie einen dedizierten Unterpfad wie/hooks.- Wenn
hooks.allowRequestSessionKey=trueist, beschränken Siehooks.allowedSessionKeyPrefixes(zum Beispiel["hook:"]). - Wenn eine Zuordnung oder Voreinstellung einen vorlagenbasierten
sessionKeyverwendet, setzen Siehooks.allowedSessionKeyPrefixesundhooks.allowRequestSessionKey=true. Statische Zuordnungsschlüssel erfordern diese Aktivierung nicht.
POST /hooks/wake→{ text, mode?: "now"|"next-heartbeat" }POST /hooks/agent→{ message, name?, agentId?, sessionKey?, wakeMode?, deliver?, channel?, to?, model?, thinking?, timeoutSeconds? }sessionKeyaus der Anfrage-Payload wird nur akzeptiert, wennhooks.allowRequestSessionKey=trueist (Standard:false).
POST /hooks/<name>→ wird überhooks.mappingsaufgelöst- Durch Vorlagen gerenderte Zuordnungswerte für
sessionKeywerden als extern bereitgestellt behandelt und erfordern ebenfallshooks.allowRequestSessionKey=true.
- Durch Vorlagen gerenderte Zuordnungswerte für
Zuordnungsdetails
Zuordnungsdetails
match.pathentspricht dem Unterpfad nach/hooks(z. B./hooks/gmail→gmail).match.sourceentspricht einem Payload-Feld für generische Pfade.- Vorlagen wie
{{messages[0].subject}}lesen aus der Payload. transformkann auf ein JS/TS-Modul verweisen, das eine Hook-Aktion zurückgibt.transform.modulemuss ein relativer Pfad sein und innerhalb vonhooks.transformsDirbleiben (absolute Pfade und Traversal werden abgelehnt).- Behalten Sie
hooks.transformsDirunter~/.openclaw/hooks/transforms; Workspace-Skills-Verzeichnisse werden abgelehnt. Wennopenclaw doctordiesen Pfad als ungültig meldet, verschieben Sie das Transform-Modul in das Hooks-Transform-Verzeichnis oder entfernen Siehooks.transformsDir.
agentIdleitet an einen bestimmten Agenten weiter; unbekannte IDs fallen auf den Standard zurück.allowedAgentIds: beschränkt explizites Routing (*oder ausgelassen = alle erlauben,[]= alle verweigern).defaultSessionKey: optionaler fester Sitzungsschlüssel für Hook-Agent-Ausführungen ohne explizitensessionKey.allowRequestSessionKey: erlaubt Aufrufern von/hooks/agentund vorlagengesteuerten Zuordnungssitzungsschlüsseln,sessionKeyzu setzen (Standard:false).allowedSessionKeyPrefixes: optionale Präfix-Allowlist für explizitesessionKey-Werte (Anfrage + Zuordnung), z. B.["hook:"]. Sie wird erforderlich, wenn eine Zuordnung oder Voreinstellung einen vorlagenbasiertensessionKeyverwendet.deliver: truesendet die finale Antwort an einen Kanal;channelist standardmäßiglast.modelüberschreibt das LLM für diese Hook-Ausführung (muss erlaubt sein, wenn der Modellkatalog gesetzt ist).
Gmail-Integration
- Die integrierte Gmail-Voreinstellung verwendet
sessionKey: "hook:gmail:{{messages[0].id}}". - Wenn Sie dieses Routing pro Nachricht beibehalten, setzen Sie
hooks.allowRequestSessionKey: trueund beschränken Siehooks.allowedSessionKeyPrefixesso, dass es zum Gmail-Namespace passt, zum Beispiel["hook:", "hook:gmail:"]. - Wenn Sie
hooks.allowRequestSessionKey: falsebenötigen, überschreiben Sie die Voreinstellung mit einem statischensessionKeystatt mit dem vorlagenbasierten Standard.
- Gateway startet beim Booten automatisch
gog gmail watch serve, wenn es konfiguriert ist. Setzen SieOPENCLAW_SKIP_GMAIL_WATCHER=1, um dies zu deaktivieren. - Führen Sie kein separates
gog gmail watch serveparallel zum Gateway aus.
Canvas-Plugin-Host
- Stellt agentenbearbeitbares HTML/CSS/JS und A2UI per HTTP unter dem Gateway-Port bereit:
http://<gateway-host>:<gateway.port>/__openclaw__/canvas/http://<gateway-host>:<gateway.port>/__openclaw__/a2ui/
- Nur lokal: Behalten Sie
gateway.bind: "loopback"bei (Standard). - Nicht-Loopback-Bindings: Canvas-Routen erfordern Gateway-Authentifizierung (Token/Passwort/vertrauenswürdiger Proxy), genau wie andere Gateway-HTTP-Oberflächen.
- Node-WebViews senden in der Regel keine Auth-Header; nachdem ein Node gekoppelt und verbunden ist, gibt der Gateway node-spezifische Capability-URLs für den Canvas-/A2UI-Zugriff bekannt.
- Capability-URLs sind an die aktive Node-WS-Sitzung gebunden und laufen schnell ab. IP-basierter Fallback wird nicht verwendet.
- Fügt den bereitgestellten HTML-Dateien einen Live-Reload-Client hinzu.
- Erstellt automatisch eine Starterdatei
index.html, wenn das Verzeichnis leer ist. - Stellt A2UI außerdem unter
/__openclaw__/a2ui/bereit. - Änderungen erfordern einen Neustart des Gateway.
- Deaktivieren Sie Live-Reload für große Verzeichnisse oder bei
EMFILE-Fehlern.
Discovery
mDNS (Bonjour)
minimal(Standard, wenn das gebündeltebonjour-Plugin aktiviert ist): lässtcliPath+sshPortaus TXT-Records weg.full: schließtcliPath+sshPortein; LAN-Multicast-Ankündigung erfordert weiterhin, dass das gebündeltebonjour-Plugin aktiviert ist.off: unterdrückt LAN-Multicast-Ankündigung, ohne die Plugin-Aktivierung zu ändern.- Das gebündelte
bonjour-Plugin startet automatisch auf macOS-Hosts und ist auf Linux, Windows und containerisierten Gateway-Bereitstellungen optional aktivierbar. - Der Hostname ist standardmäßig der System-Hostname, wenn er ein gültiges DNS-Label ist; andernfalls wird
openclawverwendet. Überschreiben Sie ihn mitOPENCLAW_MDNS_HOSTNAME.
Weitbereich (DNS-SD)
~/.openclaw/dns/. Für netzwerkübergreifende Discovery kombinieren Sie dies mit einem DNS-Server (CoreDNS empfohlen) + Tailscale Split-DNS.
Einrichtung: openclaw dns setup --apply.
Umgebung
env (Inline-Umgebungsvariablen)
- Inline-Umgebungsvariablen werden nur angewendet, wenn in der Prozessumgebung der Schlüssel fehlt.
.env-Dateien: CWD.env+~/.openclaw/.env(keine davon überschreibt vorhandene Variablen).shellEnv: importiert fehlende erwartete Schlüssel aus Ihrem Login-Shell-Profil.- Vollständige Vorrangregeln finden Sie unter Umgebung.
Umgebungsvariablen-Ersetzung
Referenzieren Sie Umgebungsvariablen in beliebigen Konfigurationszeichenfolgen mit${VAR_NAME}:
- Nur Namen in Großbuchstaben werden abgeglichen:
[A-Z_][A-Z0-9_]*. - Fehlende/leere Variablen lösen beim Laden der Konfiguration einen Fehler aus.
- Mit
$${VAR}für ein literales${VAR}escapen. - Funktioniert mit
$include.
Secrets
Secret-Referenzen sind additiv: Klartextwerte funktionieren weiterhin.SecretRef
Verwenden Sie eine Objektform:
provider-Muster:^[a-z][a-z0-9_-]{0,63}$source: "env"-id-Muster:^[A-Z][A-Z0-9_]{0,127}$source: "file"-id: absoluter JSON-Pointer (zum Beispiel"/providers/openai/apiKey")source: "exec"-id-Muster:^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$source: "exec"-ids dürfen keine durch Schrägstriche getrennten Pfadsegmente.oder..enthalten (zum Beispiel wirda/../babgelehnt)
Unterstützte Zugangsdatenoberfläche
- Kanonische Matrix: SecretRef-Zugangsdatenoberfläche
secrets applyzielt auf unterstützteopenclaw.json-Zugangsdatenpfade ab.auth-profiles.json-Referenzen sind in Runtime-Auflösung und Audit-Abdeckung enthalten.
Konfiguration der Secret-Provider
- Der
file-Provider unterstütztmode: "json"undmode: "singleValue"(idmuss im singleValue-Modus"value"sein). - Datei- und exec-Provider-Pfade schlagen geschlossen fehl, wenn die Windows-ACL-Verifizierung nicht verfügbar ist. Setzen Sie
allowInsecurePath: truenur für vertrauenswürdige Pfade, die nicht verifiziert werden können. - Der
exec-Provider erfordert einen absolutencommand-Pfad und verwendet Protokoll-Payloads über stdin/stdout. - Standardmäßig werden Symlink-Befehlspfade abgelehnt. Setzen Sie
allowSymlinkCommand: true, um Symlink-Pfade zuzulassen, während der aufgelöste Zielpfad validiert wird. - Wenn
trustedDirskonfiguriert ist, wird die Prüfung vertrauenswürdiger Verzeichnisse auf den aufgelösten Zielpfad angewendet. - Die
exec-Kindumgebung ist standardmäßig minimal; übergeben Sie erforderliche Variablen explizit mitpassEnv. - Secret-Referenzen werden zur Aktivierungszeit in einen In-Memory-Snapshot aufgelöst; anschließend lesen Anfragepfade nur den Snapshot.
- Während der Aktivierung wird eine Filterung aktiver Oberflächen angewendet: Nicht aufgelöste Referenzen auf aktivierten Oberflächen lassen Start/Neuladen fehlschlagen, während inaktive Oberflächen mit Diagnosen übersprungen werden.
Auth-Speicher
- Agent-spezifische Profile werden unter
<agentDir>/auth-profiles.jsongespeichert. auth-profiles.jsonunterstützt Referenzen auf Wertebene (keyReffürapi_key,tokenReffürtoken) für statische Zugangsdatenmodi.- Legacy-flache
auth-profiles.json-Maps wie{ "provider": { "apiKey": "..." } }sind kein Runtime-Format;openclaw doctor --fixschreibt sie mit einem.legacy-flat.*.bak-Backup in kanonischeprovider:default-API-Schlüsselprofile um. - OAuth-Modus-Profile (
auth.profiles.<id>.mode = "oauth") unterstützen keine SecretRef-gestützten Auth-Profil-Zugangsdaten. - Statische Runtime-Zugangsdaten stammen aus im Arbeitsspeicher aufgelösten Snapshots; alte statische
auth.json-Einträge werden bereinigt, wenn sie gefunden werden. - Legacy-OAuth-Importe aus
~/.openclaw/credentials/oauth.json. - Siehe OAuth.
- Secrets-Runtime-Verhalten und
audit/configure/apply-Werkzeuge: Secrets-Verwaltung.
auth.cooldowns
billingBackoffHours: Basis-Backoff in Stunden, wenn ein Profil aufgrund echter Abrechnungs-/Guthaben-nicht-ausreichend-Fehler fehlschlägt (Standard:5). Expliziter Abrechnungstext kann auch bei401-/403-Antworten hier landen, aber Provider-spezifische Text- Matcher bleiben auf den Provider beschränkt, dem sie gehören (zum Beispiel OpenRouterKey limit exceeded). Wiederholbare HTTP-402-Meldungen zum Nutzungsfenster oder zu Ausgabenlimits für Organisation/Workspace bleiben stattdessen imrate_limit-Pfad.billingBackoffHoursByProvider: optionale Overrides pro Provider für Abrechnungs-Backoff-Stunden.billingMaxHours: Obergrenze in Stunden für das exponentielle Wachstum des Abrechnungs-Backoffs (Standard:24).authPermanentBackoffMinutes: Basis-Backoff in Minuten für hochverlässlicheauth_permanent-Fehler (Standard:10).authPermanentMaxMinutes: Obergrenze in Minuten für dasauth_permanent-Backoff-Wachstum (Standard:60).failureWindowHours: rollierendes Zeitfenster in Stunden, das für Backoff-Zähler verwendet wird (Standard:24).overloadedProfileRotations: maximale Rotationen von Auth-Profilen desselben Providers bei Überlastungsfehlern, bevor auf Modell-Fallback gewechselt wird (Standard:1). Provider-Auslastungsformen wieModelNotReadyExceptionlanden hier.overloadedBackoffMs: feste Verzögerung vor dem erneuten Versuch einer Rotation für überlasteten Provider/überlastetes Profil (Standard:0).rateLimitedProfileRotations: maximale Rotationen von Auth-Profilen desselben Providers bei Rate-Limit-Fehlern, bevor auf Modell-Fallback gewechselt wird (Standard:1). Dieser Rate-Limit-Bucket umfasst Provider-geprägten Text wieToo many concurrent requests,ThrottlingException,concurrency limit reached,workers_ai ... quota limit exceededundresource exhausted.
Protokollierung
- Standard-Logdatei:
/tmp/openclaw/openclaw-YYYY-MM-DD.log. - Setzen Sie
logging.filefür einen stabilen Pfad. consoleLevelwird bei--verboseaufdebugangehoben.maxFileBytes: maximale Größe der aktiven Logdatei in Byte vor der Rotation (positive Ganzzahl; Standard:104857600= 100 MB). OpenClaw behält bis zu fünf nummerierte Archive neben der aktiven Datei.redactSensitive/redactPatterns: Best-Effort-Maskierung für Konsolenausgabe, Datei-Logs, OTLP-Logdatensätze und persistierten Sitzungstranskripttext.redactSensitive: "off"deaktiviert nur diese allgemeine Log-/Transkript-Richtlinie; UI-/Tool-/Diagnose-Sicherheitsflächen redigieren Geheimnisse weiterhin vor der Ausgabe.
Diagnose
enabled: Hauptschalter für Instrumentierungsausgabe (Standard:true).flags: Array von Flag-Strings, die gezielte Logausgabe aktivieren (unterstützt Wildcards wie"telegram.*"oder"*").stuckSessionWarnMs: Altersschwelle ohne Fortschritt in ms, um lang laufende Verarbeitungssitzungen alssession.long_running,session.stalledodersession.stuckzu klassifizieren. Antwort, Tool, Status, Block und ACP-Fortschritt setzen den Timer zurück; wiederholtesession.stuck-Diagnosen verwenden Backoff, solange unverändert.stuckSessionAbortMs: Altersschwelle ohne Fortschritt in ms, bevor geeignete angehaltene aktive Arbeit zur Wiederherstellung abbruch-entleert werden darf. Wenn nicht gesetzt, verwendet OpenClaw das sicherere erweiterte Fenster für eingebettete Ausführung von mindestens 10 Minuten und 5xstuckSessionWarnMs.otel.enabled: aktiviert die OpenTelemetry-Export-Pipeline (Standard:false). Die vollständige Konfiguration, den Signalkatalog und das Datenschutzmodell finden Sie unter OpenTelemetry-Export.otel.endpoint: Collector-URL für OTel-Export.otel.tracesEndpoint/otel.metricsEndpoint/otel.logsEndpoint: optionale signalspezifische OTLP-Endpunkte. Wenn gesetzt, überschreiben sieotel.endpointnur für dieses Signal.otel.protocol:"http/protobuf"(Standard) oder"grpc".otel.headers: zusätzliche HTTP-/gRPC-Metadaten-Header, die mit OTel-Exportanforderungen gesendet werden.otel.serviceName: Dienstname für Ressourcenattribute.otel.traces/otel.metrics/otel.logs: Trace-, Metrik- oder Logexport aktivieren.otel.sampleRate: Trace-Sampling-Rate0-1.otel.flushIntervalMs: periodisches Telemetrie-Flush-Intervall in ms.otel.captureContent: Opt-in-Erfassung von Rohinhalten für OTEL-Span-Attribute. Standardmäßig deaktiviert. Booleschestrueerfasst Nicht-System-Nachrichten-/Tool-Inhalte; die Objektform lässt SieinputMessages,outputMessages,toolInputs,toolOutputsundsystemPromptexplizit aktivieren.OTEL_SEMCONV_STABILITY_OPT_IN=gen_ai_latest_experimental: Umgebungsumschalter für neueste experimentelle GenAI-Span-Provider-Attribute. Standardmäßig behalten Spans aus Kompatibilitätsgründen das Legacy-Attributgen_ai.system; GenAI-Metriken verwenden begrenzte semantische Attribute.OPENCLAW_OTEL_PRELOADED=1: Umgebungsumschalter für Hosts, die bereits ein globales OpenTelemetry-SDK registriert haben. OpenClaw überspringt dann Start/Shutdown des Plugin-eigenen SDK, während Diagnose-Listener aktiv bleiben.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT,OTEL_EXPORTER_OTLP_METRICS_ENDPOINTundOTEL_EXPORTER_OTLP_LOGS_ENDPOINT: signalspezifische Endpunkt-Umgebungsvariablen, die verwendet werden, wenn der passende Konfigurationsschlüssel nicht gesetzt ist.cacheTrace.enabled: Cache-Trace-Snapshots für eingebettete Ausführungen protokollieren (Standard:false).cacheTrace.filePath: Ausgabepfad für Cache-Trace-JSONL (Standard:$OPENCLAW_STATE_DIR/logs/cache-trace.jsonl).cacheTrace.includeMessages/includePrompt/includeSystem: steuern, was in der Cache-Trace-Ausgabe enthalten ist (alle Standard:true).
Update
channel: Release-Kanal für npm-/git-Installationen -"stable","beta"oder"dev".checkOnStart: beim Start des Gateways auf npm-Updates prüfen (Standard:true).auto.enabled: automatische Hintergrundaktualisierung für Paketinstallationen aktivieren (Standard:false).auto.stableDelayHours: Mindestverzögerung in Stunden vor automatischer Anwendung im Stable-Kanal (Standard:6; Maximum:168).auto.stableJitterHours: zusätzliches Ausrollfenster für den Stable-Kanal in Stunden (Standard:12; Maximum:168).auto.betaCheckIntervalHours: wie oft Prüfungen im Beta-Kanal in Stunden ausgeführt werden (Standard:1; Maximum:24).
ACP
enabled: globales ACP-Feature-Gate (Standard:true; setzen Siefalse, um ACP-Dispatch- und Spawn-Bedienelemente auszublenden).dispatch.enabled: unabhängiges Gate für ACP-Sitzungs-Turn-Dispatch (Standard:true). Setzen Siefalse, um ACP-Befehle verfügbar zu halten, aber die Ausführung zu blockieren.backend: Standard-ACP-Runtime-Backend-ID (muss mit einem registrierten ACP-Runtime-Plugin übereinstimmen). Installieren Sie zuerst das Backend-Plugin, und wennplugins.allowgesetzt ist, nehmen Sie die Backend-Plugin-ID auf (zum Beispielacpx), sonst wird das ACP-Backend nicht geladen.defaultAgent: Fallback-ACP-Ziel-Agent-ID, wenn Spawns kein explizites Ziel angeben.allowedAgents: Allowlist von Agent-IDs, die für ACP-Runtime-Sitzungen zulässig sind; leer bedeutet keine zusätzliche Einschränkung.maxConcurrentSessions: maximale Anzahl gleichzeitig aktiver ACP-Sitzungen.stream.coalesceIdleMs: Idle-Flush-Fenster in ms für gestreamten Text.stream.maxChunkChars: maximale Chunk-Größe vor dem Aufteilen der gestreamten Blockprojektion.stream.repeatSuppression: wiederholte Status-/Tool-Zeilen pro Turn unterdrücken (Standard:true).stream.deliveryMode:"live"streamt inkrementell;"final_only"puffert bis zu terminalen Turn-Ereignissen.stream.hiddenBoundarySeparator: Trennzeichen vor sichtbarem Text nach verborgenen Tool-Ereignissen (Standard:"paragraph").stream.maxOutputChars: maximale Zeichenanzahl der Assistentenausgabe, die pro ACP-Turn projiziert wird.stream.maxSessionUpdateChars: maximale Zeichenanzahl für projizierte ACP-Status-/Update-Zeilen.stream.tagVisibility: Datensatz von Tag-Namen zu booleschen Sichtbarkeits-Overrides für gestreamte Ereignisse.runtime.ttlMinutes: Idle-TTL in Minuten für ACP-Sitzungs-Worker vor möglicher Bereinigung.runtime.installCommand: optionaler Installationsbefehl, der beim Bootstrapping einer ACP-Runtime-Umgebung ausgeführt wird.
CLI
cli.banner.taglineModesteuert den Stil der Banner-Tagline:"random"(Standard): rotierende humorvolle/saisonale Taglines."default": feste neutrale Tagline (All your chats, one OpenClaw.)."off": kein Tagline-Text (Banner-Titel/-Version werden weiterhin angezeigt).
- Um das gesamte Banner auszublenden (nicht nur Taglines), setzen Sie die Umgebungsvariable
OPENCLAW_HIDE_BANNER=1.
Assistent
Metadaten, die von CLI-geführten Einrichtungsabläufen geschrieben werden (onboard, configure, doctor):
Identität
Sieheagents.list-Identitätsfelder unter Agent-Standardwerte.
Bridge (Legacy, entfernt)
Aktuelle Builds enthalten die TCP-Bridge nicht mehr. Nodes verbinden sich über den Gateway-WebSocket.bridge.*-Schlüssel sind nicht mehr Teil des Konfigurationsschemas (Validierung schlägt fehl, bis sie entfernt werden; openclaw doctor --fix kann unbekannte Schlüssel entfernen).
Legacy-Bridge-Konfiguration (historische Referenz)
Legacy-Bridge-Konfiguration (historische Referenz)
Cron
sessionRetention: wie lange abgeschlossene isolierte Cron-Laufsitzungen aufbewahrt werden, bevor sie aussessions.jsonentfernt werden. Steuert auch die Bereinigung archivierter gelöschter Cron-Transkripte. Standard:24h; auffalsesetzen, um dies zu deaktivieren.runLog.maxBytes: maximale Größe pro Laufprotokolldatei (cron/runs/<jobId>.jsonl) vor dem Entfernen. Standard:2_000_000Byte.runLog.keepLines: neueste Zeilen, die beibehalten werden, wenn das Entfernen des Laufprotokolls ausgelöst wird. Standard:2000.webhookToken: Bearer-Token, der für die Cron-Webhook-POST-Zustellung (delivery.mode = "webhook") verwendet wird; wenn er ausgelassen wird, wird kein Auth-Header gesendet.webhook: veraltete Legacy-Fallback-Webhook-URL (http/https), die nur für gespeicherte Jobs verwendet wird, die nochnotify: truehaben.
cron.retry
maxAttempts: maximale Wiederholungen für einmalige Jobs bei transienten Fehlern (Standard:3; Bereich:0-10).backoffMs: Array von Backoff-Verzögerungen in ms für jeden Wiederholungsversuch (Standard:[30000, 60000, 300000]; 1-10 Einträge).retryOn: Fehlertypen, die Wiederholungen auslösen -"rate_limit","overloaded","network","timeout","server_error". Weglassen, um alle transienten Typen zu wiederholen.
cron.failureAlert
enabled: Fehleralarme für Cron-Jobs aktivieren (Standard:false).after: aufeinanderfolgende Fehler, bevor ein Alarm ausgelöst wird (positive Ganzzahl, min.:1).cooldownMs: Mindestanzahl von Millisekunden zwischen wiederholten Alarmen für denselben Job (nicht negative Ganzzahl).includeSkipped: aufeinanderfolgende übersprungene Läufe auf den Alarmschwellenwert anrechnen (Standard:false). Übersprungene Läufe werden separat verfolgt und beeinflussen den Backoff bei Ausführungsfehlern nicht.mode: Zustellmodus -"announce"sendet über eine Kanalnachricht;"webhook"postet an den konfigurierten Webhook.accountId: optionale Konto- oder Kanal-ID zur Eingrenzung der Alarmzustellung.
cron.failureDestination
- Standardziel für Cron-Fehlerbenachrichtigungen über alle Jobs hinweg.
mode:"announce"oder"webhook"; standardmäßig"announce", wenn genügend Zieldaten vorhanden sind.channel: Kanalüberschreibung für die Announce-Zustellung."last"verwendet den zuletzt bekannten Zustellkanal wieder.to: explizites Announce-Ziel oder Webhook-URL. Für den Webhook-Modus erforderlich.accountId: optionale Kontoüberschreibung für die Zustellung.delivery.failureDestinationpro Job überschreibt diesen globalen Standard.- Wenn weder ein globales noch ein jobspezifisches Fehlerziel festgelegt ist, fallen Jobs, die bereits über
announcezustellen, bei Fehlern auf dieses primäre Announce-Ziel zurück. delivery.failureDestinationwird nur für Jobs mitsessionTarget="isolated"unterstützt, es sei denn, das primäredelivery.modedes Jobs ist"webhook".
Medienmodell-Template-Variablen
Template-Platzhalter, die intools.media.models[].args erweitert werden:
| Variable | Beschreibung |
|---|---|
{{Body}} | Vollständiger eingehender Nachrichtentext |
{{RawBody}} | Rohtext (ohne Verlaufs-/Absender-Wrapper) |
{{BodyStripped}} | Text mit entfernten Gruppenerwähnungen |
{{From}} | Absenderkennung |
{{To}} | Zielkennung |
{{MessageSid}} | Kanalnachrichten-ID |
{{SessionId}} | Aktuelle Sitzungs-UUID |
{{IsNewSession}} | "true", wenn eine neue Sitzung erstellt wurde |
{{MediaUrl}} | Eingehende Medien-Pseudo-URL |
{{MediaPath}} | Lokaler Medienpfad |
{{MediaType}} | Medientyp (Bild/Audio/Dokument/…) |
{{Transcript}} | Audiotranskript |
{{Prompt}} | Aufgelöster Medien-Prompt für CLI-Einträge |
{{MaxChars}} | Aufgelöste maximale Ausgabezeichen für CLI-Einträge |
{{ChatType}} | "direct" oder "group" |
{{GroupSubject}} | Gruppenthema (nach bestem Bemühen) |
{{GroupMembers}} | Vorschau der Gruppenmitglieder (nach bestem Bemühen) |
{{SenderName}} | Anzeigename des Absenders (nach bestem Bemühen) |
{{SenderE164}} | Telefonnummer des Absenders (nach bestem Bemühen) |
{{Provider}} | Provider-Hinweis (whatsapp, telegram, discord usw.) |
Config-Includes ($include)
Config auf mehrere Dateien aufteilen:
- Einzelne Datei: ersetzt das enthaltende Objekt.
- Array von Dateien: wird in der Reihenfolge tief zusammengeführt (spätere überschreiben frühere).
- Geschwisterschlüssel: werden nach Includes zusammengeführt (überschreiben enthaltene Werte).
- Verschachtelte Includes: bis zu 10 Ebenen tief.
- Pfade: werden relativ zur einschließenden Datei aufgelöst, müssen aber innerhalb des obersten Config-Verzeichnisses (
dirnamevonopenclaw.json) bleiben. Absolute/../-Formen sind nur erlaubt, wenn sie weiterhin innerhalb dieser Grenze aufgelöst werden. - Schreibvorgänge im Besitz von OpenClaw, die nur einen obersten Abschnitt ändern, der durch ein Single-File-Include gestützt wird, schreiben in diese eingeschlossene Datei durch. Beispielsweise aktualisiert
plugins installplugins: { $include: "./plugins.json5" }inplugins.json5und lässtopenclaw.jsonunverändert. - Root-Includes, Include-Arrays und Includes mit Geschwisterüberschreibungen sind für Schreibvorgänge im Besitz von OpenClaw schreibgeschützt; diese Schreibvorgänge schlagen geschlossen fehl, statt die Config zu verflachen.
- Fehler: klare Meldungen für fehlende Dateien, Parse-Fehler und zirkuläre Includes.
Verwandt: Konfiguration · Konfigurationsbeispiele · Doctor