Check fatigue is a check that says no too often. The opposite is worse: one that has stopped saying anything.
Fail closed
When a check can't run or crashes, treat that as a failure and stop, rather than letting the work through. The opposite, fail open, lets the work through when the check breaks.
A check that quietly stops running looks exactly like a check that keeps passing. This is how a project can go months with a security scan that never scanned anything.
Say it to your agent
“If gitleaks is not installed, the pre-commit hook must exit 1 with a message saying how to install it. Don't skip the check silently. Then rename the binary and show me the commit being refused.”