{
"event": "PreToolUse",
"tool_name": "mcp__mcp-docs__docs_get",
"tool_input": {
"path": "\/prozesse\/claude-hooks-prozess\/pre-hook-ablauf"
}
}
{
"tool_response": [
{
"type": "text",
"text": "{\n \"success\": true,\n \"doc\": {\n \"id\": 93,\n \"parent_id\": 92,\n \"slug\": \"pre-hook-ablauf\",\n \"path\": \"\/prozesse\/claude-hooks-prozess\/pre-hook-ablauf\",\n \"title\": \"Pre-Hook Ablauf\",\n \"description\": \"Was passiert VOR der Tool-Ausführung\",\n \"content\": \"\\n<p class=\\\"doc-meta\\\"><strong>Erstellt:<\/strong> 2025-12-23 | <strong>Aktualisiert:<\/strong> 2025-12-23<\/p>\\n<h2>Pre-Hook Ablauf<\/h2>\\n\\n<p>Der Pre-Hook wird <strong>vor<\/strong> jeder Tool-Ausführung aufgerufen und kann die Aktion blockieren, modifizieren oder durchlassen.<\/p>\\n\\n<h3>Trigger<\/h3>\\n<p>Pre-Hooks werden bei folgenden Tools ausgelöst:<\/p>\\n<ul>\\n <li><code>Bash<\/code> - Shell-Befehle<\/li>\\n <li><code>Edit<\/code> - Datei-Bearbeitung<\/li>\\n <li><code>Write<\/code> - Datei-Erstellung<\/li>\\n <li>Alle anderen Tools (generisches Logging)<\/li>\\n<\/ul>\\n\\n<h3>Ablauf bei Edit\/Write<\/h3>\\n\\n<h4>1. Sicherheits-Validierung (Bash)<\/h4>\\n<p>Bei Bash-Befehlen werden zwei Blocker-Hooks ausgeführt:<\/p>\\n\\n<table>\\n <thead>\\n <tr>\\n <th>Hook<\/th>\\n <th>Prüft<\/th>\\n <th>Blockiert<\/th>\\n <\/tr>\\n <\/thead>\\n <tbody>\\n <tr>\\n <td><code>block_direct_db.py<\/code><\/td>\\n <td>MySQL\/MariaDB-Zugriffe<\/td>\\n <td>Direkte DB-Verbindungen mit Passwort<\/td>\\n <\/tr>\\n <tr>\\n <td><code>block_direct_task_db.py<\/code><\/td>\\n <td>Task-Tabellen-Zugriffe<\/td>\\n <td>INSERT\/UPDATE\/DELETE auf tasks-Tabellen<\/td>\\n <\/tr>\\n <\/tbody>\\n<\/table>\\n\\n<p><strong>Empfehlung bei Blockierung:<\/strong> MCP-Tools verwenden (db_select, tasks_create, etc.)<\/p>\\n\\n<h4>2. File Backup (Edit\/Write)<\/h4>\\n<p>Bei Edit- und Write-Operationen:<\/p>\\n\\n<pre>\\nfile_backup_hook.py\\n├── Prüft: Liegt Datei in BACKUP_DIRS?\\n│ ├── \/var\/www\/dev.campus...\/src\\n│ ├── \/var\/www\/dev.campus...\/public\\n│ ├── \/var\/www\/dev.campus...\/config\\n│ └── ... (weitere Verzeichnisse)\\n│\\n├── Prüft: Datei < 10 MB?\\n├── Prüft: Nicht in EXCLUDE_PATTERNS?\\n│ ├── \/vendor\/\\n│ ├── \/node_modules\/\\n│ ├── \/.git\/\\n│ └── ... (weitere Ausschlüsse)\\n│\\n├── Berechnet: SHA256-Hash des Inhalts\\n├── Vergleicht: Mit letzter Version\\n│\\n└── Bei Änderung:\\n └── INSERT INTO file_backup_history\\n ├── file_path\\n ├── file_content (vollständig)\\n ├── content_hash\\n ├── version (auto-increment pro Datei)\\n └── reason: \\\"Claude Code Pre-Hook Backup\\\"\\n<\/pre>\\n\\n<h4>3. Request-Logging<\/h4>\\n<p>Für alle Tools wird der Request protokolliert:<\/p>\\n\\n<pre>\\nlog_to_db.py\\n├── Extrahiert: tool_name, tool_input\\n├── Sanitized: Sensible Daten (Passwörter, Tokens)\\n├── Schätzt: tokens_input\\n│\\n└── INSERT INTO protokoll\\n ├── request (JSON)\\n ├── request_timestamp\\n ├── status: 'pending'\\n └── Speichert: pending_request für PostToolUse-Matching\\n<\/pre>\\n\\n<h3>Blockierung<\/h3>\\n<p>Ein Pre-Hook kann die Ausführung blockieren durch:<\/p>\\n<ul>\\n <li><code>exit(1)<\/code> - Tool wird nicht ausgeführt<\/li>\\n <li><code>{\\\"allowed\\\": false, \\\"message\\\": \\\"...\\\"}<\/code> - Mit Fehlermeldung<\/li>\\n<\/ul>\\n\\n<h3>Durchlassen<\/h3>\\n<p>Bei Erfolg gibt der Hook zurück:<\/p>\\n<pre>{\\\"continue\\\": true}<\/pre>\\n<p>oder<\/p>\\n<pre>{\\\"allowed\\\": true}<\/pre>\\n\\n<h3>Geschützte Verzeichnisse<\/h3>\\n<p>Backups werden erstellt für:<\/p>\\n<ul>\\n <li><code>\/var\/www\/dev.campus.systemische-tools.de\/src<\/code><\/li>\\n <li><code>\/var\/www\/dev.campus.systemische-tools.de\/public<\/code><\/li>\\n <li><code>\/var\/www\/dev.campus.systemische-tools.de\/config<\/code><\/li>\\n <li><code>\/var\/www\/prod.campus.systemische-tools.de\/src<\/code><\/li>\\n <li>... und weitere<\/li>\\n<\/ul>\",\n \"status\": \"published\",\n \"sort_order\": 1,\n \"depth\": 2,\n \"created_at\": \"2025-12-23T05:39:59\",\n \"updated_at\": \"2025-12-27T15:58:19\"\n }\n}"
}
]
}