Hooks
Gestionnaires d'événements d'outils qui se déclenchent sur SessionStart, PreToolUse et Stop, chargeant des contextes de message imposant l'isolation de git et la discipline des plans.
Les hooks se déclenchent sur les événements d'outils et chargent des contextes de message que
l'assistant traite comme des prompts système supplémentaires. Le câblage vit dans
le bloc de hooks du settings.json de Claude Code, le fichier de hooks hooks.json de Codex
et la table de hooks du settings.json de Qwen Code.
| Événement | Délai d'attente | Objectif |
|---|---|---|
| SessionStart | 30 secondes | Lire la mémoire, vérifier l'état du plan, signaler la disponibilité |
| PreCompact | 30 secondes | Vérifier que l'état est externalisé avant la compaction |
| PostCompact | 30 secondes | Restaurer l'état de travail après la compaction |
| Stop | 60 secondes | Externalisation en fin de session |
| PreToolUse (Bash) | 10 secondes | Validation de Bash — isolation des artefacts git |
| PreToolUse (Write/Edit/NotebookEdit/apply_patch) | 10 secondes | Isolation des références aux plans, vérifications de frontmatter |
Répartiteur
Les entrées de hook installées invoquent le répartiteur par le chemin absolu du script.
Les modèles de réglages portent le jeton ${HARNESS_ROOT} —
python "${HARNESS_ROOT}/apothem/hooks/dispatch.py" <event> [<message-name>]
— que l'installateur rend en chemin réel de la racine du harness au moment
de l'installation (Claude Code et Qwen Code matérialisent le répartiteur sous
<harness-root>/apothem/hooks/ ; Codex sous <harness-root>/hooks/). Le
répartiteur est un script autonome de la bibliothèque standard : il amorce son propre sys.path,
de sorte qu'aucun paquet apothem importable n'est nécessaire sur l'hôte. Depuis un
checkout des sources, la forme de module python -m apothem.hooks.dispatch <event> (avec
PYTHONPATH=src) exécute le même code pour le développement. Le répartiteur charge
hooks/lib/resolve_root.py pour la résolution de la racine de l'écosystème et délègue à
hooks/emit_hook_context.py et hooks/session_start_bootstrap.py.
Contextes de message
Les contextes Markdown par événement vivent sous src/apothem/hooks/messages/ :
postcompact.md,precompact.md,stop.mdpretooluse-bash.md,pretooluse-write.md,pretooluse-edit.md,pretooluse-notebookedit.md
Chaque fichier de contexte est chargé par le répartiteur lorsque son événement se déclenche et que son argument de contexte est enregistré dans le fichier de réglages.
Inventaire généré des messages de hook
| 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 |
Travailleurs délégués
Travailleurs délégués persistants pour la recherche, l'audit, la qualité et l'orchestration, avec contrats de frontmatter et protocoles d'isolation de déploiement.
Styles de sortie
Profils de ton d'opérateur (Architecte Senior, Ingénieur Concis, Auditeur Forensique) activés par session via la commande /output-style.