Hooks
Werkzeug-Ereignishandler, die bei SessionStart, PreToolUse und Stop auslösen und Nachrichtenkontexte laden, die die git-Isolation und die Plan-Disziplin durchsetzen.
Hooks lösen bei Werkzeugereignissen aus und laden Nachrichtenkontexte, die der
Assistent als zusätzliche System-Prompts behandelt. Die Verdrahtung liegt im
Hook-Block der settings.json von Claude Code, der Hook-Datei hooks.json von Codex
und der Hook-Zuordnung der settings.json von Qwen Code.
| Ereignis | Timeout | Zweck |
|---|---|---|
| SessionStart | 30 Sekunden | Speicher lesen, Plan-Status prüfen, Bereitschaft melden |
| PreCompact | 30 Sekunden | Vor der Kompaktierung prüfen, ob der Zustand externalisiert ist |
| PostCompact | 30 Sekunden | Arbeitszustand nach der Kompaktierung wiederherstellen |
| Stop | 60 Sekunden | Externalisierung am Sitzungsende |
| PreToolUse (Bash) | 10 Sekunden | Bash-Validierung — Isolation von git-Artefakten |
| PreToolUse (Write/Edit/NotebookEdit/apply_patch) | 10 Sekunden | Isolation von Plan-Referenzen, Frontmatter-Prüfungen |
Dispatcher
Installierte Hook-Einträge rufen den Dispatcher über den absoluten Skriptpfad auf.
Die Einstellungsvorlagen tragen das Token ${HARNESS_ROOT} —
python "${HARNESS_ROOT}/apothem/hooks/dispatch.py" <event> [<message-name>]
— das der Installer zur Installationszeit zum realen Pfad des harness-Stammverzeichnisses
rendert (Claude Code und Qwen Code materialisieren den Dispatcher unter
<harness-root>/apothem/hooks/; Codex unter <harness-root>/hooks/). Der
Dispatcher ist ein eigenständiges Standardbibliotheks-Skript: Er initialisiert seinen eigenen sys.path,
sodass auf dem Host kein importierbares apothem-Paket benötigt wird. Aus einem
Quell-Checkout führt die Modulform python -m apothem.hooks.dispatch <event> (mit
PYTHONPATH=src) denselben Code für die Entwicklung aus. Der Dispatcher lädt
hooks/lib/resolve_root.py für die Auflösung des Ökosystem-Stammverzeichnisses und delegiert an
hooks/emit_hook_context.py und hooks/session_start_bootstrap.py.
Nachrichtenkontexte
Die ereignisbezogenen Markdown-Kontexte liegen unter src/apothem/hooks/messages/:
postcompact.md,precompact.md,stop.mdpretooluse-bash.md,pretooluse-write.md,pretooluse-edit.md,pretooluse-notebookedit.md
Jede Kontextdatei wird vom Dispatcher geladen, wenn ihr Ereignis auslöst und ihr Kontextargument in der Einstellungsdatei registriert ist.
Generiertes Hook-Nachrichtenverzeichnis
| Name | Description | Source |
|---|---|---|
postcompact | Post-compaction Blind Bootstrap (CM-24 §6.2). Restore working state from durable files; conversation context is now compressed. | src/apothem/hooks/messages/postcompact.md |
posttooluse-proactive-compaction | Proactive-compaction tracker for PostToolUse tool calls. | src/apothem/hooks/messages/posttooluse-proactive-compaction.md |
precompact | Pre-compaction protocol (CM-24 §2.3). Externalize all in-conversation state BEFORE the harness compresses context. | src/apothem/hooks/messages/precompact.md |
pretooluse-askuserquestion-recommended | Call-time (Recommended)-marker guard for AskUserQuestion tool calls. | src/apothem/hooks/messages/pretooluse-askuserquestion-recommended.md |
pretooluse-bash-plan-guard | Plans-Discipline write guard for Bash tool calls (companion to pretooluse-write-plan-guard.md). | src/apothem/hooks/messages/pretooluse-bash-plan-guard.md |
pretooluse-bash | CM-7 git-artifact isolation + M12 numeric-prefix discipline + M15 human-only authorship. | src/apothem/hooks/messages/pretooluse-bash.md |
pretooluse-conformity | > Advisory: this hook reports; it does not block. Mechanical enforcement runs in CI. | src/apothem/hooks/messages/pretooluse-conformity.md |
pretooluse-dependency-guard | Dependency-manifest supply-chain guard (advisory). | src/apothem/hooks/messages/pretooluse-dependency-guard.md |
pretooluse-edit-header-guard | SPDX-header inject guard for Edit tool calls. | src/apothem/hooks/messages/pretooluse-edit-header-guard.md |
pretooluse-edit | Codebase isolation (Edit scope). | src/apothem/hooks/messages/pretooluse-edit.md |
pretooluse-eval-guard | Dynamic-eval / unsafe-deserialization guard — advisory prompt-injection defense. | src/apothem/hooks/messages/pretooluse-eval-guard.md |
pretooluse-notebookedit | Codebase isolation (notebook scope). | src/apothem/hooks/messages/pretooluse-notebookedit.md |
pretooluse-write-header-guard | SPDX-header inject guard for Write tool calls. | src/apothem/hooks/messages/pretooluse-write-header-guard.md |
pretooluse-write-plan-guard | Plans-Discipline write guard for Write / Edit / NotebookEdit tool calls. | src/apothem/hooks/messages/pretooluse-write-plan-guard.md |
pretooluse-write | Codebase isolation + frontmatter compliance. | src/apothem/hooks/messages/pretooluse-write.md |
sessionstart | Session-start conformity posture. | src/apothem/hooks/messages/sessionstart.md |
stop | Session-end protocol (CM-14 + CM-24 §2.5 + CM-26 + CM-22 §2/§4). | src/apothem/hooks/messages/stop.md |
Delegierte Worker
Persistente delegierte Worker für Recherche, Audit, Qualität und Orchestrierung mit Frontmatter-Verträgen und Isolationsprotokollen für die Bereitstellung.
Ausgabestile
Bediener-Tonprofile (Senior Architect, Concise Engineer, Forensic Auditor), pro Sitzung über den /output-style-Befehl aktiviert.