# 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 ```json { "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: ```bash 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: ```json { "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: ```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" } } ``` ### Vollständige Minimal-Konfiguration Falls keine `opencode.json` existiert: ```bash 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: ```bash # 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: - Claude Code: https://docs.anthropic.com/en/docs/claude-code - OpenCode: https://opencode.ai/docs/permissions/