PostToolUse runs after a tool succeeds. You can't undo the action, but you can react to it.
The most common use is auto-formatting after edits. When Claude writes a file, your hook runs Prettier immediately, so Claude sees the formatted result without you reminding it to format every time.
Other uses: run your linter after every write, log tool calls for audit trails, trigger a test run after file changes, or update a timestamp in a metadata file. I find the auto-format pattern alone saves more back-and-forth than any other hook.
Hooks receive the same JSON stdin format as PreToolUse, plus a tool_response field. For PostToolUse, stdout only shows in verbose mode. Return JSON with an additionalContext field to inject content into Claude's context.