Berechtigungen
Steuern Sie, welche Aktionen eine Genehmigung benotigen.
OpenCode verwendet die Konfiguration permission, um zu entscheiden, ob eine bestimmte Aktion automatisch ausgefuhrt werden soll, nachfragen soll oder blockiert werden soll.
Seit v1.1.1 ist die alte tools-Boolesche Konfiguration veraltet und wurde in permission zusammengefuhrt. Die alte tools-Konfiguration wird aus Kompatibilitatsgrunden weiterhin unterstutzt.
Aktionen
Jede Berechtigungsregel wird zu einem der folgenden Werte aufgelost:
"allow"— ohne Genehmigung ausfuhren"ask"— um Genehmigung bitten"deny"— die Aktion blockieren
Konfiguration
Sie konnen Berechtigungen global (mit *) festlegen und bestimmte Werkzeuge uberschreiben.
{ "$schema": "https://opencode.ai/config.json", "permission": { "*": "ask", "bash": "allow", "edit": "deny" }}Sie konnen auch alle Berechtigungen auf einmal festlegen:
{ "$schema": "https://opencode.ai/config.json", "permission": "allow"}Granulare Regeln (Objektsyntax)
Fur die meisten Berechtigungen konnen Sie ein Objekt verwenden, um verschiedene Aktionen basierend auf der Werkzeugeingabe anzuwenden.
{ "$schema": "https://opencode.ai/config.json", "permission": { "bash": { "*": "ask", "git *": "allow", "npm *": "allow", "rm *": "deny" }, "edit": { "*": "deny", "packages/web/src/content/docs/*.mdx": "allow" } }}Regeln werden durch Mustervergleich ausgewertet, wobei die letzte ubereinstimmende Regel gewinnt. Ein gangiges Muster besteht darin, die allgemeine "*"-Regel zuerst und danach spezifischere Regeln zu platzieren.
Platzhalter
Berechtigungsmuster verwenden einfache Platzhalterabgleich:
*entspricht null oder mehr Zeichen?entspricht genau einem Zeichen- Alle anderen Zeichen entsprechen literal
Verfugbare Berechtigungen
OpenCode-Berechtigungen sind nach Werkzeugname indexiert, plus ein paar Sicherheitsvorkehrungen:
read— eine Datei lesen (entspricht dem Dateipfad)edit— alle Dateianderungen (decktedit,write,patch,multieditab)glob— Datei-Globbing (entspricht dem Glob-Muster)grep— Inhaltssuche (entspricht dem Regex-Muster)list— Dateien in einem Verzeichnis auflisten (entspricht dem Verzeichnispfad)bash— Shell-Befehle ausfuhren (entspricht analysierten Befehlen wiegit status --porcelain)task— Unteragenten starten (entspricht dem Unteragententyp)skill— ein Skill laden (entspricht dem Skill-Namen)lsp— LSP-Abfragen ausfuhren (derzeit nicht granular)todoread,todowrite— Todo-Liste lesen/aktualisierenwebfetch— eine URL abrufen (entspricht der URL)websearch,codesearch— Web-/Code-Suche (entspricht der Abfrage)external_directory— wird ausgelost, wenn ein Werkzeug Pfade auBerhalb des Projektarbeitsverzeichnisses beruhrtdoom_loop— wird ausgelost, wenn derselbe Werkzeugaufruf 3-mal mit identischer Eingabe wiederholt wird
Standardwerte
Wenn Sie nichts angeben, beginnt OpenCode mit permisiven Standardberechtigungen:
- Die meisten Berechtigungen sind standardmaBig
"allow". doom_loopundexternal_directorysind standardmaBig"ask".readist"allow", aber.env-Dateien sind standardmaBig verweigert:
{ "permission": { "read": { "*": "allow", "*.env": "deny", "*.env.*": "deny", "*.env.example": "allow" } }}Was “Ask” tut
Wenn OpenCode um Genehmigung bittet, bietet die Benutzeroberflache drei Ergebnisse:
once— nur diese Anfrage genehmigenalways— zukunftige Anfragen genehmigen, die den vorgeschlagenen Mustern entsprechen (fur den Rest der aktuellen OpenCode-Sitzung)reject— die Anfrage ablehnen
Die Menge der Muster, die always genehmigen wurde, wird vom Werkzeug bereitgestellt (z. B. fugen Bash-Genehmigungen typischerweise ein sicheres Befehlsprafix wie git status* zur Whitelist hinzu).
Agents
Sie konnen Berechtigungen pro Agent uberschreiben. Agent-Berechtigungen werden mit der globalen Konfiguration zusammengefuhrt, und Agent-Regeln haben Vorrang. Erfahren Sie mehr uber Agent-Berechtigungen.
{ "$schema": "https://opencode.ai/config.json", "permission": { "bash": { "*": "ask", "git status": "allow" } }, "agent": { "build": { "permission": { "bash": { "*": "ask", "git status": "allow", "git push": "allow" } } } }}Sie konnen Agent-Berechtigungen auch in Markdown konfigurieren:
---description: Code-Uberprufung ohne Bearbeitungmode: subagentpermission: edit: deny bash: ask webfetch: deny---
Nur Code analysieren und Anderungen vorschlagen.