Erstellt: 2025-12-23 | Aktualisiert: 2025-12-23

Pre-Hook Ablauf

Der Pre-Hook wird vor jeder Tool-Ausführung aufgerufen und kann die Aktion blockieren, modifizieren oder durchlassen.

Trigger

Pre-Hooks werden bei folgenden Tools ausgelöst:

Ablauf bei Edit/Write

1. Sicherheits-Validierung (Bash)

Bei Bash-Befehlen werden zwei Blocker-Hooks ausgeführt:

Hook Prüft Blockiert
block_direct_db.py MySQL/MariaDB-Zugriffe Direkte DB-Verbindungen mit Passwort
block_direct_task_db.py Task-Tabellen-Zugriffe INSERT/UPDATE/DELETE auf tasks-Tabellen

Empfehlung bei Blockierung: MCP-Tools verwenden (db_select, tasks_create, etc.)

2. File Backup (Edit/Write)

Bei Edit- und Write-Operationen:

file_backup_hook.py
├── Prüft: Liegt Datei in BACKUP_DIRS?
│   ├── /var/www/dev.campus.../src
│   ├── /var/www/dev.campus.../public
│   ├── /var/www/dev.campus.../config
│   └── ... (weitere Verzeichnisse)
│
├── Prüft: Datei < 10 MB?
├── Prüft: Nicht in EXCLUDE_PATTERNS?
│   ├── /vendor/
│   ├── /node_modules/
│   ├── /.git/
│   └── ... (weitere Ausschlüsse)
│
├── Berechnet: SHA256-Hash des Inhalts
├── Vergleicht: Mit letzter Version
│
└── Bei Änderung:
    └── INSERT INTO file_backup_history
        ├── file_path
        ├── file_content (vollständig)
        ├── content_hash
        ├── version (auto-increment pro Datei)
        └── reason: "Claude Code Pre-Hook Backup"

3. Request-Logging

Für alle Tools wird der Request protokolliert:

log_to_db.py
├── Extrahiert: tool_name, tool_input
├── Sanitized: Sensible Daten (Passwörter, Tokens)
├── Schätzt: tokens_input
│
└── INSERT INTO protokoll
    ├── request (JSON)
    ├── request_timestamp
    ├── status: 'pending'
    └── Speichert: pending_request für PostToolUse-Matching

Blockierung

Ein Pre-Hook kann die Ausführung blockieren durch:

Durchlassen

Bei Erfolg gibt der Hook zurück:

{"continue": true}

oder

{"allowed": true}

Geschützte Verzeichnisse

Backups werden erstellt für: