Claude & OpenCode - Berechtigung

🧩 Syntax:

Berechtigungs-Konfiguration für Claude Code und OpenCode

Diese Dokumentation ermöglicht es einem KI-Agenten, die Security-Permissions auf einem neuen Computer einzurichten.

Übersicht

Standardmäßig können KI-Assistenten (Claude Code, OpenCode) jede Datei im Projekt lesen – einschließlich .env-Dateien mit API-Keys, Stripe-Keys und Client-Credentials. Diese Einstellungen blockieren den Zugriff auf sensible Dateien und verhindern destruktive Befehle.


1. Claude Code Konfiguration

Datei: ~/.claude/settings.json

Vollständige Konfiguration

{
  "permissions": {
    "deny": [
      "Read(.env)",
      "Read(.env.*)",
      "Read(**/.env)",
      "Read(**/.env.*)",
      "Bash(cat .env*)",
      "Bash(cat */.env*)",
      "Bash(rm -rf *)",
      "Bash(git push --force*)",
      "Bash(git reset --hard*)",
      "Read(**/id_rsa*)",
      "Read(**/id_ed25519*)",
      "Read(**/id_ecdsa*)",
      "Read(**/id_dsa*)",
      "Read(**/.ssh/id_*)",
      "Read(**/.aws/credentials)",
      "Read(**/.aws/config)",
      "Read(~/.claude/settings.json)",
      "Edit(~/.claude/settings.json)",
      "Write(~/.claude/settings.json)"
    ]
  }
}

Einrichtungsbefehl

Falls die Datei nicht existiert, erstelle sie:

mkdir -p ~/.claude
cat > ~/.claude/settings.json << 'EOF'
{
  "permissions": {
    "deny": [
      "Read(.env)",
      "Read(.env.*)",
      "Read(**/.env)",
      "Read(**/.env.*)",
      "Bash(cat .env*)",
      "Bash(cat */.env*)",
      "Bash(rm -rf *)",
      "Bash(git push --force*)",
      "Bash(git reset --hard*)",
      "Read(**/id_rsa*)",
      "Read(**/id_ed25519*)",
      "Read(**/id_ecdsa*)",
      "Read(**/id_dsa*)",
      "Read(**/.ssh/id_*)",
      "Read(**/.aws/credentials)",
      "Read(**/.aws/config)",
      "Read(~/.claude/settings.json)",
      "Edit(~/.claude/settings.json)",
      "Write(~/.claude/settings.json)"
    ]
  }
}
EOF

Falls bereits Hooks vorhanden sind

Wenn die Datei bereits existiert und Hooks enthält, füge nur den permissions-Block hinzu:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "/path/to/existing/hook.sh"
          }
        ]
      }
    ]
  },
  "permissions": {
    "deny": [
      "Read(.env)",
      "Read(.env.*)",
      "Read(**/.env)",
      "Read(**/.env.*)",
      "Bash(cat .env*)",
      "Bash(cat */.env*)",
      "Bash(rm -rf *)",
      "Bash(git push --force*)",
      "Bash(git reset --hard*)",
      "Read(**/id_rsa*)",
      "Read(**/id_ed25519*)",
      "Read(**/id_ecdsa*)",
      "Read(**/id_dsa*)",
      "Read(**/.ssh/id_*)",
      "Read(**/.aws/credentials)",
      "Read(**/.aws/config)",
      "Read(~/.claude/settings.json)",
      "Edit(~/.claude/settings.json)",
      "Write(~/.claude/settings.json)"
    ]
  }
}

2. OpenCode Konfiguration

Datei: ~/.config/opencode/opencode.json

Wichtiger Hinweis

OpenCode schützt .env-Dateien bereits standardmäßig. Die folgenden Regeln erweitern den Schutz um SSH-Keys, AWS-Credentials und destruktive Befehle.

Permission-Block zum Hinzufügen

Füge dies zum bestehenden "permission"-Objekt hinzu:

"permission": {
  "read": {
    "*": "allow",
    ".env": "deny",
    ".env.*": "deny",
    "**/.env": "deny",
    "**/.env.*": "deny",
    "**/id_rsa*": "deny",
    "**/id_ed25519*": "deny",
    "**/id_ecdsa*": "deny",
    "**/id_dsa*": "deny",
    "**/.ssh/id_*": "deny",
    "**/.aws/credentials": "deny",
    "**/.aws/config": "deny"
  },
  "edit": {
    "~/.claude/settings.json": "deny",
    "~/.config/opencode/opencode.json": "deny"
  },
  "bash": {
    "cat .env*": "deny",
    "cat */.env*": "deny",
    "rm -rf *": "deny",
    "git push --force*": "deny",
    "git reset --hard*": "deny"
  }
}

Vollständige Minimal-Konfiguration

Falls keine opencode.json existiert:

mkdir -p ~/.config/opencode
cat > ~/.config/opencode/opencode.json << 'EOF'
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "read": {
      "*": "allow",
      ".env": "deny",
      ".env.*": "deny",
      "**/.env": "deny",
      "**/.env.*": "deny",
      "**/id_rsa*": "deny",
      "**/id_ed25519*": "deny",
      "**/id_ecdsa*": "deny",
      "**/id_dsa*": "deny",
      "**/.ssh/id_*": "deny",
      "**/.aws/credentials": "deny",
      "**/.aws/config": "deny"
    },
    "edit": {
      "~/.claude/settings.json": "deny",
      "~/.config/opencode/opencode.json": "deny"
    },
    "bash": {
      "cat .env*": "deny",
      "cat */.env*": "deny",
      "rm -rf *": "deny",
      "git push --force*": "deny",
      "git reset --hard*": "deny"
    }
  }
}
EOF

3. Was wird geschützt

Kategorie Geschützte Dateien/Befehle
Environment Files .env, .env.local, .env.production, etc.
SSH Keys id_rsa, id_ed25519, id_ecdsa, id_dsa
AWS Credentials ~/.aws/credentials, ~/.aws/config
KI-Config Claude/OpenCode Settings-Dateien
Destruktive Befehle rm -rf *, git push --force, git reset --hard

4. Syntax-Unterschiede

Aspekt Claude Code OpenCode
Struktur "deny": ["Pattern"] "pattern": "deny"
Tools Read(), Bash(), Edit() read, bash, edit
Wildcards ** für rekursiv ** für rekursiv, * für beliebige Zeichen
Defaults Keine .env bereits protected

5. Verifikation

Teste nach der Einrichtung:

# Claude Code settings prüfen
cat ~/.claude/settings.json | grep -A 5 "permissions"

# OpenCode settings prüfen
cat ~/.config/opencode/opencode.json | grep -A 5 "permission"

6. Wartung

Bei Updates der KI-Tools können sich die Konfigurationsformate ändern. Prüfe: