Zum Inhalt springen

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.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"*": "ask",
"bash": "allow",
"edit": "deny"
}
}

Sie konnen auch alle Berechtigungen auf einmal festlegen:

opencode.json
{
"$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.

opencode.json
{
"$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 (deckt edit, write, patch, multiedit ab)
  • 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 wie git 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/aktualisieren
  • webfetch — 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 beruhrt
  • doom_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_loop und external_directory sind standardmaBig "ask".
  • read ist "allow", aber .env-Dateien sind standardmaBig verweigert:
opencode.json
{
"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 genehmigen
  • always — 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.

opencode.json
{
"$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:

~/.config/opencode/agent/review.md
---
description: Code-Uberprufung ohne Bearbeitung
mode: subagent
permission:
edit: deny
bash: ask
webfetch: deny
---
Nur Code analysieren und Anderungen vorschlagen.