Permissions steuern, welche Aktionen automatisch laufen, eine Bestaetigungs-Abfrage ausloesen oder blockiert werden.
Offizielle Docs: opencode.ai/docs/permissions
| Aktion | Beschreibung |
|---|---|
allow |
Ausfuehren ohne Nachfrage |
ask |
Bestaetigung vor Ausfuehrung |
deny |
Aktion blockieren |
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"*": "ask",
"bash": "allow",
"edit": "deny"
}
}Oder alle auf einmal:
{
"permission": "allow"
}Die letzte passende Regel gewinnt. Allgemeine "*" Regel zuerst, spezifische danach.
{
"permission": {
"bash": {
"*": "ask",
"git *": "allow",
"npm *": "allow",
"rm *": "deny",
"grep *": "allow"
}
}
}{
"permission": {
"edit": {
"*": "deny",
"packages/web/src/content/docs/*.mdx": "allow"
}
}
}*matcht null oder mehr beliebige Zeichen?matcht genau ein Zeichen
| Key | Beschreibung | Granular Match |
|---|---|---|
read |
Datei lesen | Dateipfad |
edit |
Alle Datei-Modifikationen (edit, write, patch) | Dateipfad |
glob |
Datei-Suche | Glob-Pattern |
grep |
Inhalts-Suche | Regex-Pattern |
list |
Verzeichnis auflisten | Verzeichnispfad |
bash |
Shell-Befehle | Geparster Befehl |
task |
Subagent starten | Subagent-Typ |
skill |
Skill laden | Skill-Name |
lsp |
LSP-Abfragen | (nicht granular) |
webfetch |
URL abrufen | URL |
websearch |
Web-Suche | Query |
external_directory |
Zugriff ausserhalb Projektverzeichnis | Pfad |
doom_loop |
Gleicher Tool-Call 3x wiederholt | - |
- Die meisten Permissions sind standardmaessig
"allow" doom_loopundexternal_directorysind"ask".envDateien werden beim Lesen standardmaessig blockiert:
{
"permission": {
"read": {
"*": "allow",
"*.env": "deny",
"*.env.*": "deny",
"*.env.example": "allow"
}
}
}Agent-Permissions werden mit globalen Permissions gemergt. Agent-Regeln haben Vorrang.
{
"permission": {
"bash": {
"*": "ask",
"git *": "allow"
}
},
"agent": {
"build": {
"permission": {
"bash": {
"*": "ask",
"git commit *": "ask",
"git push *": "deny"
}
}
}
}
}---
description: Code review without edits
mode: subagent
permission:
edit: deny
bash: ask
webfetch: deny
---{
"permission": {
"external_directory": {
"~/projects/personal/**": "allow"
},
"edit": {
"~/projects/personal/**": "deny"
}
}
}Bei ask bietet das UI drei Optionen:
- once -- Nur diese Anfrage genehmigen
- always -- Zukuenftige passende Anfragen genehmigen (Session-Dauer)
- reject -- Anfrage ablehnen
- Sichere Defaults:
"*": "ask"als Basis, spezifische Erlaubnisse darauf - Git-Befehle kontrollieren:
git pushundgit commitperaskoderdeny - Destruktive Befehle blocken:
rm -rf *perdeny - Read-Only Agents:
edit: denyundbash: denyfuer Review-Agents - Pattern-Match beachten:
"git status"vs"git status *"(mit Argumenten) - .env schuetzen: Standard-Deny fuer
.envbeibehalten