Tools
Verwalte, welche Tools ein LLM nutzen darf.
Tools erlauben dem LLM Aktionen in deiner Codebasis. OpenCode bringt eingebaute Tools mit und laesst sich ueber Custom Tools oder MCP-Server erweitern.
Standardmaessig sind alle Tools aktiviert und brauchen keine Freigabe. Das Verhalten steuerst du ueber Berechtigungen.
Konfiguration
Nutze das Feld permission, um Tool-Verhalten zu steuern.
Pro Tool kannst du erlauben, verbieten oder eine Rueckfrage verlangen.
{ "$schema": "https://opencode.ai/config.json", "permission": { "edit": "deny", "bash": "ask", "webfetch": "allow" }}Mit Wildcards kannst du mehrere Tools auf einmal steuern. Zum Beispiel, um fuer alle Tools eines MCP-Servers eine Freigabe zu verlangen:
{ "$schema": "https://opencode.ai/config.json", "permission": { "mymcp_*": "ask" }}Mehr dazu, wie du Berechtigungen konfigurierst.
Eingebaut
Hier sind alle in OpenCode verfuegbaren eingebauten Tools.
bash
Fuehrt Shell-Befehle in deiner Projektumgebung aus.
{ "$schema": "https://opencode.ai/config.json", "permission": { "bash": "allow" }}Damit kann das LLM Terminal-Befehle wie npm install, git status oder andere Shell-Kommandos ausfuehren.
edit
Bearbeitet bestehende Dateien ueber exakte String-Ersetzungen.
{ "$schema": "https://opencode.ai/config.json", "permission": { "edit": "allow" }}Dieses Tool fuehrt praezise Aenderungen per exakter Textsuche aus. Es ist der zentrale Weg, wie das LLM Code aendert.
write
Erstellt neue Dateien oder ueberschreibt bestehende Dateien.
{ "$schema": "https://opencode.ai/config.json", "permission": { "edit": "allow" }}Damit erlaubst du dem LLM, neue Dateien anzulegen. Bestehende Dateien werden dabei ueberschrieben.
read
Liest Dateiinhalte aus deiner Codebasis.
{ "$schema": "https://opencode.ai/config.json", "permission": { "read": "allow" }}Dieses Tool liest Dateien und gibt deren Inhalt zurueck. Es unterstuetzt das Lesen spezifischer Zeilenbereiche bei grossen Dateien.
grep
Durchsucht Dateiinhalte mit regulaeren Ausdruecken.
{ "$schema": "https://opencode.ai/config.json", "permission": { "grep": "allow" }}Schnelle Inhaltssuche in deiner Codebasis. Unterstuetzt volle Regex-Syntax und Filterung nach Dateimustern.
glob
Findet Dateien per Musterabgleich.
{ "$schema": "https://opencode.ai/config.json", "permission": { "glob": "allow" }}Sucht nach Dateien mit Glob-Mustern wie **/*.js oder src/**/*.ts. Gibt passende Dateipfade sortiert nach Aenderungsdatum zurueck.
list
Listet Dateien und Verzeichnisse in einem Pfad auf.
{ "$schema": "https://opencode.ai/config.json", "permission": { "list": "allow" }}Dieses Tool listet Verzeichnisinhalte auf. Es akzeptiert Glob-Muster zum Filtern der Ergebnisse.
lsp (experimentell)
Interagiere mit deinen konfigurierten LSP-Servern fuer Code-Intelligence-Features wie Definitionen, Referenzen, Hover-Infos und Call-Hierarchien.
{ "$schema": "https://opencode.ai/config.json", "permission": { "lsp": "allow" }}Unterstuetzte Operationen sind goToDefinition, findReferences, hover, documentSymbol, workspaceSymbol, goToImplementation, prepareCallHierarchy, incomingCalls und outgoingCalls.
Um verfuegbare LSP-Server fuer dein Projekt zu konfigurieren, siehe LSP-Server.
patch
Wendet Patches auf Dateien an.
{ "$schema": "https://opencode.ai/config.json", "permission": { "edit": "allow" }}Dieses Tool wendet Patch-Dateien auf deine Codebasis an. Nuetzlich fuer Diffs und Patches aus verschiedenen Quellen.
skill
Laedt einen Skill (eine SKILL.md-Datei) und gibt dessen Inhalt in der Unterhaltung zurueck.
{ "$schema": "https://opencode.ai/config.json", "permission": { "skill": "allow" }}todowrite
Verwaltet Todo-Listen waehrend Coding-Sessions.
{ "$schema": "https://opencode.ai/config.json", "permission": { "todowrite": "allow" }}Erstellt und aktualisiert Aufgabenlisten, um den Fortschritt bei komplexen Operationen zu verfolgen. Das LLM nutzt dies, um mehrstufige Aufgaben zu organisieren.
todoread
Liest existierende Todo-Listen.
{ "$schema": "https://opencode.ai/config.json", "permission": { "todoread": "allow" }}Liest den aktuellen Status der Todo-Liste. Wird vom LLM genutzt, um offene oder erledigte Aufgaben zu verfolgen.
webfetch
Ruft Webinhalte ab.
{ "$schema": "https://opencode.ai/config.json", "permission": { "webfetch": "allow" }}Erlaubt dem LLM, Webseiten abzurufen und zu lesen. Nuetzlich zum Nachschlagen von Dokumentation oder fuer Online-Recherche.
websearch
Durchsucht das Web nach Informationen.
{ "$schema": "https://opencode.ai/config.json", "permission": { "websearch": "allow" }}Fuehrt Websuchen mit Exa AI durch, um relevante Informationen online zu finden. Nuetzlich fuer Recherche, aktuelle Ereignisse oder Informationen jenseits des Trainingsdatums.
Kein API-Key erforderlich — das Tool verbindet sich direkt mit dem gehosteten MCP-Service von Exa AI ohne Authentifizierung.
question
Stellt dem Benutzer waehrend der Ausfuehrung Fragen.
{ "$schema": "https://opencode.ai/config.json", "permission": { "question": "allow" }}Dieses Tool erlaubt dem LLM, dem Benutzer waehrend einer Aufgabe Fragen zu stellen. Nuetzlich fuer:
- Sammeln von Benutzerpraeferenzen oder Anforderungen
- Klaerung mehrdeutiger Anweisungen
- Entscheidungen bei Implementierungsoptionen einholen
- Auswahlmoeglichkeiten fuer das weitere Vorgehen anbieten
Jede Frage enthaelt eine Ueberschrift, den Fragetext und eine Liste von Optionen. Benutzer koennen aus den Optionen waehlen oder eine eigene Antwort eingeben. Bei mehreren Fragen koennen Benutzer zwischen ihnen navigieren, bevor sie alle Antworten absenden.
Benutzerdefinierte Tools
Mit Custom Tools definierst du eigene Funktionen, die das LLM aufrufen kann. Sie werden in der Konfigurationsdatei definiert und koennen beliebigen Code ausfuehren.
Mehr dazu, wie du Custom Tools erstellst.
MCP-Server
MCP-Server (Model Context Protocol) binden externe Tools und Dienste ein. Dazu gehoeren Datenbanken, API-Integrationen und Drittanbieter-Services.
Mehr dazu, wie du MCP-Server konfigurierst.
Interna
Intern verwenden Tools wie grep, glob und list ripgrep.
Standardmaessig beachtet ripgrep .gitignore, daher werden dort aufgefuehrte Dateien und Ordner nicht durchsucht.
Ignorier-Muster
Wenn du normalerweise ignorierte Dateien einschliessen willst, lege im Projekt-Root eine .ignore-Datei an.
Dort kannst du Pfade explizit erlauben.
!node_modules/!dist/!build/Dieses Beispiel erlaubt ripgrep, in node_modules/, dist/ und build/ zu suchen, auch wenn sie in .gitignore stehen.