Home

Hooks

Silent enchantments that cast themselves.

CurrentReviewed 2026-03-31

Overview

Hooks are shell commands configured in settings.json that automatically execute in response to Claude Code events — before/after tool calls, on session start, on prompt submission. We use them for auto-formatting code after edits, killing stale port processes, and logging session activity. Hooks run silently and can block or modify Claude's behavior.

Current Progress

  • 5 hooks active: auto-format, port guard, session log, lint gate, pre-submit
  • Post-write prettier formatting working reliably
  • Port 3000 kill on dev server start prevents conflicts

Areas of Improvement

  • No hook for auto-running tests after file changes
  • Session logging could capture more structured data for analytics
  • Missing hook to validate .env changes don't leak secrets
  • Could add notification hook for long-running operations

References

Setup

  1. Configure hooks in .claude/settings.json or ~/.claude/settings.json
  2. Define event type: PreToolUse, PostToolUse, Notification, etc.
  3. Specify matcher for tool-specific hooks (e.g., only on Write tool)
  4. Set the shell command to execute

Usage

  • Auto-format: Run prettier after every file write
  • Port guard: Kill port 3000 before dev server starts
  • Session log: Record session activity on start
  • Lint gate: Run eslint before commits
  • Pre-submit: Validate prompt before sending

Config Files

.claude/settings.json
~/.claude/settings.json