pre-commit ci

a continuous integration service for the pre-commit framework

Developers spend a fair chunk of time during their development flow on fixing relatively trivial problems in their code. both enforces that these issues are discovered (which is opt-in for each developer's workflow via pre-commit) but also fixes the issues automatically, letting developers focus their time on more valuable problems.
Sign In With GitHub


supported hosting platforms: currently only GitHub is supported, more to come in the future!

configuration: zero configuration setup -- nothing is needed beyond the .pre-commit-config.yaml file you already have!

auto fixing pull requests: if tools make changes to files during a pull request, will automatically fix the pull request. will run on all pull request commits, but will not push for commits made by bots. auto fixing a pull request

speed: much faster than comparable, free CI systems

chart comparing CI speeds

caching: tool caching is baked in and shared across all users. this means that the more users there are of, the more likely you will get faster builds! build output

automatic updates: will periodically autoupdate your configuration ensuring that your hook versions are kept up to date. this autoupdate is currently scheduled weekly at approximately 16:00 UTC Monday.

here is an example autoupdate pull request. auto updating a repository

re-running a pull request: you can trigger a re-run on a pull request by commenting run (must appear on a line by itself). alternatively, one can attach a run label to the pull request.

skipping push runs: skip a run by putting [skip ci], [ci skip], [skip], or [ skip] in the commit message.

configuration is configured in .pre-commit-config.yaml in the ci: section.

note: ci: configuration is entirely optional and will assume the defaults below.


(optional, default: '[] auto fixes [...]') custom commit message for PR autofixes.


(optional, default: true) whether to autofix pull requests. when disabled, comment / label " autofix" to a pull request to manually trigger auto-fixing.


(optional: default '') branch to send autoupdate PRs to.

by default, will update the default branch of the repository.

this configuration option and other autoupdate settings will be read from the .pre-commit-config.yaml in the default branch of the repository.


(optional, default: '[] pre-commit autoupdate') custom commit message for autoupdate PRs.


(optional, default: 'weekly') control when the autoupdate runs, possible values: 'weekly', 'monthly', 'quarterly'.


(optional, default: []) a list of hook ids to skip only in

for example:

    skip: [pylint]

-   repo: local
    -   id: pylint
        # ...

this is equivalent to running SKIP=pylint pre-commit ...


(optional, default: false) whether to recursively check out submodules

a full config with all the defaults:

    autofix_commit_msg: |
        [] auto fixes from hooks

        for more information, see
    autofix_prs: true
    autoupdate_branch: ''
    autoupdate_commit_msg: '[] pre-commit autoupdate'
    autoupdate_schedule: weekly
    skip: []
    submodules: false

alternative using github actions also provides a lite version which adds auto fixing to GitHub actions.

pricing will always be free for open source repositories.

all paid plans also include lite pro at no additional cost.

for private and organization repository support see the GitHub Marketplace.

for single-tenant or larger installations, contact [email protected].

following the development


if you'd like to support the development there are two ways to sponsor: