NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #209 most downloaded on PyPI
A framework for managing and maintaining multi-language pre-commit hooks.
Last release 1 months ago
10 Aug 2026
Ships fairly regularly
a new release about every 3 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
204 releases · first in 2014
Fix --all-files, detection of staged files, detection of manually edited files during merge conflict, and detection of files to push for non-ascii fil
--all-files, detection of staged files, detection of manually edited
files during merge conflict, and detection of files to push for non-ascii
filenames.Only mention locking when waiting for a lock.
IOError during locking in timeout situation on windows under python 2.One column per quarter.
Add a new docker_image language type. docker_image is intended to be a lightweight hook type similar to system / script which allows one to use an exi
docker_image language type. docker_image is intended to be a
lightweight hook type similar to system / script which allows one to use
an existing docker image that provides a hook. docker_image hooks can
also be used as repository local hooks.Allow commit-msg hook to be uninstalled
commit-msg hook to be uninstalledsample-config--no-stash and --allow-unstaged-configvalidate_config hook pre-commit hook.pre-commit processes would
attempt to install the same repository.autoupdate attempts to maintain config formatting.
Initialize submodules in hook repositories.
Improve node support when running under cygwin.
Remove backward compatibility with repositories providing metadata via hooks.yaml. New repositories should provide .pre-commit-hooks.yaml. Run pre-com
hooks.yaml. New repositories should provide .pre-commit-hooks.yaml.
Run pre-commit autoupdate to upgrade to the latest repositories.apply.whitespace = error.core-autocrlf = true.Add support for the commit-msg git hook
commit-msg git hookRecover from invalid python virtualenvs
Work around a windows-specific virtualenv bug pypa/virtualenv#1062 This failure mode was introduced in 0.15.1
Use a more intelligent default language version for python
Add types and exclude_types for filtering files. These options take an array of "tags" identified for each file. The tags are sourced from identify. O
types and exclude_types for filtering files. These options take
an array of "tags" identified for each file. The tags are sourced from
identify. One can list the tags
for a file by running identify-cli filename.files is now optional (defaulting to '')always_run + missing files also defaults to files: '' (previously it
defaulted to '^$' (this reverses e150921c).Expose --origin and --source as PRE_COMMIT_ORIGIN and PRE_COMMIT_SOURCE environment variables when running as pre-push.
--origin and --source as PRE_COMMIT_ORIGIN and
PRE_COMMIT_SOURCE environment variables when running as pre-push.Use --no-ext-diff when running git diff
--no-ext-diff when running git diffDon't crash when always_run is True and files is not provided.
always_run is True and files is not provided.VIRTUALENV_NO_DOWNLOAD when making python virtualenvs.Add a pre-commit sample-config command
pre-commit sample-config commandautoupdate now defaults to --tags-only, use --bleeding-edge for the
old behaviorlog_file in hook configuration to tee hook output to a
file for CI consumption, etc.pass_filenames option to allow disabling automatic filename
positional arguments to hooks.Fix regression in 0.13.5: allow always_run and files together despite doing nothing.
always_run and files together despite
doing nothing.0.13.4 contained incorrect files
Add --show-diff-on-failure option to pre-commit run
--show-diff-on-failure option to pre-commit runjsonschema with better error messagesAdd --allow-missing-config to install: allows git commit without a configuration.
--allow-missing-config to install: allows git commit without a
configuration.Allow minimum_pre_commit_version for local hooks
minimum_pre_commit_version for local hooksFix placeholder gem for ruby local hooks
Autoupdate now works even when the current state is broken.
additional_dependencies and language are now allowed in repo: local.Fix docker hooks on older (<1.12) docker
golang hooks now support additional_dependencies
As such, the previous hooks.yaml is now deprecated and generates a warning.
- SwiftPM support.
shlex entry of docker based hooks.
Add an install-hooks command similar to install --install-hooks but without the install side-effects.
install-hooks command similar to install --install-hooks but
without the install side-effects.Warn when cygwin / python mismatch
Fix python hook installation when a strange setup.cfg exists
Remove some python2.6 compatibility
Remove some python2.6 compatibility
Only consider forward diff in changed files
Fix a crash introduced in 0.8.0 when an executable was not found
Fix regression introduced in 0.8.0 when already using rbenv with no configured ruby hook version
Fix --files when running in a subdir
No longer create empty directories on windows with latest virtualenv
Consider dead symlinks as files when committing
Produce error message instead of crashing on non-utf8 installation failure
Fix regression introduced in 0.7.1 breaking git commit -a
git commit -aAdd always_run setting for hooks to run even without file changes.
always_run setting for hooks to run even without file changes.Support running pre-commit inside submodules
Store state about additional_dependencies for rollforward/rollback compatibility
Allow '.format('-like strings in arguments
Print a useful message when a hook id is not present
Add additional_dependencies to hook configuration.
additional_dependencies to hook configuration.- Allow args for pcre hooks
Fix regression introduced in 0.6.3 regarding hooks which make non-utf8 diffs
Fail a hook if it makes modifications to the working directory
expected_return_codeUse --no-ri --no-rdoc instead of --no-document for gem to fix old gem
Fix pre-push when pushing something that's already up to date
Filter hooks by stage (commit, push).
Rename the validate entrypoints
Allow hooks to produce outputs with arbitrary bytes
Fix autoupdate with "local" hooks - don't purge local hooks.
Fix autoupdate with "local" hooks
Fix bug with unknown non-ascii hook-id
Add a new "local" hook type for running hooks without remote configuration.
Your coding agent can read these notes before it upgrades. Set up the MCP server →