How do I add AI-powered checks to my git pre-commit hooks?

What git hooks are

Git hooks are shell scripts that git runs automatically at specific points in the workflow. The pre-commit hook runs before git records a commit — if the script exits with a non-zero status, the commit is blocked.

The pre-commit framework

Managing raw shell scripts in .git/hooks/ is fragile and not portable. The pre-commit framework solves this with a declarative YAML config that is committed to the repo and shared by everyone.

pip install pre-commit
pre-commit install

Create .pre-commit-config.yaml in your repo root. Every developer who clones the repo and runs pre-commit install gets the same hooks.

Useful AI-adjacent hooks

Gitleaks — secret detection

Gitleaks scans staged changes for API keys, tokens, private keys, and passwords across 160+ patterns.

repos:
  - repo: https://github.com/gitleaks/gitleaks
    rev: v8.24.0
    hooks:
      - id: gitleaks

Semgrep — static analysis

Semgrep runs static analysis rules against staged files, catching SQL injection patterns, unsafe deserialization, and framework-specific antipatterns.

  - repo: https://github.com/semgrep/pre-commit
    rev: v1.115.0
    hooks:
      - id: semgrep
        args: ["--config", "p/default", "--error"]

A complete example config

# .pre-commit-config.yaml
repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v5.0.0
    hooks:
      - id: detect-private-key
      - id: check-merge-conflict
      - id: check-added-large-files
        args: ["--maxkb=1000"]
      - id: no-commit-to-branch
        args: ["--branch", "main"]

  - repo: https://github.com/gitleaks/gitleaks
    rev: v8.24.0
    hooks:
      - id: gitleaks

  - repo: https://github.com/semgrep/pre-commit
    rev: v1.115.0
    hooks:
      - id: semgrep
        args: ["--config", "p/default", "--error", "--skip-unknown-extensions"]

Run all hooks against every file to verify the setup:

pre-commit run --all-files

The golden rule: hooks must be fast

If a pre-commit hook takes longer than 5 seconds, developers will bypass it with git commit --no-verify. Run hooks only on staged files, avoid network calls, and move heavy AI analysis to CI.

For a full walkthrough including CI integration, see deployhq.com/git/ai-git-hooks.