A script the harness runs automatically at a fixed point in an agent's loop — before a tool call, after an edit, on session start.
Hooks are how you enforce something rather than request it. A pre-push hook that blocks on uncommitted changes will hold every time; an instruction in a prompt asking the agent to remember to commit will hold most of the time, and the exception is the expensive one.
The useful mental model is that prompts express intent and hooks express policy. Anything whose violation costs real money or time — secrets, destructive commands, pushing broken builds — belongs in a hook, not in a paragraph the model may or may not weigh.