v0.3.11

j178/prekv0.3.11Apr 27, 2026by github-actions[bot]

AI Summary

This release adds an explicit `shell` option for hook entries to specify which shell (sh, bash, pwsh, powershell, or cmd) should execute the snippet. It also enhances the `auto-update` command with new filtering options including `--include-tag`, `--exclude-tag`, `--exclude-repo`, and `--exit-code` to provide more control over version updates.

Key Highlights

  • Added explicit `shell` hook option for entries that should run as shell source (sh, bash, pwsh, powershell, cmd)
  • New `auto-update --include-tag` and `--exclude-tag` glob patterns to filter tag candidates
  • Added `auto-update --exclude-repo` to skip specific repositories
  • Added `auto-update --exit-code` to exit with non-zero when updates are performed
  • Made `--hook-dir` optional for hook-impl

New Features

  • Explicit `shell` option for hook entries (sh, bash, pwsh, powershell, cmd)
  • auto-update --include-tag <pattern> to only consider matching tag names
  • auto-update --exclude-tag <pattern> to skip matching tags (e.g., moving tags or prereleases)
  • auto-update --exclude-repo <repo> to skip repositories
  • auto-update --exit-code to exit with non-zero on updates
  • --hook-dir is now optional for hook-impl
  • Skip shim warning when --script-version is missing

Full Release Notes

## Release Notes

Released on 2026-04-27.

### Highlights

Hook entries now have an explicit `shell` option for shell snippets. Set
`shell: sh`, `bash`, `pwsh`, `powershell`, or `cmd` when an entry should be
evaluated by that shell; leaving it unset keeps prek's direct argv execution.

`prek auto-update` can now filter tag candidates before choosing an update.
Both options take glob patterns: use `--include-tag` to only consider matching
tag names, and `--exclude-tag` to skip matching tags such as moving tags or
prereleases.

### Enhancements

- Add `auto-update --exclude-repo <repo>` to skip repos ([#1983](https://github.com/j178/prek/pull/1983))
- Add `auto-update --exit-code` to exit with non-zero on updates ([#2002](https://github.com/j178/prek/pull/2002))
- Add `auto-update --include-tag <pattern>`/`--exclude-tag <pattern>` to filter tags ([#1984](https://github.com/j178/prek/pull/1984))
- Adds an explicit `shell` hook option for entries that should run as shell source ([#2004](https://github.com/j178/prek/pull/2004))
- Make `--hook-dir` optional for hook-impl ([#1989](https://github.com/j178/prek/pull/1989))
- Skip shim warning when `--script-version` is missing ([#1990](https://github.com/j178/prek/pull/1990))

### Bug fixes

- Install Ruby executable in gem bin ([#2017](https://github.com/j178/prek/pull/2017))
- Use dedicated Android npm package ([#1982](https://github.com/j178/prek/pull/1982))
- Use stable repo keys without breaking cached clones ([#1995](https://github.com/j178/prek/pull/1995))

### Documentation

- Explain prek name ([#1980](https://github.com/j178/prek/pull/1980))
- Clarify `pass_filenames` concurrency docs ([#1999](https://github.com/j178/prek/pull/1999))
- Reorganize documentation references ([#2005](https://github.com/j178/prek/pull/2005))
- Clarify hook author manifest env docs ([#1991](https://github.com/j178/prek/pull/1991))
- docs: add Sentry to users list ([#1981](https://github.com/j178/prek/pull/1981))

### Contributors

- @j178

## Install prek 0.3.11

### Install prebuilt binaries via shell script

```sh
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/j178/prek/releases/download/v0.3.11/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.11/prek-installer.ps1 | iex"
```

### Install prebuilt binaries via Homebrew

```sh
brew install prek
```

## Download prek 0.3.11

|  File  | Platform | Checksum |
|--------|----------|----------|
| [prek-aarch64-apple-darwin.tar.gz](https://github.com/j178/prek/releases/download/v0.3.11/prek-aarch64-apple-darwin.tar.gz) | Apple Silicon macOS | [checksum](https://github.com/j178/prek/releases/download/v0.3.11/prek-aarch64-apple-darwin.tar.gz.sha256) |
| [prek-x86_64-apple-darwin.tar.gz](https://github.com/j178/prek/releases/download/v0.3.11/prek-x86_64-apple-darwin.tar.gz) | Intel macOS | [checksum](https://github.com/j178/prek/releases/download/v0.3.11/prek-x86_64-apple-darwin.tar.gz.sha256) |
| [prek-aarch64-pc-windows-msvc.zip](https://github.com/j178/prek/releases/download/v0.3.11/prek-aarch64-pc-windows-msvc.zip) | ARM64 Windows | [checksum](https://github.com/j178/prek/releases/download/v0.3.11/prek-aarch64-pc-windows-msvc.zip.sha256) |
| [prek-i686-pc-windows-msvc.zip](https://github.com/j178/prek/releases/download/v0.3.11/prek-i686-pc-windows-msvc.zip) | x86 Windows | [checksum](https://github.com/j178/prek/releases/download/v0.3.11/prek-i686-pc-windows-msvc.zip.sha256) |
| [prek-x86_64-pc-windows-msvc.zip](https://github.com/j178/prek/releases/download/v0.3.11/prek-x86_64-pc-windows-msvc.zip) | x64 Windows | [checksum](https://github.com/j178/prek/releases/download/v0.3.11/prek-x86_64-pc-windows-msvc.zip.sha256) |
| [prek-aarch64-unknown-linux-gnu.tar.gz](https://github.com/j178/prek/releases/download/v0.3.11/prek-aarch64-unknown-linux-gnu.tar.gz) | ARM64 Linux | [checksum](https://github.com/j178/prek/releases/download/v0.3.11/prek-aarch64-unknown-linux-gnu.tar.gz.sha256) |
| [prek-i686-unknown-linux-gnu.tar.gz](https://github.com/j178/prek/releases/download/v0.3.11/prek-i686-unknown-linux-gnu.tar.gz) | x86 Linux | [checksum](https://github.com/j178/prek/releases/download/v0.3.11/prek-i686-unknown-linux-gnu.tar.gz.sha256) |
| [prek-riscv64gc-unknown-linux-gnu.tar.gz](https://github.com/j178/prek/releases/download/v0.3.11/prek-riscv64gc-unknown-linux-gnu.tar.gz) | RISCV Linux | [checksum](https://github.com/j178/prek/releases/download/v0.3.11/prek-riscv64gc-unknown-linux-gnu.tar.gz.sha256) |
| [prek-s390x-unknown-linux-gnu.tar.gz](https://github.com/j178/prek/releases/download/v0.3.11/prek-s390x-unknown-linux-gnu.tar.gz) | S390x Linux | [checksum](https://github.com/j178/prek/releases/download/v0.3.11/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.11/prek-x86_64-unknown-linux-gnu.tar.gz) | x64 Linux | [checksum](https://github.com/j178/prek/releases/download/v0.3.11/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.11/prek-armv7-unknown-linux-gnueabihf.tar.gz) | ARMv7 Linux | [checksum](https://github.com/j178/prek/releases/download/v0.3.11/prek-armv7-unknown-linux-gnueabihf.tar.gz.sha256) |
| [prek-aarch64-unknown-linux-musl.tar.gz](https://github.com/j178/prek/releases/download/v0.3.11/prek-aarch64-unknown-linux-musl.tar.gz) | ARM64 MUSL Linux | [checksum](https://github.com/j178/prek/releases/download/v0.3.11/prek-aarch64-unknown-linux-musl.tar.gz.sha256) |
| [prek-i686-unknown-linux-musl.tar.gz](https://github.com/j178/prek/releases/download/v0.3.11/prek-i686-unknown-linux-musl.tar.gz) | x86 MUSL Linux | [checksum](https://github.com/j178/prek/releases/download/v0.3.11/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.11/prek-x86_64-unknown-linux-musl.tar.gz) | x64 MUSL Linux | [checksum](https://github.com/j178/prek/releases/download/v0.3.11/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.11/prek-arm-unknown-linux-musleabihf.tar.gz) | ARMv6 MUSL Linux (Hardfloat) | [checksum](https://github.com/j178/prek/releases/download/v0.3.11/prek-arm-unknown-linux-musleabihf.tar.gz.sha256) |
| [prek-armv7-unknown-linux-musleabihf.tar.gz](https://github.com/j178/prek/releases/download/v0.3.11/prek-armv7-unknown-linux-musleabihf.tar.gz) | ARMv7 MUSL Linux | [checksum](https://github.com/j178/prek/releases/download/v0.3.11/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>
```