Codex + Claude Code

HookLint

Hooks look portable until one harness ignores a matcher, skips a handler type, or launches the same command from a different directory. HookLint catches those differences before the agent starts.

hooklint · read-only static check
$ hooklint . --harness codex

Scanned 1 source, 1 group, 1 handler.

WARNING codex-handler-skipped
  Codex currently skips prompt handlers.

WARNING codex-async-skipped
  Async hooks are parsed, then skipped.

Result: 0 errors, 2 warnings.

Cross-harness checks

Separates valid shared structure from events and handler behavior that differ between Codex and Claude Code.

Safe by construction

Reads repository configuration without executing commands, contacting URLs, evaluating prompts, or exposing handler bodies.

CI ready

Text for humans, JSON for tooling, Markdown for reviews, and a strict exit code when you want warnings to fail.

Run once without installing

Requires Node.js 18 or newer and has no runtime dependencies.

npx --yes --registry=https://codeberg.org/api/packages/automa-tan/npm/ \
  hooklint . --harness auto