DEV Community

jidong
jidong

Posted on

exit 0 Means Pass, exit 2 Means Block — Taming AI with Claude Code Hooks

CLAUDE.md guidance is strong, but long sessions can dilute adherence. Hooks enforce behavior at execution time.

Semantics

  • exit 0: allow
  • exit 2: block
  • stderr: feedback to Claude
  • stdout: inject context

Common production patterns

  1. PreToolUse dangerous command block (rm -rf, destructive SQL)
  2. SessionStart re-injection after compaction
  3. PreCompact async backups
  4. StatusLine token visibility
  5. PostToolUse auto-format/lint

Use CLAUDE.md for “what to do.”
Use hooks for “what must never happen.”

One exit 2 is often more reliable than 100 lines of “please don’t.”


Top comments (1)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.