hk Release Notes
Last updated: Mar 7, 2026
- Mar 7, 2026
- Date parsed from source:Mar 7, 2026
- First seen by Releasebot:Mar 7, 2026
v1.38.0: Fail on fix, cleaner builtins
jdx releases a small update with a new fail_on_fix hook option for workflows to apply fixes but block commits, default false. Also fixes built-in linter configs by removing redundant check_diff for black, ruff_format, and taplo_format, and adjusts ruff to avoid skipping fixes.
A small release that adds a new fail_on_fix hook option for workflows that want fixes applied but commits blocked, along with correctness improvements to several built-in linter configurations.
Added
- fail_on_fix hook option: Hooks can now set fail_on_fix = true to fail when fix commands actually modify files. This is designed for stage = false pre-commit workflows where you want fixers to apply changes but block the commit so you can review and stage them manually. Defaults to false to preserve existing behavior. (@jdx) #725
hooks { ["pre-commit"] { fix = true stage = false fail_on_fix = true steps = linters } }Fixed
Cleaner builtin linter configs: Removed redundant check commands from black, ruff_format, and taplo_format builtins where check_diff already covers all issues. Removed check_diff from the ruff builtin because ruff check --diff can exit 0 even when non-fixable issues exist, which caused hk to incorrectly skip the fix step. Thanks @nkakouros! #726
Full Changelog
v1.37.0...v1.38.0
Original source Report a problem - Mar 3, 2026
- Date parsed from source:Mar 3, 2026
- First seen by Releasebot:Mar 4, 2026
v1.37.0: Smarter Config, Hook-Level Env, and Better Fix/Check Semantics
HK release brings major config overhaul with XDG support, hook-level env vars, and corrected diff logic. Global hkrc now supports full Config.pkl, clearer precedence, and deprecation of legacy paths. Includes improved discovery and new contributors.
Highlights
This release overhauls global configuration handling, adds hook-level environment variables, and fixes several correctness issues in check/fix workflows.
- Overhauled global config (hkrc) -- The global user configuration has been significantly reworked. hk now supports the full Config.pkl format in hkrc files (not just UserConfig.pkl), fixing a panic when using the documented example with hooks and steps. The recommended config location is now ~/.config/hk/config.pkl, with clear "project wins" merge semantics. The legacy .hkrc.pkl paths and --hkrc flag are deprecated and will be removed in v2. Thanks @ivy! #710
- Hook-level env support -- Hooks can now define environment variables that are automatically passed to all their steps, reducing duplication when multiple steps need the same variables. Step-level env takes precedence over hook-level env. #709
- check_diff correctness in check mode -- Previously, steps with check_diff defined would always run the diff command first, even in check mode. This could hide non-auto-fixable errors when the diff command exited 0. The diff-first shortcut is now gated to fix mode only. Thanks @nkakouros! #717
- Added
- Hook-level env: Define environment variables once per hook instead of repeating them on every step. Step-level env takes precedence when both define the same variable. (@jdx) #709
- hooks {
["pre-push"] {
env {
["HK_PROFILES"] = "types"
}
steps = linters
}
} - Go-style diff parsing: hk now correctly handles unified diffs where the --- line has a .orig suffix (common with Go tools like gofmt -d). (@jdx, co-authored by @thejcannon) #704
- XDG config directory support: Global configuration can now be placed at ~/.config/hk/config.pkl (or a custom path via HK_CONFIG_DIR). (@ivy) #710
- Config precedence documentation: A clear precedence table and hkrc merge semantics are now documented, covering built-in defaults through CLI flags. (@ivy) #701 #710
- Fixed
- end-of-file-fixer now enforces that files end with exactly one trailing newline, matching pre-commit-hooks behavior. Previously it would add a missing newline but leave multiple trailing newlines untouched. (@jdx) #708
- pre-commit with stash no longer passes untracked files to linters as input. Untracked files were incorrectly included in the unstaged files set, causing them to be processed during hk run pre-commit. Thanks @nkakouros! #716
- check_diff in check mode no longer silently swallows errors. When a step defines check_diff, hk previously ran the diff command first in all modes. If the diff command exited 0 (no auto-fixable issues), non-auto-fixable violations detected by the regular check command were hidden. The diff-first shortcut is now only used in fix mode. Thanks @nkakouros! #717
- hkrc format support: Global config files can now use the full Config.pkl format with hooks containing steps that have check, fix, and glob fields. Previously this caused a panic because hk always deserialized hkrc as UserConfig. (@ivy) #710
- hkrc discovery path: Default hkrc discovery now correctly checks ~/.hkrc.pkl and ~/.config/hk/config.pkl, instead of only looking for .hkrc.pkl relative to the current directory. (@ivy) #710
- --all flag documentation now correctly describes what the flag does. Thanks @nkakouros! #715
- Deprecated
- .hkrc.pkl and --hkrc flag are deprecated and will be removed in hk v2. Use ~/.config/hk/config.pkl for global configuration or hk.local.pkl in the project root for per-project overrides. Deprecation warnings are shown when legacy paths are used. #710
New Contributors
- @ivy made their first contribution in #701
- @nkakouros made their first contribution in #716
Full Changelog: v1.36.0...v1.37.0
Original source Report a problem All of your release notes in one feed
Join Releasebot and get updates from jdx and hundreds of other software products.
- Feb 9, 2026
- Date parsed from source:Feb 9, 2026
- First seen by Releasebot:Feb 10, 2026
v1.36.0 - Nix and Format Friends
HK expands its built‑in linter with Nix and infra tooling, adds a PR check mode, and a tmpdir option for clean runs. New builtins for cmake_format, deadnix, hclfmt, nil, nixf_diagnose plus ty support. Includes bug fixes, strict yamllint, and contributor shoutouts.
Highlights
- New --pr flag for checking PR-changed files — You can now run hk check --pr to automatically check only the files that have changed in your current pull request compared to the base branch. This makes it easy to run targeted checks during code review without processing your entire codebase. #660
- New tmpdir step option — Steps can now specify tmpdir = true to run in an isolated temporary directory, useful for tools that need a clean working environment. Thanks @thejcannon! #663
- ty builtin — Added support for ty, Astral's new Python type checker. Thanks @joonas! #566
- New Built-in Linters
- Thanks to @matdibu for contributing five new builtins:
- cmake_format — Format CMake files #672
- deadnix — Find unused code in Nix files #670
- hclfmt — Format HCL/Terraform files #675
- nil — Nix language server for diagnostics #669
- nixf_diagnose — Additional Nix diagnostics #671
- The ruff_format and tombi builtins now use --quiet mode for cleaner output. #667 #676
Bug Fixes
- typos now respects exclusions when using --force-exclude — Thanks @CallumKerson! #659
- check-case-conflict no longer reports false positives from duplicate file entries — Thanks @safinn! #678
- yamllint now runs in strict mode for more reliable error detection #673
- Fixed ignore patterns not being respected when recursing into directories — Thanks @thejcannon! #661
- Fixed Nix flake builds when git submodules are included — Thanks @jeffutter! #681
- New Contributors
- Welcome to our new contributors! 🎉
- @jeffutter
- @matdibu
- @safinn
- @CallumKerson
Full documentation: https://hk.jdx.dev/ Changelog
1.36.0 - 2026-02-09
🚀 Features
- (cmake_format) init by @matdibu in #672
- (deadnix) init by @matdibu in #670
- (hclfmt) init by @matdibu in #675
- (nil) init by @matdibu in #669
- (nixf_diagnose) init by @matdibu in #671
- (ruff_format) use --quiet by @matdibu in #667
- ( Tomb i ) use --quiet by @matdibu in #676
- add ty builtin by @joonas in #566
- add --pr shortcut flag for checking PR-changed files by @jdx in #660
- add tmpdir step test option by @thejcannon in #663
🐛 Bug Fixes
- (bultins) respect typos exclusions with --force-exclude by @CallumKerson in #659
- (docs) escape angle brackets in --pr flag description by @jdx in #666
- (docs) use valid
tags instead of
in sea shanty by @jdx in 12e17f8 - (go_fumpt) comment out broken check by @matdibu in #668
- (yamllint) enable strict mode by @matdibu in #673
- respect ignore when recursing by @thejcannon in #661
- Deduplicate files in check-case-conflict to prevent false positives by @safinn in #678
- Fix building of nix flake wiwth the inclusion of git subomdules by @jeffutter in #681
🛡️ Security
- add tone calibration to release notes prompt by @jdx in #679
- add opengraph meta tags by @jdx in #685
🔍 Other Changes
- Use tmpdir for the tests by @thejcannon in #677
📦️ Dependency Updates
- lock file maintenance by @renovate[bot] in #658
- update anthropics/claude-code-action digest to b113f49 by @renovate[bot] in #684
- update actions/checkout digest to de0fac2 by @renovate[bot] in #683
New Contributors
- @jeffutter made their first contribution in #681
- @matdibu made their first contribution in #673
- @safinn made their first contribution in #678
- @CallumKerson made their first contribution in #659
- Feb 1, 2026
- Date parsed from source:Feb 1, 2026
- First seen by Releasebot:Feb 10, 2026
v1.35.0 - Poetic Precision
This release enhances the setup experience with auto-detection and an interactive mode, adds git worktree support, and introduces helpful typo suggestions plus haiku-named stash backups. Internal cleanup trims dependencies for a faster binary.
This release brings a more intuitive setup experience and some delightful quality-of-life improvements. The hk init command now auto-detects your project's tools and offers an interactive mode, making it easier than ever to get started. We've also added git worktree support for developers working across multiple branches simultaneously.
Highlights
Smarter Initialization (#656)
The hk init command has been significantly enhanced with auto-detection capabilities. It now scans your project to identify which linters and formatters you're using and can automatically configure them for you. An interactive mode lets you review and customize the detected configuration before committing to it.
Git Worktree Support (#651)
For developers who use git worktrees to work on multiple branches simultaneously, hk now properly supports this workflow. Hooks and configuration are correctly resolved regardless of which worktree you're working in.
Helpful Typo Suggestions (#654)
Made a typo in a command or step name? hk now offers "did you mean?" suggestions, helping you quickly recover from common mistakes without having to look up the correct spelling.
Haiku-Named Stash Backups (#655)
Stash patch backups now use memorable haiku-style names instead of cryptic identifiers. This makes it much easier to identify and manage your stashed changes when you need to recover them.
Internal Improvements
Migrated to xx utilities and removed unused dependencies, keeping the binary lean (#653)
For full documentation, visit hk.jdx.dev.
Changelog
1.35.0 - 2026-02-01
🚀 Features- (init) add auto-detection and interactive mode by @jdx in #656
- (stash) use haiku names for stash patch backups by @jdx in #655
- add git worktree support by @jdx in #651
- add "did you mean?" suggestions for typos by @jdx in #654
- use xx utilities and drop unused dependencies by @jdx in #653
- Jan 27, 2026
- Date parsed from source:Jan 27, 2026
- First seen by Releasebot:Feb 10, 2026
v1.34.0 - Windows of Opportunity
hk adds official Windows support with Windows CI testing, expanding cross‑platform reliability for dev teams. HTTPS now uses system CA certificates, fixing corporate CA and proxy issues. Documentation clarifies CLI bug fix scope and where changes apply.
This release brings official Windows support to hk, expanding the tool's reach to developers on all major platforms. Whether you're running Windows, macOS, or Linux, hk now has you covered with tested, reliable git hook management and project linting.
We've also fixed an important networking issue that was affecting users in corporate environments with custom certificate authorities, ensuring HTTPS requests now properly use your system's trusted certificates.Highlights
Windows Support (#648)
hk now includes Windows in its CI testing matrix, bringing first-class support for Windows developers. This means you can confidently use hk across your entire team regardless of operating system, making it easier to enforce consistent code quality standards in mixed-platform environments.
Bug Fixes
System CA Certificates for HTTPS (#650)HTTPS requests now properly use your system's CA certificates instead of a bundled certificate store. This fix is particularly important for users behind corporate proxies or in environments with custom certificate authorities—hk will now respect your system's trusted certificates, eliminating connection failures when downloading tools or fetching remote configurations. Thanks to @lobaorn-bitso for this contribution!
Documentation
Clarified that the fix: commit type is specifically for CLI bug fixes, not for CI, docs, or infrastructure changes (#649)
For full documentation, visit hk.jdx.dev.
Changelog
1.34.0 - 2026-01-27
🚀 Features
- add Windows CI testing and improve Windows support by @jdx in #648
🐛 Bug Fixes
- use system CA certificates for HTTPS requests by @lobaorn-bitso in #650
📚 Documentation
- clarify fix type is for CLI bugs only by @jdx in #649
New Contributors
- @lobaorn-bitso made their first contribution in #650
- Jan 26, 2026
- Date parsed from source:Jan 26, 2026
- First seen by Releasebot:Feb 10, 2026
chore: release v1.33.0 (#619)
New release adds LLM generated release titles and improved release notes, plus a string of bug fixes, refactors and dependency updates. Documentation tweaks and new contributors round out the upgrade, boosting stability and developer joy.
🚀 Features
- add LLM-generated creative release titles by
@jdx in
#624 - add hook and step tera contexts by
@thejcannon in
#645
🐛 Bug Fixes
- strip LLM preamble from generated release notes by
@jdx in
#618 - start the job progress hidden by
@thejcannon in
#631 - default stage to for fix steps by
@chadxz in
#632 - remove verbose output from taplo by
@vmeurisse in
#364 - shfmt should use --apply-ignore by
@thejcannon in
#643 - Tell biome not to error on unmatched files by
@thejcannon in
#641
🚜 Refactor
- Add before/after variables to ruff_format.pkl tests by
@thejcannon in
#623 - test expectations into helpers by
@thejcannon in
#625 - Remove dead code in markdownlint tests by
@thejcannon in
#642
📚 Documentation
- improve CLAUDE.md with workspace structure and testing info by
@jdx in
#621 - Add linebreaks to shanty by
@thejcannon in
#626 - Fix condition docstring to use exec by
@thejcannon in
#630 - add conventional commit guidance to CLAUDE.md by
@jdx in
4d59edf
🧪 Testing
- markdownlint builtin by @thejcannon
in #628 - gofmt by @thejcannon in
#603
🔍 Other Changes
- improve release title format for robustness by
@jdx in
#639
📦️ Dependency Updates
- update jdx/mise-action digest to 6d1e696 by
@renovate[bot] in
#634 - update anthropics/claude-code-action digest to 8341a56 by
@renovate[bot] in
#633 - update actions/checkout action to v6 by
@renovate[bot] in
#635
New Contributors
- @vmeurisse made their first contribution in
#364 - @chadxz made their first contribution in
#632
- Jan 19, 2026
- Date parsed from source:Jan 19, 2026
- First seen by Releasebot:Feb 10, 2026
v1.32.0
A fresh branding and docs refresh lands with a new logo, electric blue theme, and nautical touches across the site. It adds three new feature cards and fixes an issue where commands like hk completion could fail in directories with invalid config files.
Highlights
This release brings a refreshed look to the hk documentation site with a new fishing hook logo, electric blue color scheme, and nautical-themed feature descriptions. We've also fixed an issue that caused commands like hk completion bash to fail when run in directories with invalid configuration files.
New branding and documentation refresh - The documentation site has been completely updated with a new fishing hook logo, electric blue color scheme, and improved homepage layout. The "Why Choose HK?" section now features nautical-themed descriptions that match the hook branding, with titles like "Shipshape," "Tackle Box," and "All Hands on Deck." Three new feature cards highlight Pkl Configuration, Mise Integration, and Parallel Execution. (#616, #617) by @jdx
Bug Fixes
Fixed completion and version commands in invalid config directories - Commands that don't need configuration (hk completion, hk usage, hk --version) now work even when run in a directory with an invalid hk.pkl file. This fixes Homebrew bottle test failures and improves the experience when setting up shell completions. (#615) by @jdx
Original source Report a problem - Jan 19, 2026
- Date parsed from source:Jan 19, 2026
- First seen by Releasebot:Feb 10, 2026
v1.31.0
Release 1.31.0 adds asciidoctor config, fixes lint glob syntax and docs build issues, and refactors release steps. It includes CI workflow tweaks and a new contributor thanks note, signaling stable user facing updates and improvements.
1.31.0 - 2026-01-19
🚀 Features
- (asciidoctor) add asciidoctor config to hk builtin config by @hituzi-no-sippo in #604
🐛 Bug Fixes
- glob syntax for linters in getting_started.md by @makp0 in #593
- docs builtins generation by @makp0 in #606
- make pkl:dist task executable by @joonas in #607
- prevent docs build from silently failing when pkl:gen is skipped by @jdx in #609
- add ci-nogit to final job dependencies by @jdx in #611
🚜 Refactor
- break up step.rs into modular components by @jdx in #610
- move LLM release notes to GitHub release workflow by @jdx in #608
New Contributors
- @makp0 made their first contribution in #606
- Jan 18, 2026
- Date parsed from source:Jan 18, 2026
- First seen by Releasebot:Feb 10, 2026
v1.29.0
Version 1.29.0 boosts hk’s linting with 10 new built-in linters across Lua YAML Protobuf and more, plus smarter fixes using git apply for reliable auto fixes. It spotlights community contributions led by @hituzi-no-sippo with Lua support, improved formatting, and several bug fixes.
Release Summary
Release Summary
Version 1.29.0 brings significant improvements to hk's linting capabilities with 10 new built-in linters and enhanced support for Lua and Protocol Buffer development. The release also introduces smarter fix application using git apply for better handling of diff-based fixes, making the auto-fix workflow more reliable across different tools.
This release showcases the power of community contributions, with most new features coming from external contributors, particularly @hituzi-no-sippo who added extensive linting support for various ecosystems.
Highlights
Expanded Linting Coverage
We've added 10 new built-in linters to help you maintain code quality across more languages and tools:
- GitHub Actions: ghalint for linting GitHub Actions workflows (#551) by @hituzi-no-sippo
- GitHub Actions Security: zizmor for security scanning of GitHub Actions (#550) by @hituzi-no-sippo
- GitHub Actions Optimization: pinact to pin GitHub Actions to specific commits (#552) by @hituzi-no-sippo
- Documentation: vale for prose linting (#554) by @hituzi-no-sippo
- YAML: rumdl and ryl for YAML validation (#541, #543) by @hituzi-no-sippo
- Lua: selene for Lua code analysis (#544) by @hituzi-no-sippo
- Protocol Buffers: buf_lint and buf_format for Protobuf files (#562, #565) by @joonas
- EditorConfig: editorconfig-checker to enforce EditorConfig rules (#557) by @hituzi-no-sippo
Better Language Support
- Added Lua file type support, enabling all Lua-specific linters to work seamlessly (#558) by @hituzi-no-sippo
- Added Pkl configuration language file type support (#571) by @hituzi-no-sippo
Improved Fix Application
The check_diff command output is now applied directly using git apply, providing more reliable fixes when tools output unified diffs. This particularly improves the experience with formatters like stylua (#561) by @jdx.
Enhancements
- Rust Development: Added cargo fix support to the cargo_check builtin, allowing automatic fixes for compiler warnings (#555) by @thejcannon
- Lua Formatting: stylua now uses check_diff mode for better performance and reliability (#563) by @hituzi-no-sippo
Bug Fixes
- Fixed rubocop fix command to work correctly (#572) by @hituzi-no-sippo
- Fixed jq builtin and removed its non-functional check command (#533, #549) by @thejcannon
- Added missing check_list_files support to cargo_fmt builtin (#542) by @thejcannon
- Resolved configuration key inconsistencies between settings.toml and Config.pkl (#539) by @thejcannon
- Fixed task file regex commands (#534) by @thejcannon
- Jan 18, 2026
- Date parsed from source:Jan 18, 2026
- First seen by Releasebot:Feb 10, 2026
v1.28.0
v1.28.0 boosts speed with smarter configuration caching and simplifies the Pkl config, removing deprecated files. It adds tougher YAML checks and fixes multi-workspace test reliability. Welcome to new contributor @muzimuzhi—the release shines with improvements and clearer setup.
The v1.28.0 release brings performance improvements through smarter configuration caching and fixes several important bugs. Configuration handling has also been simplified to make hk easier to use and maintain.
Highlights
- Faster Performance with Config Caching - hk now caches configuration based on active imports (#531), significantly speeding up repeated runs. This is especially noticeable in larger projects with complex configurations. Thanks to @thejcannon for this optimization!
- Simplified Configuration - The Pkl configuration system has been streamlined (#517), particularly around regex handling. The deprecated Types.pkl file can now be removed from your projects. This makes writing and maintaining hk configurations more straightforward. See the configuration docs for the updated approach.
Bug Fixes
- yq Format Checking - The yq builtin now properly validates YAML formatting by using diff comparisons (#507). Previously, format checks could miss certain style inconsistencies. Your YAML files will now be checked more thoroughly for proper formatting. Thanks @thejcannon!
- Workspace Testing - Fixed an issue where hk test didn't work correctly with the workspace_indicator setting (#532). Multi-workspace projects can now run tests reliably. Credit to @thejcannon for the fix!
New Contributors
Welcome to @muzimuzhi who made their first contribution in #520!
Original source Report a problem