Post-Hook Ablauf
Der Post-Hook wird nach jeder Tool-Ausführung aufgerufen und führt Aufräumarbeiten sowie Logging durch.
Trigger
Post-Hooks werden bei folgenden Tools ausgelöst:
Edit- Nach Datei-BearbeitungWrite- Nach Datei-Erstellung- Alle anderen Tools (generisches Response-Logging)
Ablauf bei Edit/Write
1. Berechtigungskorrektur
Nach jeder Edit/Write-Operation:
fix-permissions.sh ├── chown -R www-data:www-data /var/www/dev.campus... ├── chown -R www-data:www-data /var/www/prod.campus... ├── chmod -R 755 /var/www/dev.campus... └── chmod -R 755 /var/www/prod.campus...
Warum? Claude Code läuft als root. Ohne Korrektur hätten die Dateien falschen Owner und Apache könnte sie nicht lesen.
2. Response-Logging
Für alle Tools wird die Response protokolliert:
log_to_db.py
├── Sucht: Matching PreToolUse-Request
│ └── Über: session_id + tool_name
│
├── Extrahiert: tool_response
├── Sanitized: Sensible Daten
├── Schätzt: tokens_output
│
└── UPDATE protokoll SET
├── response (JSON)
├── response_timestamp
├── tokens_output
├── tokens_total = tokens_input + tokens_output
├── duration_ms (berechnet aus Timestamps)
└── status: 'completed'
Request/Response-Pairing
Das Logging-System verbindet Pre- und Post-Hook-Events:
PreToolUse (Edit "file.php")
├── INSERT protokoll → ID=123
└── Speichert: /tmp/claude_hooks/{session}_{tool}_PreToolUse.json
└── {"db_id": 123, "timestamp": "..."}
[Tool-Ausführung]
PostToolUse (Edit "file.php")
├── Lädt: /tmp/claude_hooks/{session}_{tool}_PreToolUse.json
├── Findet: db_id=123
├── UPDATE protokoll WHERE id=123
│ └── SET response, duration_ms, status='completed'
└── Löscht: Tracking-Datei
Duration-Berechnung
Die Dauer wird präzise aus den Timestamps berechnet:
duration_ms = TIMESTAMPDIFF(MICROSECOND, request_timestamp, response_timestamp) / 1000
Damit ist die exakte Tool-Ausführungszeit in Millisekunden erfasst.
Fail-Open Prinzip
Bei Fehlern im Post-Hook:
- Hook gibt trotzdem
exit(0)zurück - Fehler wird zu stderr geloggt
- Claude Code arbeitet normal weiter
Post-Hooks sind nie blockierend, da die Aktion bereits abgeschlossen ist.