1.9 KiB
1.9 KiB
Hooks: Run Code When Claude Code Acts
What this project is
A companion repo for the From AI to Chitta article on Hooks
(concept ID: CC-024). It contains working hook scripts and exercises
that let you set up real guardrails and audit logging in Claude Code.
Article: https://fromaitochitta.com/cc-024
How to use this
- Open Claude Code in this directory:
cd claude-code-hooks && claude - Work through exercises in order:
exercises/01-block-danger.md, then 02, then 03 - Each exercise has concrete steps with expected output
- Compare your results to the expected output described in each exercise
What is configured
- Pre-tool-use hook (
hooks/pre-tool-use.sh): Blocks a set of dangerous shell commands before Claude executes them. Reads JSON from stdin, matches against blocked patterns, exits 2 to block or 0 to allow. - Post-tool-use hook (
hooks/post-tool-use.sh): Logs every tool call tohooks/audit.logwith a timestamp, tool name, and input summary. - Settings (
.claude/settings.json): Wires both hooks into Claude Code.
Code quality expectations
- This is a learning repo. Clarity over cleverness.
- Every exercise must run without modification on a clean clone
- No external dependencies beyond Python 3 (standard on macOS)
- If something does not work as expected, that is useful information: note it
Project structure
hooks/ pre-tool-use.sh, post-tool-use.sh, audit.log (generated)
exercises/ Three numbered exercises with steps and expected output
.claude/ settings.json with hook configuration
CLAUDE.md This file: project instructions
README.md Overview for anyone who clones this repo
Domain
Claude Code Automation
Memory
Keep session notes in a local MEMORY.md (gitignored). This file
(CLAUDE.md) is for instructions. MEMORY.md is for state.