Tools (OpenClaw)
OpenClaw stellt erstklassige Agent-Tools für Browser, Canvas, Nodes und Cron bereit.
Diese ersetzen die alten openclaw-* Skills: Die Tools sind typisiert, kein Shelling nötig,
und der Agent sollte sie direkt verwenden.
Tools deaktivieren
Du kannst Tools global über tools.allow / tools.deny in openclaw.json
erlauben oder sperren (Deny gewinnt). Das verhindert, dass gesperrte Tools an Model-Provider gesendet werden.
{
tools: { deny: ["browser"] },
}
Hinweise:
- Matching ist case-insensitive.
*-Wildcards werden unterstützt ("*"bedeutet alle Tools).- Wenn
tools.allownur unbekannte oder nicht geladene Plugin-Tool-Namen referenziert, loggt OpenClaw eine Warnung und ignoriert die Allowlist, damit Core-Tools verfügbar bleiben.
Tool-Profile (Basis-Allowlist)
tools.profile legt eine Basis-Tool-Allowlist fest, bevor tools.allow/tools.deny greifen.
Pro-Agent-Override: agents.list[].tools.profile.
Profile:
minimal: nursession_statuscoding:group:fs,group:runtime,group:sessions,group:memory,imagemessaging:group:messaging,sessions_list,sessions_history,sessions_send,session_statusfull: keine Einschränkung (wie nicht gesetzt)
Beispiel (standardmäßig nur Messaging, zusätzlich Slack + Discord erlaubt):
{
tools: {
profile: "messaging",
allow: ["slack", "discord"],
},
}
Beispiel (Coding-Profil, aber exec/process überall sperren):
{
tools: {
profile: "coding",
deny: ["group:runtime"],
},
}
Beispiel (globales Coding-Profil, Messaging-only Support-Agent):
{
tools: { profile: "coding" },
agents: {
list: [
{
id: "support",
tools: { profile: "messaging", allow: ["slack"] },
},
],
},
}
Provider-spezifische Tool-Policy
Verwende tools.byProvider, um Tools für bestimmte Provider
(oder ein einzelnes provider/model) weiter einzuschränken, ohne deine globalen Defaults zu ändern.
Pro-Agent-Override: agents.list[].tools.byProvider.
Dies wird nach dem Basis-Tool-Profil und vor den Allow/Deny-Listen angewendet,
kann also nur das Tool-Set verkleinern.
Provider-Keys akzeptieren entweder provider (z.B. google-antigravity) oder
provider/model (z.B. openai/gpt-5.2).
Beispiel (globales Coding-Profil beibehalten, aber minimale Tools für Google Antigravity):
{
tools: {
profile: "coding",
byProvider: {
"google-antigravity": { profile: "minimal" },
},
},
}
Beispiel (provider/model-spezifische Allowlist für einen instabilen Endpoint):
{
tools: {
allow: ["group:fs", "group:runtime", "sessions_list"],
byProvider: {
"openai/gpt-5.2": { allow: ["group:fs", "sessions_list"] },
},
},
}
Beispiel (agent-spezifischer Override für einen einzelnen Provider):
{
agents: {
list: [
{
id: "support",
tools: {
byProvider: {
"google-antigravity": { allow: ["message", "sessions_list"] },
},
},
},
],
},
}
Tool-Gruppen (Kurzformen)
Tool-Policies (global, Agent, Sandbox) unterstützen group:*-Einträge, die sich zu mehreren Tools auflösen.
Verwende diese in tools.allow / tools.deny.
Verfügbare Gruppen:
group:runtime:exec,bash,processgroup:fs:read,write,edit,apply_patchgroup:sessions:sessions_list,sessions_history,sessions_send,sessions_spawn,session_statusgroup:memory:memory_search,memory_getgroup:web:web_search,web_fetchgroup:ui:browser,canvasgroup:automation:cron,gatewaygroup:messaging:messagegroup:nodes:nodesgroup:openclaw: alle eingebauten OpenClaw-Tools (ohne Provider-Plugins)
Beispiel (nur Datei-Tools + Browser erlauben):
{
tools: {
allow: ["group:fs", "browser"],
},
}
Plugins + Tools
Plugins können über den Core-Satz hinaus zusätzliche Tools (und CLI-Befehle) registrieren. Siehe Plugins für Installation + Konfiguration und Skills für die Art, wie Tool-Nutzungshinweise in Prompts injiziert werden. Einige Plugins liefern eigene Skills zusammen mit Tools (zum Beispiel das Voice-Call-Plugin).
Optionale Plugin-Tools:
- Lobster: typisierte Workflow-Runtime mit fortsetzbaren Genehmigungen (erfordert die Lobster CLI auf dem Gateway-Host).
- LLM Task: JSON-only LLM-Schritt für strukturierte Workflow-Ausgabe (optionale Schema-Validierung).
- Diffs: schreibgeschützter Diff-Viewer und PNG- oder PDF-Datei-Renderer für Vorher/Nachher-Texte oder Unified Patches.
Tool-Inventar
apply_patch
Strukturierte Patches über eine oder mehrere Dateien anwenden. Verwende dies für Multi-Hunk-Edits.
Experimentell: aktivieren über tools.exec.applyPatch.enabled (nur OpenAI-Modelle).
tools.exec.applyPatch.workspaceOnly ist standardmäßig true (auf den Workspace beschränkt). Setze es nur auf false, wenn du apply_patch absichtlich außerhalb des Workspace-Verzeichnisses schreiben/löschen lassen willst.
exec
Shell-Befehle im Workspace ausführen.
Kernparameter:
command(erforderlich)yieldMs(nach Timeout automatisch in den Hintergrund, Standard 10000)background(sofort in den Hintergrund)timeout(Sekunden; beendet den Prozess bei Überschreitung, Standard 1800)elevated(bool; auf dem Host ausführen, wenn der Elevated-Modus aktiviert/erlaubt ist; ändert das Verhalten nur, wenn der Agent gesandboxt ist)host(sandbox | gateway | node)security(deny | allowlist | full)ask(off | on-miss | always)node(Node-ID/Name fürhost=node)- Brauchst du ein echtes TTY? Setze
pty: true.
Hinweise:
- Gibt
status: "running"mit einersessionIdzurück, wenn im Hintergrund. - Verwende
processzum Abfragen/Loggen/Schreiben/Beenden/Bereinigen von Hintergrund-Sessions. - Wenn
processgesperrt ist, läuftexecsynchron und ignoriertyieldMs/background. elevatedwird durchtools.elevatedplusagents.list[].tools.elevated-Override gesteuert (beide müssen erlauben) und ist ein Alias fürhost=gateway+security=full.elevatedändert das Verhalten nur, wenn der Agent gesandboxt ist (sonst ein No-Op).host=nodekann eine macOS-Companion-App oder einen Headless-Node-Host (openclaw node run) ansprechen.- Gateway/Node-Genehmigungen und Allowlists: Exec-Genehmigungen.
process
Hintergrund-Exec-Sessions verwalten.
Kernaktionen:
list,poll,log,write,kill,clear,remove
Hinweise:
pollgibt neue Ausgabe und den Exit-Status bei Abschluss zurück.logunterstützt zeilenbasiertesoffset/limit(lassoffsetweg, um die letzten N Zeilen zu holen).processist pro Agent beschränkt; Sessions anderer Agents sind nicht sichtbar.
loop-detection (Tool-Call-Loop-Schutzmaßnahmen)
OpenClaw verfolgt die letzte Tool-Call-History und blockiert oder warnt, wenn es repetitive No-Progress-Loops erkennt.
Aktivieren mit tools.loopDetection.enabled: true (Standard ist false).
{
tools: {
loopDetection: {
enabled: true,
warningThreshold: 10,
criticalThreshold: 20,
globalCircuitBreakerThreshold: 30,
historySize: 30,
detectors: {
genericRepeat: true,
knownPollNoProgress: true,
pingPong: true,
},
},
},
}
genericRepeat: wiederholte gleiche Tool + gleiche Parameter Aufrufmuster.knownPollNoProgress: wiederholte Poll-ähnliche Tools mit identischen Ausgaben.pingPong: alternierendeA/B/A/BNo-Progress-Muster.- Pro-Agent-Override:
agents.list[].tools.loopDetection.
web_search
Das Web mit Perplexity, Brave, Gemini, Grok oder Kimi durchsuchen.
Kernparameter:
query(erforderlich)count(1–10; Standard vontools.web.search.maxResults)
Hinweise:
- Benötigt einen API-Key für den gewählten Provider (empfohlen:
openclaw configure --section web). - Aktivieren über
tools.web.search.enabled. - Antworten werden gecacht (Standard 15 Min).
- Siehe Web-Tools für die Einrichtung.
web_fetch
Lesbaren Inhalt von einer URL abrufen und extrahieren (HTML → Markdown/Text).
Kernparameter:
url(erforderlich)extractMode(markdown|text)maxChars(lange Seiten kürzen)
Hinweise:
- Aktivieren über
tools.web.fetch.enabled. maxCharswird durchtools.web.fetch.maxCharsCapbegrenzt (Standard 50000).- Antworten werden gecacht (Standard 15 Min).
- Für JS-lastige Seiten bevorzuge das Browser-Tool.
- Siehe Web-Tools für die Einrichtung.
- Siehe Firecrawl für den optionalen Anti-Bot-Fallback.
browser
Den dedizierten OpenClaw-verwalteten Browser steuern.
Kernaktionen:
status,start,stop,tabs,open,focus,closesnapshot(aria/ai)screenshot(gibt Bild-Block +MEDIA:<path>zurück)act(UI-Aktionen: click/type/press/hover/drag/select/fill/resize/wait/evaluate)navigate,console,pdf,upload,dialog
Profilverwaltung:
profiles— alle Browserprofile mit Status auflistencreate-profile— neues Profil mit automatisch zugewiesenem Port erstellen (odercdpUrl)delete-profile— Browser stoppen, Benutzerdaten löschen, aus der Konfiguration entfernen (nur lokal)reset-profile— verwaisten Prozess auf dem Port des Profils beenden (nur lokal)
Allgemeine Parameter:
profile(optional; Standard istbrowser.defaultProfile)target(sandbox|host|node)node(optional; bestimmte Node-ID/Name auswählen) Hinweise:- Erfordert
browser.enabled=true(Standard isttrue; auffalsesetzen zum Deaktivieren). - Alle Aktionen akzeptieren den optionalen
profile-Parameter für Multi-Instanz-Unterstützung. - Wenn
profileweggelassen wird, wirdbrowser.defaultProfileverwendet (Standard “chrome”). - Profilnamen: nur Kleinbuchstaben, Ziffern + Bindestriche (max. 64 Zeichen).
- Port-Bereich: 18800-18899 (~100 Profile max.).
- Remote-Profile sind nur zum Anhängen (kein Start/Stop/Reset).
- Wenn ein browserfähiger Node verbunden ist, kann das Tool automatisch dorthin routen (außer du fixierst
target). snapshotverwendet standardmäßigai, wenn Playwright installiert ist; verwendeariafür den Accessibility Tree.snapshotunterstützt auch Role-Snapshot-Optionen (interactive,compact,depth,selector), die Refs wiee12zurückgeben.acterfordertrefvonsnapshot(numerisch12von AI-Snapshots odere12von Role-Snapshots); verwendeevaluatefür seltene CSS-Selektor-Anforderungen.- Vermeide
act→waitstandardmäßig; verwende es nur in Ausnahmefällen (kein zuverlässiger UI-Zustand zum Warten). uploadkann optional einerefübergeben, um nach dem Aktivieren automatisch zu klicken.uploadunterstützt auchinputRef(Aria-Ref) oderelement(CSS-Selektor), um<input type="file">direkt zu setzen.
canvas
Den Node-Canvas steuern (Präsentieren, Auswerten, Snapshot, A2UI).
Kernaktionen:
present,hide,navigate,evalsnapshot(gibt Bild-Block +MEDIA:<path>zurück)a2ui_push,a2ui_reset
Hinweise:
- Verwendet unter der Haube Gateway
node.invoke. - Wenn kein
nodeangegeben ist, wählt das Tool einen Standard (einzelner verbundener Node oder lokaler Mac-Node). - A2UI ist nur v0.8 (kein
createSurface); die CLI lehnt v0.9 JSONL mit Zeilenfehlern ab. - Schnelltest:
openclaw nodes canvas a2ui push --node <id> --text "Hello from A2UI".
nodes
Gepaarte Nodes erkennen und ansprechen; Benachrichtigungen senden; Kamera/Bildschirm aufnehmen.
Kernaktionen:
status,describepending,approve,reject(Pairing)notify(macOSsystem.notify)run(macOSsystem.run)camera_list,camera_snap,camera_clip,screen_recordlocation_get,notifications_list,notifications_actiondevice_status,device_info,device_permissions,device_health
Hinweise:
- Kamera-/Bildschirm-Befehle erfordern, dass die Node-App im Vordergrund ist.
- Bilder geben Bild-Blöcke +
MEDIA:<path>zurück. - Videos geben
FILE:<path>(mp4) zurück. - Location gibt ein JSON-Payload zurück (lat/lon/accuracy/timestamp).
run-Parameter:commandargv-Array; optionalcwd,env(KEY=VAL),commandTimeoutMs,invokeTimeoutMs,needsScreenRecording.
Beispiel (run):
{
"action": "run",
"node": "office-mac",
"command": ["echo", "Hello"],
"env": ["FOO=bar"],
"commandTimeoutMs": 12000,
"invokeTimeoutMs": 45000,
"needsScreenRecording": false
}
image
Ein Bild mit dem konfigurierten Bildmodell analysieren.
Kernparameter:
image(erforderlicher Pfad oder URL)prompt(optional; Standard ist “Describe the image.”)model(optionaler Override)maxBytesMb(optionale Größenbegrenzung)
Hinweise:
- Nur verfügbar, wenn
agents.defaults.imageModelkonfiguriert ist (primär oder Fallbacks), oder wenn ein implizites Bildmodell aus deinem Standardmodell + konfigurierter Auth abgeleitet werden kann (Best-Effort-Zuordnung). - Verwendet das Bildmodell direkt (unabhängig vom Haupt-Chat-Modell).
pdf
Ein oder mehrere PDF-Dokumente analysieren.
Für vollständiges Verhalten, Limits, Konfiguration und Beispiele siehe PDF-Tool.
message
Nachrichten und Channel-Aktionen über Discord/Google Chat/Slack/Telegram/WhatsApp/Signal/iMessage/MS Teams senden.
Kernaktionen:
send(Text + optionale Medien; MS Teams unterstützt auchcardfür Adaptive Cards)poll(WhatsApp/Discord/MS Teams-Umfragen)react/reactions/read/edit/deletepin/unpin/list-pinspermissionsthread-create/thread-list/thread-replysearchstickermember-info/role-infoemoji-list/emoji-upload/sticker-uploadrole-add/role-removechannel-info/channel-listvoice-statusevent-list/event-createtimeout/kick/ban
Hinweise:
sendroutet WhatsApp über das Gateway; andere Kanäle gehen direkt.pollnutzt das Gateway für WhatsApp und MS Teams; Discord-Umfragen gehen direkt.- Wenn ein Message-Tool-Call an eine aktive Chat-Session gebunden ist, werden Sends auf das Ziel dieser Session beschränkt, um Cross-Context-Leaks zu vermeiden.
cron
Gateway-Cron-Jobs und Wakeups verwalten.
Kernaktionen:
status,listadd,update,remove,run,runswake(System-Event in die Warteschlange stellen + optionaler sofortiger Heartbeat)
Hinweise:
adderwartet ein vollständiges Cron-Job-Objekt (gleiche Schema wiecron.addRPC).updateverwendet{ jobId, patch }(idwird aus Kompatibilitätsgründen akzeptiert).
gateway
Den laufenden Gateway-Prozess neu starten oder Updates anwenden (In-Place).
Kernaktionen:
restart(autorisiert + sendetSIGUSR1für In-Process-Neustart;openclaw gatewayIn-Place-Neustart)config.schema.lookup(einen Config-Pfad gleichzeitig prüfen, ohne das vollständige Schema in den Prompt-Kontext zu laden)config.getconfig.apply(validieren + Config schreiben + Neustart + Wake)config.patch(partielles Update mergen + Neustart + Wake)update.run(Update ausführen + Neustart + Wake)
Hinweise:
config.schema.lookuperwartet einen gezielten Config-Pfad wiegateway.authoderagents.list.*.heartbeat.- Pfade können Slash-getrennte Plugin-IDs enthalten, wenn sie
plugins.entries.<id>adressieren, zum Beispielplugins.entries.pack/one.config. - Verwende
delayMs(Standard 2000), um laufende Antworten nicht zu unterbrechen. config.schemableibt für interne Control-UI-Flows verfügbar und wird nicht über das Agent-gateway-Tool exponiert.restartist standardmäßig aktiviert; setzecommands.restart: falsezum Deaktivieren.
sessions_list / sessions_history / sessions_send / sessions_spawn / session_status
Sessions auflisten, Transkript-History einsehen oder an eine andere Session senden.
Kernparameter:
sessions_list:kinds?,limit?,activeMinutes?,messageLimit?(0 = keine)sessions_history:sessionKey(odersessionId),limit?,includeTools?sessions_send:sessionKey(odersessionId),message,timeoutSeconds?(0 = Fire-and-Forget)sessions_spawn:task,label?,runtime?,agentId?,model?,thinking?,cwd?,runTimeoutSeconds?,thread?,mode?,cleanup?,sandbox?,streamTo?,attachments?,attachAs?session_status:sessionKey?(Standard aktuell; akzeptiertsessionId),model?(defaultsetzt Override zurück)
Hinweise:
mainist der kanonische Direkt-Chat-Key; global/unknown sind ausgeblendet.messageLimit > 0ruft die letzten N Nachrichten pro Session ab (Tool-Nachrichten gefiltert).- Session-Targeting wird durch
tools.sessions.visibilitygesteuert (Standardtree: aktuelle Session + gespawnte Subagent-Sessions). Wenn du einen gemeinsamen Agent für mehrere Benutzer betreibst, erwägetools.sessions.visibility: "self"zu setzen, um Cross-Session-Browsing zu verhindern. sessions_sendwartet auf die endgültige Fertigstellung, wenntimeoutSeconds > 0.- Zustellung/Announce erfolgt nach Abschluss und ist Best-Effort;
status: "ok"bestätigt, dass der Agent-Run beendet ist, nicht dass das Announce zugestellt wurde. sessions_spawnunterstütztruntime: "subagent" | "acp"(Standardsubagent). Für ACP-Runtime-Verhalten siehe ACP Agents.- Für ACP-Runtime routet
streamTo: "parent"Fortschritts-Zusammenfassungen des Initial-Runs zurück an die anfragende Session als System-Events statt direkter Kind-Zustellung. sessions_spawnstartet einen Sub-Agent-Run und postet eine Announce-Antwort zurück in den anfragenden Chat.- Unterstützt One-Shot-Modus (
mode: "run") und persistenten Thread-gebundenen Modus (mode: "session"mitthread: true). - Wenn
thread: trueundmodeweggelassen wird, ist der Standardmodussession. mode: "session"erfordertthread: true.- Wenn
runTimeoutSecondsweggelassen wird, verwendet OpenClawagents.defaults.subagents.runTimeoutSecondsfalls gesetzt; ansonsten ist der Standard-Timeout0(kein Timeout). - Discord Thread-gebundene Flows hängen von
session.threadBindings.*undchannels.discord.threadBindings.*ab. - Das Antwortformat enthält
Status,Resultund kompakte Stats. Resultist der Assistant-Completion-Text; fehlt er, wird das letztetoolResultals Fallback verwendet.
- Unterstützt One-Shot-Modus (
- Manuelle Completion-Mode-Spawns senden zuerst direkt, mit Queue-Fallback und Retry bei transienten Fehlern (
status: "ok"bedeutet, der Run ist beendet, nicht dass das Announce zugestellt wurde). sessions_spawnunterstützt Inline-Dateianhänge nur für die Subagent-Runtime (ACP lehnt sie ab). Jeder Anhang hatname,contentund optionaleencoding(utf8oderbase64) undmimeType. Dateien werden im Kind-Workspace unter.openclaw/attachments/<uuid>/mit einer.manifest.json-Metadatendatei materialisiert. Das Tool gibt eine Quittung mitcount,totalBytes, pro Dateisha256undrelDirzurück. Anhangsinhalte werden automatisch aus der Transkript-Persistierung redigiert.- Limits konfigurieren über
tools.sessions_spawn.attachments(enabled,maxTotalBytes,maxFiles,maxFileBytes,retainOnSessionKeep). attachAs.mountPathist ein reservierter Hinweis für zukünftige Mount-Implementierungen.
- Limits konfigurieren über
sessions_spawnist nicht-blockierend und gibt sofortstatus: "accepted"zurück.- ACP
streamTo: "parent"-Antworten könnenstreamLogPath(session-bezogenes*.acp-stream.jsonl) zum Verfolgen der Fortschritts-History enthalten. sessions_sendführt ein Reply-Back-Ping-Pong durch (antworteREPLY_SKIPzum Stoppen; max. Turns übersession.agentToAgent.maxPingPongTurns, 0–5).- Nach dem Ping-Pong führt der Ziel-Agent einen Announce-Schritt aus; antworte
ANNOUNCE_SKIP, um die Ankündigung zu unterdrücken. - Sandbox-Clamp: Wenn die aktuelle Session gesandboxt ist und
agents.defaults.sandbox.sessionToolsVisibility: "spawned", klemmt OpenClawtools.sessions.visibilityauftree.
agents_list
Agent-IDs auflisten, die die aktuelle Session mit sessions_spawn ansprechen kann.
Hinweise:
- Das Ergebnis wird durch Pro-Agent-Allowlists (
agents.list[].subagents.allowAgents) eingeschränkt. - Wenn
["*"]konfiguriert ist, enthält das Tool alle konfigurierten Agents und markiertallowAny: true.
Parameter (allgemein)
Gateway-gestützte Tools (canvas, nodes, cron):
gatewayUrl(Standardws://127.0.0.1:18789)gatewayToken(wenn Auth aktiviert)timeoutMs
Hinweis: Wenn gatewayUrl gesetzt ist, gib gatewayToken explizit an. Tools erben weder
Config- noch Umgebungs-Credentials für Overrides, und fehlende explizite Credentials sind ein Fehler.
Browser-Tool:
profile(optional; Standard istbrowser.defaultProfile)target(sandbox|host|node)node(optional; bestimmte Node-ID/Name festlegen)- Fehlerbehebungs-Anleitungen:
- Linux-Start-/CDP-Probleme: Browser-Fehlerbehebung (Linux)
- WSL2 Gateway + Windows Remote Chrome CDP: WSL2 + Windows + Remote Chrome CDP-Fehlerbehebung
Empfohlene Agent-Abläufe
Browser-Automatisierung:
browser→status/startsnapshot(ai oder aria)act(click/type/press)screenshotbei Bedarf zur visuellen Bestätigung
Canvas-Rendering:
canvas→presenta2ui_push(optional)snapshot
Node-Targeting:
nodes→statusdescribeauf dem gewählten Nodenotify/run/camera_snap/screen_record
Sicherheit
- Vermeide direktes
system.run; verwendenodes→runnur mit expliziter Benutzer-Zustimmung. - Respektiere die Benutzer-Einwilligung für Kamera-/Bildschirmaufnahmen.
- Verwende
status/describe, um Berechtigungen zu prüfen, bevor du Medien-Befehle aufrufst.
Wie Tools dem Agent präsentiert werden
Tools werden über zwei parallele Kanäle exponiert:
- System-Prompt-Text: eine menschenlesbare Liste + Hinweise.
- Tool-Schema: die strukturierten Funktionsdefinitionen, die an die Model-API gesendet werden.
Das bedeutet, der Agent sieht sowohl “welche Tools existieren” als auch “wie man sie aufruft.” Wenn ein Tool weder im System-Prompt noch im Schema erscheint, kann das Modell es nicht aufrufen.