Course lesson
Blocking prompts with hooks creates essential guardrails. Validate inputs, enforce conventions, and stop inappropriate requests by exiting with the right code and clear feedback.
Blocking prompts with hooks creates essential guardrails. Validate inputs, enforce conventions, and stop inappropriate requests by exiting with the right code and clear feedback.
Two requirements to reject a prompt:
Stop prompts with banned keywords:
import { type UserPromptSubmitHookInput } from "@anthropic-ai/claude-code"
const input = await Bun.stdin.json() as UserPromptSubmitHookInput
if (input.prompt.includes("Bruno")) {
console.error("We don't talk about Bruno!")
process.exit(2)
}
// No exit = prompt continuesTest it:
claude
How's Bruno doing?
# Error: "We don't talk about Bruno!"Use working directory for location-based blocking:
const input = await Bun.stdin.json() as UserPromptSubmitHookInput
// Block prompts in production directories
if (input.cwd.includes("/production")) {
console.error("⚠️ Claude Code disabled in production directories")
process.exit(2)
}
// Enforce tool preferences
if (input.prompt.match(/\bnpm install\b/)) {
console.error("Use 'pnpm install' instead (team convention)")
process.exit(2)
}Prompts:
How's Bruno doing?npm install reactCourse lesson
Blocking prompts with hooks creates essential guardrails. Validate inputs, enforce conventions, and stop inappropriate requests by exiting with the right code and clear feedback.