v0.3.2
j178/prekv0.3.2Feb 6, 2026by github-actions[bot]
AI Summary
Major release introducing prek.toml as an alternative configuration format and replacing serde-yaml with serde-saphyr for improved YAML parsing with precise error locations.
Key Highlights
- prek.toml support as alternative to .pre-commit-config.yaml
- Replaced serde-yaml with serde-saphyr for better error messages
- New prek util subcommands (identify, yaml-to-toml)
- Detect install source for actionable upgrade hints
- Support Julia language
- Added PREK_QUIET environment variable
New Features
- prek.toml configuration format
- yaml-to-toml conversion utility
- prek util identify command
- serde-saphyr for YAML parsing
- Julia language support
- PREK_QUIET environment variable support
Full Release Notes
## Release Notes
Released on 2026-02-06.
### Highlights
- **`prek.toml` is here!**
You can now use `prek.toml` as an alternative to `.pre-commit-config.yaml` for configuring prek. `prek.toml` mirrors the structure of `.pre-commit-config.yaml`, but TOML is less error-prone. Your existing `.pre-commit-config.yaml` will continue to work, but for new users and new projects, `prek.toml` may make more sense. If you want to switch, run `prek util yaml-to-toml` to convert YAML configs to `prek.toml`. See [configuration docs](https://prek.j178.dev/configuration) for details.
For example, this config:
```yaml
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v6.0.0
hooks:
- id: check-yaml
```
Can be written as `prek.toml` like this:
```toml
[[repos]]
repo = "https://github.com/pre-commit/pre-commit-hooks"
rev = "v6.0.0"
hooks = [ { id = "check-yaml" } ]
```
- **`serde-yaml` has been replaced with `serde-saphyr`**
We replaced the long-deprecated `serde-yaml` crate with [`serde-saphyr`](https://crates.io/crates/serde-saphyr) for YAML parsing. It is written in safe Rust and has better error messages, performance, and security. This lets us provide precise location information for configuration parsing errors, which should make it easier to fix config issues.
For example, this invalid config:
```yaml
repos:
- repo: https://github.com/crate-ci/typos
hooks:
- id: typos
```
Before:
```console
$ prek run
error: Failed to parse `.pre-commit-config.yaml`
caused by: Invalid remote repo: missing field `rev`
```
Now:
```console
$ prek run
error: Failed to parse `.pre-commit-config.yaml`
caused by: error: line 2 column 5: missing field `rev` at line 2, column 5
--> <input>:2:5
|
1 | repos:
2 | - repo: https://github.com/crate-ci/typos
| ^ missing field `rev` at line 2, column 5
3 | hooks:
4 | - id: typos
|
```
- **`prek util` subcommands**
We added a new `prek util` top-level command for miscellaneous utilities that don't fit into other categories. The first two utilities are:
- `prek util identify`: shows the identification tags of files that prek uses for file filtering, which can be useful for debugging and writing `types/types_or/exclude_types` filters.
- `prek util yaml-to-toml`: converts `.pre-commit-config.yaml` to `prek.toml`.
We also moved `prek init-template-dir` under `prek util` for better organization. The old `prek init-template-dir` command is still available (hidden) as an alias for backward compatibility.
### Enhancements
- Add `prek util identify` subcommand ([#1554](https://github.com/j178/prek/pull/1554))
- Add `prek util yaml-to-toml` to convert `.pre-commit-config.yaml` to `prek.toml` ([#1584](https://github.com/j178/prek/pull/1584))
- Detect install source for actionable upgrade hints ([#1540](https://github.com/j178/prek/pull/1540))
- Detect prek installed by the standalone installer ([#1545](https://github.com/j178/prek/pull/1545))
- Implement `serialize_yaml_scalar` using `serde-saphyr` ([#1534](https://github.com/j178/prek/pull/1534))
- Improve max cli arguments length calculation ([#1518](https://github.com/j178/prek/pull/1518))
- Move `identify` and `init-template-dir` under the `prek util` top-level command ([#1574](https://github.com/j178/prek/pull/1574))
- Replace serde-yaml with serde-saphyr (again) ([#1520](https://github.com/j178/prek/pull/1520))
- Show precise location for config parsing error ([#1530](https://github.com/j178/prek/pull/1530))
- Support `Julia` language ([#1519](https://github.com/j178/prek/pull/1519))
- Support `prek.toml` ([#1271](https://github.com/j178/prek/pull/1271))
- Added `PREK_QUIET` environment variable support ([#1513](https://github.com/j178/prek/pull/1513))
- Remove upper bound constraint of uv version ([#1588](https://github.com/j178/prek/pull/1588))
### Bug fixes
- Do not make the child a session leader ([#1586](https://github.com/j178/prek/pull/1586))
- Fix FilePattern schema to accept plain strings ([#1564](https://github.com/j178/prek/pull/1564))
- Use semver fallback sort when tag timestamps are equal ([#1579](https://github.com/j178/prek/pull/1579))
### Documentation
- Add `OpenClaw` to the list of users ([#1517](https://github.com/j178/prek/pull/1517))
- Add `cachix/devenv`, `apache/lucene`, `copper-project/copper-rs` as projects using prek ([#1531](https://github.com/j178/prek/pull/1531), [#1514](https://github.com/j178/prek/pull/1514), [#1569](https://github.com/j178/prek/pull/1569))
- Add document about authoring remote hooks ([#1571](https://github.com/j178/prek/pull/1571))
- Add `llms.txt` generation for LLM-friendly documentation ([#1553](https://github.com/j178/prek/pull/1553))
- Document using `--refresh` to pick up `.prekignore` changes ([#1575](https://github.com/j178/prek/pull/1575))
- Fix PowerShell completion instruction syntax ([#1568](https://github.com/j178/prek/pull/1568))
- Update quick start to use `prek.toml` ([#1576](https://github.com/j178/prek/pull/1576))
### Other changes
- Include `prek.toml` in run hint for config filename ([#1578](https://github.com/j178/prek/pull/1578))
### Contributors
- @fatelei
- @domenkozar
- @makeecat
- @fllesser
- @j178
- @copilot-swe-agent
- @oopscompiled
- @rmuir
- @shaanmajid
## Install prek 0.3.2
### Install prebuilt binaries via shell script
```sh
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/j178/prek/releases/download/v0.3.2/prek-installer.sh | sh
```
### Install prebuilt binaries via powershell script
```sh
powershell -ExecutionPolicy Bypass -c "irm https://github.com/j178/prek/releases/download/v0.3.2/prek-installer.ps1 | iex"
```
### Install prebuilt binaries via Homebrew
```sh
brew install j178/tap/prek
```
### Install prebuilt binaries into your npm project
```sh
npm install @j178/prek@0.3.2
```
## Download prek 0.3.2
| File | Platform | Checksum |
|--------|----------|----------|
| [prek-aarch64-apple-darwin.tar.gz](https://github.com/j178/prek/releases/download/v0.3.2/prek-aarch64-apple-darwin.tar.gz) | Apple Silicon macOS | [checksum](https://github.com/j178/prek/releases/download/v0.3.2/prek-aarch64-apple-darwin.tar.gz.sha256) |
| [prek-x86_64-apple-darwin.tar.gz](https://github.com/j178/prek/releases/download/v0.3.2/prek-x86_64-apple-darwin.tar.gz) | Intel macOS | [checksum](https://github.com/j178/prek/releases/download/v0.3.2/prek-x86_64-apple-darwin.tar.gz.sha256) |
| [prek-aarch64-pc-windows-msvc.zip](https://github.com/j178/prek/releases/download/v0.3.2/prek-aarch64-pc-windows-msvc.zip) | ARM64 Windows | [checksum](https://github.com/j178/prek/releases/download/v0.3.2/prek-aarch64-pc-windows-msvc.zip.sha256) |
| [prek-i686-pc-windows-msvc.zip](https://github.com/j178/prek/releases/download/v0.3.2/prek-i686-pc-windows-msvc.zip) | x86 Windows | [checksum](https://github.com/j178/prek/releases/download/v0.3.2/prek-i686-pc-windows-msvc.zip.sha256) |
| [prek-x86_64-pc-windows-msvc.zip](https://github.com/j178/prek/releases/download/v0.3.2/prek-x86_64-pc-windows-msvc.zip) | x64 Windows | [checksum](https://github.com/j178/prek/releases/download/v0.3.2/prek-x86_64-pc-windows-msvc.zip.sha256) |
| [prek-aarch64-unknown-linux-gnu.tar.gz](https://github.com/j178/prek/releases/download/v0.3.2/prek-aarch64-unknown-linux-gnu.tar.gz) | ARM64 Linux | [checksum](https://github.com/j178/prek/releases/download/v0.3.2/prek-aarch64-unknown-linux-gnu.tar.gz.sha256) |
| [prek-i686-unknown-linux-gnu.tar.gz](https://github.com/j178/prek/releases/download/v0.3.2/prek-i686-unknown-linux-gnu.tar.gz) | x86 Linux | [checksum](https://github.com/j178/prek/releases/download/v0.3.2/prek-i686-unknown-linux-gnu.tar.gz.sha256) |
| [prek-riscv64gc-unknown-linux-gnu.tar.gz](https://github.com/j178/prek/releases/download/v0.3.2/prek-riscv64gc-unknown-linux-gnu.tar.gz) | RISCV Linux | [checksum](https://github.com/j178/prek/releases/download/v0.3.2/prek-riscv64gc-unknown-linux-gnu.tar.gz.sha256) |
| [prek-s390x-unknown-linux-gnu.tar.gz](https://github.com/j178/prek/releases/download/v0.3.2/prek-s390x-unknown-linux-gnu.tar.gz) | S390x Linux | [checksum](https://github.com/j178/prek/releases/download/v0.3.2/prek-s390x-unknown-linux-gnu.tar.gz.sha256) |
| [prek-x86_64-unknown-linux-gnu.tar.gz](https://github.com/j178/prek/releases/download/v0.3.2/prek-x86_64-unknown-linux-gnu.tar.gz) | x64 Linux | [checksum](https://github.com/j178/prek/releases/download/v0.3.2/prek-x86_64-unknown-linux-gnu.tar.gz.sha256) |
| [prek-armv7-unknown-linux-gnueabihf.tar.gz](https://github.com/j178/prek/releases/download/v0.3.2/prek-armv7-unknown-linux-gnueabihf.tar.gz) | ARMv7 Linux | [checksum](https://github.com/j178/prek/releases/download/v0.3.2/prek-armv7-unknown-linux-gnueabihf.tar.gz.sha256) |
| [prek-aarch64-unknown-linux-musl.tar.gz](https://github.com/j178/prek/releases/download/v0.3.2/prek-aarch64-unknown-linux-musl.tar.gz) | ARM64 MUSL Linux | [checksum](https://github.com/j178/prek/releases/download/v0.3.2/prek-aarch64-unknown-linux-musl.tar.gz.sha256) |
| [prek-i686-unknown-linux-musl.tar.gz](https://github.com/j178/prek/releases/download/v0.3.2/prek-i686-unknown-linux-musl.tar.gz) | x86 MUSL Linux | [checksum](https://github.com/j178/prek/releases/download/v0.3.2/prek-i686-unknown-linux-musl.tar.gz.sha256) |
| [prek-x86_64-unknown-linux-musl.tar.gz](https://github.com/j178/prek/releases/download/v0.3.2/prek-x86_64-unknown-linux-musl.tar.gz) | x64 MUSL Linux | [checksum](https://github.com/j178/prek/releases/download/v0.3.2/prek-x86_64-unknown-linux-musl.tar.gz.sha256) |
| [prek-arm-unknown-linux-musleabihf.tar.gz](https://github.com/j178/prek/releases/download/v0.3.2/prek-arm-unknown-linux-musleabihf.tar.gz) | ARMv6 MUSL Linux (Hardfloat) | [checksum](https://github.com/j178/prek/releases/download/v0.3.2/prek-arm-unknown-linux-musleabihf.tar.gz.sha256) |
| [prek-armv7-unknown-linux-musleabihf.tar.gz](https://github.com/j178/prek/releases/download/v0.3.2/prek-armv7-unknown-linux-musleabihf.tar.gz) | ARMv7 MUSL Linux | [checksum](https://github.com/j178/prek/releases/download/v0.3.2/prek-armv7-unknown-linux-musleabihf.tar.gz.sha256) |
## Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the [GitHub CLI](https://cli.github.com/manual/gh_attestation_verify):
```sh
gh attestation verify <file-path of downloaded artifact> --repo j178/prek
```
You can also download the attestation from [GitHub](https://github.com/j178/prek/attestations) and verify against that directly:
```sh
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>
```