Repository hooks
A repository can install scripts that Git runs before it records or sends anything, and that refuse the operation when they are not happy. They are how a project keeps unformatted code, a bad commit message or a failing test suite out of its history — and they apply here exactly as they do in a terminal.
Your repository's hooks run here exactly as they do in a terminal
pre-commit and commit-msg run on every commit you make here, and pre-push on every push. When one refuses, nothing is written and nothing reaches the remote — and the notification card that appears carries the hook's own output, because "a hook refused" tells you nothing you can act on while the lines it printed tell you exactly which file and which rule. A slow one says so while it works, rather than leaving the app looking frozen.
A hook that hangs or misfires should not be able to lock you out, so the caret beside Commit — and the one beside Push — offers to run the operation without them. It is a choice you make once, for one commit, rather than a setting you can leave switched on and forget: hooks quietly not running is the thing this is here to prevent.

Captured from the running app by this scenario.
Do this
- Select the working-tree changes in the graph
- Stage the file
clean.txt - Enter the commit message
chore: tidy the sample config - Open the commit options
You should see
- The commit options offer to skip the hooks
Hooks installed husky-style through core.hooksPath run just the same
A hook doesn't have to live in .git/hooks to run: a repository whose core.hooksPath points somewhere else — the way husky, lefthook and similar tools set themselves up — gets exactly the same treatment, so a project managing its hooks that way isn't silently skipped.
Do this
- Select the working-tree changes in the graph
- Stage the file
trip-precommit.txt - Enter the commit message
chore: this must not land either - Commit the staged changes
You should see
- The repository HEAD commit subject remains
chore: install husky-style hooks under .husky - The notch shows the
pre-commithook's output
This page is generated from apps/e2e/features/git-hooks.feature, the end-to-end test that drives the feature it describes.