Under the hood, this is backed by git-based snapshots taken before and after a Bash command (via a sandboxed git wrapper), with filesystem watchers (inotify on Linux, fs.watch elsewhere) to catch changes made outside the tracked diff.
The result appears as bashEditDiff on the Bash tool's result, and PostToolUse hooks for Bash now receive the list of changed files in tool_response too.
It's skipped for destructive git operations run via Bash (checkout, switch, stash, pull, merge, rebase, reset, restore, clean, cherry-pick, revert), and reports status through telemetry (bash_edit_diff, and unavailable/interrupted variants).
Outside auto or bypassPermissions modes, only a user, flag, or policy setting can turn this on; the docs describe it as on by default when the Bash tool handles file edits.
Why
This lets Claude Code (and hooks watching its actions) see exactly what a shell command changed on disk, without having to separately diff the repo, making Bash tool calls more transparent and auditable.