Hook-события - это точки жизненного цикла, в которых Codex может запустить ваш обработчик. Текущий lifecycle документирует 11 событий, и точный их список стоит держать под рукой из официального reference, потому что от события зависит момент срабатывания и доступный контекст. Важное свойство исполнения: совпавшие обработчики из разных активных источников запускаются вместе, а командные обработчики одного события могут стартовать одновременно - это учитывают, чтобы обработчики не конфликтовали.
События покрывают ключевые моменты работы агента, и их ровно 11. Жизнь сессии - SessionStart и SessionEnd; субагенты - SubagentStart и SubagentStop; работа с инструментами - PreToolUse, PermissionRequest и PostToolUse; сжатие контекста - PreCompact и PostCompact; ввод пользователя - UserPromptSubmit; завершение хода - Stop. PreToolUse особенно важен: он даёт проверить или заблокировать действие до выполнения, и именно на нём строят проверки политики. Ниже эти события сведены в таблицу по группам.
Обработчик описывают структурой с несколькими полями, и её важно понимать точно. Поле type сейчас принимает значение command - то есть выполняется команда; разобранные prompt- и agent-обработчики пока не запускаются. Поле command задаёт команду для macOS и Linux, а commandWindows - отдельную команду для Windows, потому что платформы различаются. Рядом задают timeout. Полезно один раз увидеть эти поля сведёнными вместе, чтобы писать обработчик по контракту, а не наугад.
| Группа | События |
|---|---|
| Сессия | SessionStart, SessionEnd |
| Субагенты | SubagentStart, SubagentStop |
| Инструменты | PreToolUse, PermissionRequest, PostToolUse |
| Сжатие контекста | PreCompact, PostCompact |
| Ввод / ход | UserPromptSubmit, Stop |
Полезно один раз свести поля обработчика в таблицу. Ниже - карта: тип, команда, платформенная команда, таймаут. Пользоваться справочником стоит с оговоркой всей книги: точный набор событий и полей зависит от версии, а редкие и экспериментальные детали сверяют по связанной reference-странице. И помнят практические правила безопасного обработчика из главы про hooks: не печатать секреты, не делать hook молча деструктивным, держать таймаут короче терпения и понятным failure mode.
| Поле handler | Смысл |
|---|---|
| type | Сейчас command; parsed prompt/agent-обработчики пока не запускаются |
| command | Команда для macOS и Linux |
| commandWindows | Отдельная команда для Windows |
| timeout | Ограничение времени; короче пользовательского терпения |
| matcher | На какие действия срабатывает (напр. ^Bash$ для PreToolUse) |