Get startedGet started for free

Make the rule unskippable

Earlier you deleted "never push to main" from CLAUDE.md, because a rule that dangerous shouldn't depend on Claude reading carefully. Now give it somewhere it actually holds.

A PreToolUse hook runs before every matching tool call and can stop it. Wire one onto the Bash tool in the queries project so a push to main is refused rather than requested. Claude Code loads hooks when a session starts, so the hook you write here takes effect on the next run.

This exercise is part of the course

Claude Code in Action

View Course

Exercise instructions

  • Start Claude Code with claude.
  • Ask Claude to write a PreToolUse hook script at hooks/block-main-push.js that refuses any Bash command pushing to main, and explains why.
  • Ask Claude to wire that script into .claude/settings.json as a PreToolUse hook with the matcher set to Bash.
  • Type /exit to exit Claude Code.

Hands-on interactive exercise

Turn theory into action with one of our interactive exercises

Start Exercise