{
"event": "PreToolUse",
"tool_name": "mcp__mcp-docs__docs_create",
"tool_input": {
"title": "Pre-Hook Ablauf",
"slug": "pre-hook-ablauf",
"parent_id": 92,
"description": "Was passiert VOR der Tool-Ausführung",
"content": "<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>",
"status": "published",
"sort_order": 1
}
}
{
"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\": \"<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-23T05:39:59\"\n },\n \"message\": \"Dokument 'Pre-Hook Ablauf' erstellt mit ID 93\"\n}"
}
]
}