Repository navigation
echook had never been run against Codex itself. Run for the first time, it was silent there: Codex refused both of echook's hook files, so no Codex user heard anything, on any version, by either install route. This release makes it fire.
What changed
- Codex accepts the hook files again. Codex drops a whole
hooks.jsonthat has any top-level key other thandescriptionandhooks; echook's files carried five bookkeeping keys. Both Codex templates now holdhooksonly.install --codex/uninstall --codexstrip those keys from an existing$CODEX_HOME/hooks.jsonand leave everything else in it. - "Finished" plays in
codex exec.Stopis now synchronous (about 0.3 s per turn); before, headless runs exited before the async handler ran. - Older Codex builds. On Codex older than 0.148.0 (which skips every async handler), or when its version can't be read,
install --codexwrites synchronous handlers. - New diagnose code.
audio-hooks diagnosereportsCODEX_HOOKS_FILE_REJECTED, naming the offending keys.
Upgrading
- Native Codex install: run
audio-hooks install --codexonce. Until then the old file stays refused anddiagnosesays so. - Codex plugin: update the plugin from the marketplace.
- Claude Code and Cursor: nothing changes;
audio-hooks upgradeand/reload-pluginsas usual.
Verified
- Live: Codex 0.143.0 and 0.162.1 on Windows 11,
codex execwith a throwawayCODEX_HOMEand a local stand-in for the model API. Before the fix no echook hook ran on either version or route; after it,Stopplayed and showed its toast on all four, andSessionStart,UserPromptSubmit,PreToolUse,PostToolUseand (0.162.1)SessionEndreached the runner. - 795 unit tests on Windows, Linux and macOS with Python 3.9, 3.12 and 3.13; plugin and marketplace validation pass.
Not verified: an interactive Codex session, PermissionRequest, compaction and the subagent events under Codex.
Full entry: CHANGELOG.md.