Recent Releases
Release cadence is fast. Start with the latest eight versions, then open the historical archive when you need an earlier change. The complete release history remains in CHANGELOG.md.
Latest eight versions
From v1.33.0 through v1.31.0, newest first.
v1.33.0 · July 30, 2026
auto-mode classifier routing · a9a93f2Added defer gate asks under auto mode so the classifier adjudicates auto = "prompt" holds a prompt the classifier cannot bypass record whether a human or the classifier approved a queue entry Fixed scope the acceptEdits base guard to the whole command chain reach 27 cloud rules that subcommand lookups could never match apply git rules to path-qualified invocations consult the gcloud catalog at every argument count allow ten rules whose own reason text refutes the ask
Routes the gate catalog through auto mode's classifier instead of around it. Claude Code returns a hook ask to the user without consulting that classifier, so emitting one under auto excluded every declarative rule from the mechanism the mode exists to provide; defer is the decision that reaches it. Replaying a local approval history puts roughly four in five previously-prompted commands on the classifier path.
Irreversible, externally visible work opts out. auto = "prompt" on an ask rule keeps a prompt the classifier cannot bypass, and now covers registry publishes, credential and key mutation, infrastructure teardown, remote state overwrites, and the commands that rewrite tool-gates' own permission config. The disposition survives wrapper expansion, so a mise task or package script that reaches npm publish inherits the hold. The same marker applies to raw-floor rows, holding the patterns that run a destructive command once per match (find -delete, find -exec, fd -x, xargs) while redirects, source, and pipe-to-interpreter defer.
The acceptEdits base-command guard now requires every sub-command in a chain, matching when Claude's own fast path can fire, so mkdir -p dist && cargo build no longer denies under auto. Its outcome drops from deny to ask, and base names resolve through quoting, a leading backslash, and transparent prefixes so \rm and stdbuf -o0 rm cannot slip past. The approval queue records entries under auto tagged with whether a person answered a prompt or the classifier resolved a defer unseen, and the review list shows the difference so a rule is never granted on a silent approval.
Three long-standing catalog bugs surfaced while tracing that work. Declarative subcommand lookups only ever built a two-word key, leaving all 27 three-word cloud rules unreachable. The Git gate rejected path-qualified invocations, so /usr/bin/git push --force lost every Git rule. The gcloud handler consulted its catalog only below three arguments, so a rule matched its bare form and nothing else. Ten rules whose reason text already described read-only or locally regenerable behavior became allows, among them helm repo update, gh run watch, mise activate, ninja clean, meson compile, and git fetch without its ref-rewriting flags.
v1.32.4 · July 28, 2026
bounded hint feedback · 372c3c6Fixed
keep output-cap recovery guidance concise
skip file-viewing hints for tail -F and --follow forms
deduplicate and cap feedback at three hints per response
avoid unavailable project-scoped tool names in search guidance
Keeps corrective feedback useful without letting it flood the agent's context. Consumer-side head/tail caps still explain that unseen output is lost, but recovery advice now states the invariant: use the producer's native limit when the task needs a bounded result; otherwise run uncapped and inspect persisted output. File-viewing hints now skip retrying and named tail follow forms. Compound calls deduplicate repeated suggestions and attach at most three unique hints per response. Code-search guidance describes available symbol-aware and semantic capabilities instead of naming project-scoped MCP tools that may not be loaded.
v1.32.3 · July 26, 2026
nested-shell guardrails + search routing · f10e982Fixed
apply guardrails inside bash/sh/zsh -c and -lc scripts
inspect xargs-invoked shell scripts with the same raw floor
distinguish ast-grep from the unrelated system sg command
classify rg context searches after consuming their flag values
Extends the raw security floor into executable strings passed to local shell wrappers and xargs ... shell -c, including combined flags such as -lc. Nested truncation, pipe-to-shell, and other raw-pattern checks now receive the same decision as their top-level forms. Direct sg use asks with migration guidance because that name can resolve to either the deprecated ast-grep alias or the unrelated system group command. Search hints also consume split rg -A/-B/-C values before classifying the pattern, so exact identifier searches remain lexical while declarations, body captures, inventories, and conceptual queries get the appropriate structural or semantic guidance.
v1.32.2 · July 26, 2026
complete counts + canonical ast-grep · 1d4a4d7Fixed
allow full-stream rg count modes without treating them as caps
keep count modes combined with max-count blocked
replace deprecated sg recommendations with ast-grep
Allows rg -c ., --count, and --count-matches through the output-cap floor because they consume the complete stream and emit a scalar rather than discard unseen rows. Combining count mode with -m or --max-count remains blocked. Actionable search guidance now uses the canonical ast-grep executable instead of the deprecated sg name.
v1.32.1 · July 13, 2026
hardening + reliability · b1d6112Fixed make hook, settings, and agy config updates transactional resolve symlinks before approving project edits inspect quoted substitutions and env-split embedded commands normalize blocked URL hosts and preserve privilege-wrapper decisions repair Gemini hook reporting and notebook edit coverage Other reduce repeated config, parser, scanner, alias, and WASM work stabilize generated rules, docs checks, CI, and MSRV coverage
Hardens the boundaries where command parsing, path approval, and configuration persistence meet. Hook installation, settings permission changes, and the Antigravity allowlist now use transactional updates so a failed write cannot partially replace a working configuration. Project-edit approval resolves symlinks before testing scope; block rules normalize URL hosts; command inspection reaches substitutions inside quoted arguments and commands embedded in env -S strings; privilege wrappers keep the underlying gate decision. Gemini reports the hook set that was actually installed, notebook edits are covered end to end, and tracker state survives across sessions. The same release trims repeated parsing and filesystem work across configuration loading, security scans, Git alias discovery, and WASM builds, while tightening generated-rule, documentation, CI, and MSRV checks.
v1.32.0 · July 8, 2026
native scratchpad + gate fixes · 56ccac4Added recognize Claude Code's native per-session scratchpad auto-allow supported file and shell writes within that root Fixed honor package-manager allow rules and gate mutating subcommands route unmatched system tools through the generated dispatcher fail closed on malformed settings.json inspect newline-separated eval/source and multibyte truncation forms Other generate reminder and design-lint docs from their scanner catalogs make the raw-string security floor declarative
Extends scratch handling to Claude Code's native per-session scratchpad under the system temporary directory. File tools already trusted this directory, but Bash redirects and write commands still prompted; tool-gates now recognizes the same bounded root at every scratch-aware call site. The matcher requires the current user and UUID-shaped session identifier and ends at scratchpad/, so sibling task and session directories remain gated. This release also honors package-manager allow rules while gating their mutating subcommands, routes unmatched system tools through the generated dispatcher, preserves malformed settings.json files instead of replacing them, and closes newline and multibyte parsing gaps in the raw-string safety floor. Security-reminder and design-lint reference pages are generated from their scanner catalogs, while the raw-string security floor is declarative, reducing drift between behavior and documentation.
v1.31.1 · June 25, 2026
flag gating · 5ad22a7Fixed
gate exec/write flags on otherwise-safe tools:
rg --pre / --hostname-bin (code execution), sort -o,
find -fprintf, pg_dump -f, gitleaks -r, unrar x,
ip / route / ifconfig / arp network mutations
drop fx and fselect from the always-safe list
Closes a gap where several read-only tools were auto-allowed regardless of flags that run a program or write a file. rg --pre and --hostname-bin run an external program per file (arbitrary code execution); sort -o, find -fprintf, pg_dump -f, gitleaks -r, and unrar x write or overwrite files; ip/route/ifconfig/arp can change network config. These are the program's own arguments, not pipes or redirects, so the existing shell-construct checks never saw them and the gate returned allow on every client. They now ask, with rg --pre a hard ask in the same tier as pipe-to-shell. fx and fselect leave the always-safe list because their danger lives inside a quoted expression or query the parser can't inspect. Normal usage stays allowed: rg pattern, sort -u, find -print, ip addr show.
v1.31.0 · June 25, 2026
Antigravity allowlist · 30055e3Added
tool-gates agy allowlist [--apply]: generate agy's native
permissions.allow block for read-only commands
Antigravity resolves a tool call as the strictest of its candidate decisions, so a hook allow is the lowest rank and cannot suppress a prompt agy's own rules would show. The way to stop agy prompting for a read-only command is its native permissions.allow list. tool-gates agy allowlist generates that list from tool-gates' own unconditionally-safe command set, one command(<prog>) rule per program; --apply merges it into ~/.gemini/antigravity-cli/settings.json, preserving existing entries and writing a backup first. The hook still gates dangerous forms, so a native command(find) does not let find . -delete through. See the Antigravity page.
Historical archive
Browse 52 earlier releases
v1.30.0 to v1.1.0
v1.30.0 · June 23, 2026
design lint cleanset · 2de112fAdded
design-lint: extend the catalog from 17 to 22 rules
typography/script-font, color/maxed-saturation
motion/transition-all, motion/scale-hover
content/emoji-decoration
Extends the opt-in design-lint catalog from 17 rules to 22. The new rules flag decorative script display fonts (Pacifico, Caveat, Comic Sans, Lobster, Dancing Script), pure-channel hex colors like #f00 or #00ff00 used outside :root token definitions, transition: all and the transition-all utility, default scale(1.05) and scale(1.1) hover effects, and emoji placed inside headings or buttons. Each rule ships with positive and false-positive tests, and the Design Lint reference page documents the full set.
v1.29.0 · June 23, 2026
design lint · 805bcf3Added
design-lint: opt-in PostToolUse content gate for UI writes
17 rules: generic gradients/palettes, default fonts, filler copy
OKLCH hue-based violet/purple gradient detection
off by default (features.design_lint), exempts :root tokens
Adds an opt-in PostToolUse content gate that scans UI file writes and edits for generic, templated design and missing UI-quality basics. It catches the overused #667eea/#764ba2 gradient, beige and brass "premium" palettes, default Tailwind indigo, Inter as the display font, placeholder names and fabricated stats, marketing filler copy, em and en dashes in rendered text, hardcoded Tailwind palette classes, raw hex in inline styles, hotlinked images, and interactive elements with no visible focus style. Violet and purple gradients are matched by OKLCH hue rather than a fixed hex list, so arbitrary violets are caught too. Findings attach as additionalContext next to the security reminders so the assistant can self-correct on the next turn. The gate is off by default (features.design_lint), raw color values inside :root token definitions are exempt, and individual rules disable by id. See the Design Lint reference page.
v1.28.0 · June 20, 2026
scratch coverage + awk gate · 368a1daAdded
scratch auto-allow extended to mv / tee / chmod / sd
quoted redirect targets, curl -o / wget -O
MultiEdit / NotebookEdit writes under the scratch dir
awk gate: auto-allow read-only awk, ask on exec / write / opaque programs
Broadens the v1.27.0 session scratch auto-allow from Write/Edit plus mkdir/touch/cp/redirect to the rest of the common write surface, so agents stop being prompted for routine throwaway work. New scratch-aware upgrades: mv (destination), tee output, chmod/chown/chgrp, curl -o/wget -O downloads, sd in-place edits, and MultiEdit/NotebookEdit file writes.
Also fixes a quoted-redirect gap: a quoted scratch target like > "$TOOL_GATES_SCRATCH/..." previously prompted because the quoted path was blanked before the scratch check, so the real target is now recovered from the original command. The safety model: each gate flips Ask to Allow only when the write target resolves under the scratch base (symlink or .. escapes still gate), and every non-scratch write still prompts. Tools whose sublanguage can run shell or write outside the named target (sed -i, sqlite3, zip, tar) are deliberately left asking, since a scratch target does not bound what they do.
Also adds a guarded awk/gawk/mawk gate so common read-only idioms (field selection, column sums, line counts, range extraction) auto-allow instead of prompting, while any awk that runs a command or writes a file still asks. A program auto-allows only as a static, inline, single-quoted literal with none of the exec/write markers (system, getline, a real | pipe, an @ indirect call, or a > redirect); || and >= are exempt so logical-or and range comparisons still allow. A program built from a shell variable, command substitution, ANSI-C quoting, or a later -e/--source chunk is opaque and asks since its text cannot be inspected, and -f/-i/-l/-E external-program flags ask. Dynamic filenames and -v values still allow because awk never executes them. Measured against the real session corpus, a clear majority of routine awk now auto-allows, with no file-writing or command-running awk allowed.
v1.27.0 · June 19, 2026
scratch + awk hints · 2a5b993Added
auto-allow writes under a session scratch dir ($TOOL_GATES_SCRATCH)
awk idiom hints route to numbat / jq / rg / jc / choose
Adds a friction-free session scratch directory so agents stop reaching for /tmp. When $TOOL_GATES_SCRATCH is set (default ~/.cache/tool-gates-scratch), Write/Edit targets and shell mkdir/touch/cp/redirect destinations that resolve under it are auto-allowed in every permission mode. Targets are canonicalized first, so a symlink or .. that escapes the base is not matched, and sensitive or guarded paths still gate. On Claude this is a true allow; on Codex (deny-only PreToolUse) it falls through.
Also replaces the single generic awk suggestion with idiom-aware routing: byte/size math points at numbat, column sums at jq -Rn, line counts at rg -c, positional row/field extraction at jc | jq, and plain field selection at choose. Stateful range extraction and bare filters get no nudge.
v1.26.0 · June 19, 2026
risk gating · 4ec9a59Added
require an explicit confirm for shared high-stakes family globs in the review TUI
Tightens the review TUI blast-radius model. A scoped family glob over a high-stakes program (docker run:*, aws s3:*, ssh, rm, ...) written to project or global settings is a team- or machine-wide standing grant to run arbitrary subcommands of a high-blast-radius tool, so approving one now requires an explicit y confirm. Local-only grants and non-high-stakes programs are unchanged.
v1.25.0 · June 19, 2026
review TUI · c62f858Added redesign review TUI with a flat keyboard model and rules manager Pending / Approved / Denied views with allow/deny rule removal blast-radius risk model that confirms before a dangerous write project switcher grouped by parent, plus undo for the last action Other Review TUI reference page
Replaces the focus-mode three-panel layout with a flat keyboard model: arrows always navigate, letter keys act (a approve, d deny, x remove, y confirm). Adds Pending, Approved, and Denied views; the two rule views read settings.json and remove existing allow/deny rules behind a confirmation. A new blast-radius risk model (pattern breadth, scope reach, and whether the program is high-stakes) colors the panel and forces an explicit confirm before a dangerous write, and a compound segment with no safe suggested pattern is refused instead of fabricating a broad glob for the wrong program. Walkthrough and keymap live on the new Review TUI page.
v1.24.1 · June 16, 2026
Antigravity scopes · 2237a64Fixed Antigravity hooks: default to ~/.gemini/config/hooks.json, add -s project Other fix four-client grid layout and footer wrapping on the index page
Corrects the Antigravity hook install model. v1.24.0 shipped Antigravity as global-only at ~/.gemini/antigravity-cli/hooks.json; this release moves the default to the shared user path ~/.gemini/config/hooks.json and adds a -s project scope that writes .agents/hooks.json. tool-gates hooks status and tool-gates doctor now report both scopes. Also fixes the four-client install grid layout and footer wrapping on the documentation index.
v1.24.0 · June 9, 2026
Antigravity CLI · f12e0a0Added Antigravity CLI (agy) support: --client antigravity, single PreToolUse hook hooks add / status / json --antigravity (named-hook hooks.json) Antigravity tool-name mapping + payload normalization Changed Gemini CLI marked deprecated (Google sunsets it 2026-06-18)
Adds Antigravity CLI (Google's agy, the Gemini CLI successor) as a first-class client. Antigravity uses a distinct wire format: a payload nesting the tool under toolCall with PascalCase args, a flat {decision, reason} output, and a hooks.json keyed by hook name. tool-gates normalizes the payload, installs a single PreToolUse hook via tool-gates hooks add --antigravity, and gates shell, file, grep, and glob tools. The Gemini CLI client is marked deprecated across the docs because Google sunsets the consumer Gemini CLI on 2026-06-18; it keeps working through the transition.
v1.23.0 · June 6, 2026
docs & approvals · a43ee4aAdded mdBook documentation site with interactive WASM simulator rules export generator for markdown references Codex project-edit auto-approval config pre-commit rules-export hook in Lefthook Fixed head/tail pipe block scoped to build/test/gh producers documentation accuracy corrections for Codex and MSRV
Introduces an interactive documentation site with a WebAssembly command simulator. It adds a declarative rules exporter (tool-gates rules export) and auto approval configurations for Codex in project edits ([codex] accept_project_edits). The output truncation pipe blocker was refined to focus only on build, test, and GitHub producers (such as cargo, npm, go, make, and gh), allowing soft producers (like cat and ls) to pass through with modern CLI hints. This release also adds a Lefthook pre-commit hook to automatically regenerate the Markdown documentation on rule changes.
v1.22.0 · May 26, 2026
media & CLI · 6657772Added ffprobe / d2 allow ffmpeg info flags gated read-only tool-gates CLI subcommands Fixed skip quoted-heredoc bodies in raw-string scans stop false asks from mise usage-args + bun file-exec
Adds gating for media tools (allowing ffprobe and d2, while gating ffmpeg info flags). It introduces read-only subcommands (including pending list, rules list, hooks status, and doctor) to the tool-gates command line interface. It also updates the raw string scanner to skip quoted heredocs. It resolves false positive asks caused by mise usage argument (stripping the usage_args eval prefix) and bun file execution expansion (by checking for code extensions or path separators).
v1.21.2 · May 21, 2026
maintenance · 57cac7eOther
drop vendor-specific output_tail reference from head/tail deny
Cleans up the output truncation blocker by dropping a vendor specific output tail reference from the head and tail deny rule.
v1.21.1 · May 21, 2026
polish · 0e0a0d4Fixed improve head/tail and github block deny messages Other replace generic "syntax highlighting" hint suffix with agent-actionable benefits polish modern hint messages for consistency rewrite hook deny messages with risk and remediation
Improves the clarity and usefulness of hook feedback. The denial messages for the output truncation and GitHub blockers now state the security risk and clear remediation steps. The modern hint suffix was replaced with agent actionable benefits. All other hints were polished for consistency.
v1.21.0 · May 13, 2026
polish · 9b2a6deAdded enforce no-rg-on-code rule, route to probe/chunkhound/serena/ast-grep Other hints catalog, systemMessage tiering, length guard
Enforces a rule against running rg on code files. It routes searches to specialized tools such as probe, chunkhound, serena, and ast-grep. It introduces a hints catalog, system message tiering, and a length guard.
v1.20.0 · May 13, 2026
reasons · de952ffAdded help-menu reason prompts, new hints, tiered systemMessage Fixed pass --edition 2024 to rustfmt in build.rs
Introduces detailed reason prompts to the help menu for rejected hooks. It also adds tiered system messages and updates the build script to pass the 2024 edition to rustfmt.
v1.19.2 · May 8, 2026
maintenance · 0480925Fixed
harden accept-edits fallback
Hardens the fallback behavior in accept edits mode. It ensures that the permission policy is correctly applied when resolving command wrappers.
v1.19.1 · May 3, 2026
maintenance · ebb6e6dFixed
align client hook contracts
Aligns the hook interface contracts across the Claude, Gemini, and Codex clients. This ensures consistent decision behavior across all tools.
v1.19.0 · May 3, 2026
Codex · 024465cAdded add Codex CLI client support Fixed gate worktree auto-approve on subagent agent_id fire Claude PermissionRequest for MCP tools
Adds support for the Codex command line interface client. It gates worktree auto approvals on the subagent agent ID. It also fires Claude PermissionRequest events for Model Context Protocol tools to streamline subagent flows.
v1.18.0 · April 30, 2026
git aliases · 69175dcAdded resolve user-defined aliases against ~/.gitconfig Fixed split nested if-let to satisfy MSRV 1.86 drop redundant plan-mode hard-deny on Write/Edit Other restore HOME after with_temp_cache to stop sequential leak
Resolves user defined git aliases against the user git configuration file so that custom git shortcuts are evaluated correctly. It also splits nested if let blocks to support Rust 1.86. It drops redundant plan mode checks and prevents home directory leaks during tracking tests.
v1.17.0 · April 30, 2026
audit TUI · 8b48d7aAdded polish round, install patterns, doctor nudge, audit TUI close ask-audit gaps with broader find guard and --apply categorize ask-audit rules by gate-engine outcome add ask-audit to surface third-button-suppressing rules defer benign gate-ask to CC for prefix-suggestion prompt surface usage stats in the doctor report self-heal cache with single-tool re-probe collapse near-duplicate entries by pattern key hard-deny mutating tools in plan mode Fixed post-review fixes on the 1.6.0 series skip pending append when settings already allow Other cover defer wire format, ask-audit, and 24h tracking TTL reframe ask-audit around slip-click safety, drop bulk apply cover wire-format defer path for mise/pnpm wrappers bump to 1.6.0 reframe skills around defer behavior replace 15min TTL with session-bounded GC tighten review/test-gate skill descriptions, bump to 1.5.9
Introduces the ask audit command to identify rules that shadow accept edits or suppress the third button in Claude Code. It adds an interactive review terminal user interface. It collapses duplicate pending entries and integrates plan mode checks to block mutations. It also defers benign asks to Claude Code to preserve the prefix suggestion prompt. It adds self healing capabilities to the tool detection cache.
v1.16.1 · April 24, 2026
maintenance · 7ace761Fixed
drop vendor-specific refs from head/tail deny message
Polishes the deny message for the head and tail truncation blocker. It removes vendor-specific references that did not apply to the general toolchain.
v1.16.0 · April 23, 2026
head/tail block · 6dad625Added deny | head / | tail pipes with config toggle Other warn about permissions.ask shadowing accept_edits_mcp
Adds a configuration toggle to block piping command outputs to head or tail. It also adds a configuration warning when user settings shadow the Model Context Protocol accept edits rule.
v1.15.0 · April 23, 2026
MCP approvals · 4c5aa93Added
auto-approve MCP tools in acceptEdits mode
Enables auto approvals for Model Context Protocol tools in acceptEdits mode. This streamlines editing workflows for subagents.
v1.14.0 · April 22, 2026
API hints · a53313bAdded
nudge network tools to gh api for GitHub URLs
Nudges network tools to use gh api when requesting GitHub URLs. This reduces unnecessary web scraping or API token usage.
v1.13.0 · April 21, 2026
auto mode · 1078f0fAdded
integrate with Claude Code classifier
Integrates with the Claude Code auto mode classifier. This enables hard ask promotion to deny, pending queue filtering, and PermissionDenied retry signals.
v1.12.1 · April 15, 2026
maintenance · 04889ffFixed unify home-directory path handling across gates enforce cargo fmt --check and restage crate-wide fmt Other use generic user in fixtures
Unifies home directory path handling across all gates. It enforces strict cargo formatting checks in the continuous integration pipeline. It also uses generic users in test fixtures.
v1.12.0 · April 10, 2026
Monitor tool · e65011bAdded
add Monitor tool support
Adds support for the Claude Code Monitor tool. This enables permission gating for background monitoring commands.
v1.11.0 · April 3, 2026
wrapper resolution · 35b587eAdded
acceptEdits wrapper resolution for package manager invocations
Resolves package manager wrappers during acceptEdits mode. This ensures that linters and formatters can run without triggering prompts.
v1.10.0 · April 3, 2026
runtimes · fbdccdfAdded
add runtimes gate, expand coverage across all gates
Consolidates Python, Node, Ruby, Deno, PHP, and other language runtimes into a single runtime gate. This provides unified security analysis across language execution commands.
v1.9.2 · March 31, 2026
maintenance · 6c6e252Fixed
remove redundant workflow_dispatch that races with push
Fixes a continuous integration race condition. It removes a redundant workflow dispatch trigger that raced with pushes.
v1.9.1 · March 31, 2026
maintenance · 4b7676eFixed
remove approval context from additionalContext
Removes redundant approval context from the hook additionalContext response. This minimizes context token usage.
v1.9.0 · March 31, 2026
matchers · 8df9031Added
detect and update stale matchers on hooks add
Automatically detects and updates out of date matchers in the Claude configuration when registering hooks.
v1.8.0 · March 30, 2026
worktrees · 29fa637Added auto-approve Edit/Write in agent worktrees Fixed let gate-allowed commands participate in compound settings approval Other clarify branch allow rule covers create too
Enables auto approvals for file edits inside agent worktrees during PermissionRequest events. It also allows gate allowed commands to participate in compound settings approvals. It clarifies that the branch allow rule covers creation too.
v1.7.3 · March 28, 2026
maintenance · 07d939cOther
remove MultiEdit tool and mcp-cli gate
replace em-dash patterns with periods and commas
bump to 1.5.8, add when_to_use to skills
Bumps the plugin to version 1.5.8. It removes the MultiEdit tool and the mcp cli gate. It replaces all em dash patterns in the source code and configuration with periods and commas.
v1.7.2 · March 25, 2026
maintenance · 763b556Fixed
resolve binary path via argv[0] and PATH lookup
Improves binary path resolution in hook scripts. It searches the environment PATH variable when argv[0] is not an absolute path.
v1.7.1 · March 25, 2026
maintenance · cf24984Fixed
use symlink path instead of canonicalized Cellar path
Resolves Homebrew installation path issues. It references the symlinked binary path rather than the canonicalized Cellar path.
v1.7.0 · March 25, 2026
Gemini · b31c96dAdded
native BeforeTool/AfterTool hook support
Introduces native support for Gemini CLI BeforeTool and AfterTool hooks. It automatically translates payloads and responses to match the Gemini format.
v1.6.0 · March 22, 2026
coverage · e7f5c40Added
add gates for missing programs
Adds dedicated rules and gates for missing system programs. This expands command coverage and improves security check safety.
v1.5.10 · March 22, 2026
maintenance · 6422d4aFixed format generated code with rustfmt, prettyplease fallback run rustfmt on generated files to prevent dirty worktree use recursive globs so hooks trigger for all source files include expansion nodes in command argument extraction detect github_pat_ fine-grained personal access tokens detect Stripe sk_live_ and sk_test_ secret keys use atomic write-then-rename for hint tracker and tool cache split compound commands in fallback parser recover from poisoned mutex instead of panicking log serialization errors instead of silently swallowing strip transparent command wrappers before gate evaluation block entire .git/ directory in acceptEdits mode Other remove unused tools from detection cache remove unused lsd from tool detection compile security regexes once via LazyLock
Provides a large reliability release. It adds fine-grained token detection for GitHub and Stripe. It uses atomic cache updates, strips transparent command wrappers, and blocks direct modifications to the git directory in accept edits mode. It also ensures generated code is formatted to prevent dirty worktrees.
v1.5.9 · March 21, 2026
maintenance · b401b57Fixed remove ALWAYS, fix pipe false positives, add new detections Other bump plugin versions to 1.5.7 update skills and convert hook-reference to path-scoped rule
Polishes modern command hints and removes the redundant ALWAYS indicator. It updates plugin skills to match path-scoped rules.
v1.5.8 · March 21, 2026
maintenance · bd6973dFixed sync simulate_append test helper with new dedup logic per-subcommand gate evaluation for compound commands Other add Windows x64 and arm64 build targets
Enables per subcommand gate evaluation for compound commands. It adds Windows target platform support to the automated build pipeline.
v1.5.7 · March 21, 2026
maintenance · a714abbFixed specify musl target for binary size check specificity-based ask/allow resolution and $HOME expansion Other use dedicated app token for release automation auto-merge release-plz PRs and trigger release
Improves settings resolution by adding specificity based allow/ask matching. It expands the HOME variable in pattern matching. It also integrates release plz with custom bot authentication.
v1.5.6 · March 21, 2026
maintenance · 1b29246Fixed stage build-generated files in pre-commit Other add Homebrew as recommended install method
Stages build generated rules during pre-commit hooks. It documents Homebrew as the recommended installation method.
v1.5.5 · March 20, 2026
maintenance · 6b759cfFixed use actions/checkout for homebrew-tap push auth Other bump build provenance attestation action
Corrects Homebrew tap repository push authentication in GitHub Actions. It integrates build provenance attestation to secure release binary publishing.
v1.5.4 · March 20, 2026
maintenance · f3c372aFixed Use CARGO_MANIFEST_DIR to detect package verify context Remove publish=false from Cargo.toml Remove name field from skills so prefix shows in autocomplete Other Move plugin to subdirectory to prevent skill leakage
Fixes Cargo package verification issues in the release pipeline. It moves the plugin into a subdirectory to prevent skill leakage. It also removes the name field from skills to improve editor autocompletion.
v1.5.3 · March 20, 2026
maintenance · d3af03dAdded Switch to release-plz with homebrew tap automation Fixed Skip codegen during cargo package verify Match import order to cargo fmt for idempotent codegen Sort custom handler lists for deterministic codegen Commit generated files so cargo package verify succeeds Remove musl default target so cargo package works in CI Ignore cross-session hint dedup test in shared process Remove name field from skills so prefix shows in autocomplete Other Move plugin to subdirectory to prevent skill leakage
Switches the release workflow to release-plz with automated homebrew tap publishing. It moves the plugin to a subdirectory to prevent skill leakage. It fixes cargo package verification and cargo build issues under continuous integration by committing generated files, matching import order to cargo fmt, sorting custom handler lists, and skipping codegen during verification. It also ignores cross-session hint deduplication tests in shared processes.
v1.5.2 · March 18, 2026
maintenance · 55af0b2Fixed
Require all sub-commands to match settings for compound allow
Hardens security for compound commands. It requires all subcommands to match allowed patterns in user settings before granting auto approval.
v1.5.1 · March 14, 2026
maintenance · 044e763Fixed
Remove patch from acceptEdits auto-allow, add 20 security tests
Removes the patch command from the acceptEdits auto allow list to prevent arbitrary write bypasses. It backs this check with 20 new security tests.
v1.5.0 · March 13, 2026
safeties · f1cd14fAdded
Smarter secret handling for .env and doc files
Improves secret checking heuristics. This prevents false positive leakage reports in documentation and environment files.
v1.4.0 · March 11, 2026
skills & doctor · e13491dAdded
Add skill auto-approval and doctor command
Introduces the doctor command to diagnose hook health. It adds auto approval configurations for trusted project skills.
v1.3.0 · March 10, 2026
config · 662cb64Added
Add per-tier config toggles and Configuration docs
Adds granular configuration toggles in the config file. This enables or disables specific gate tiers.
v1.2.0 · March 10, 2026
MCP & reminders · 225407aAdded Add MCP tool matcher for PreToolUse hooks Add security reminders for Write/Edit/MultiEdit content scanning Fixed Replace deprecated approve decision with proper allow/no-opinion
Implements PreToolUse hook support for Model Context Protocol tools. It adds content scanning security reminders for file write operations. It also replaces deprecated approval responses.
v1.1.0 · March 10, 2026
initial release · 0cf5508Added
Initial commit: Rust bash permission gate for Claude Code
Integrate settings.json to respect user permissions
Add declarative rules system with build-time codegen
Add PermissionRequest hook support for subagent approval
Add hooks subcommand for managing Claude Code hooks
Add modern CLI hints via additionalContext
Redesign review TUI with project-first dashboard layout
The initial public release of tool-gates. It features an AST based bash parser for precise command identification. It integrates with settings files. It checks against shell execution patterns. It provides a terminal user interface for review and hooks subcommand management.
Release automation via release-plz. Push to main triggers a version-bump PR; merging it cuts the GitHub release with cross-compiled binaries (linux x86_64/arm64, macos x86_64/arm64, windows x86_64/arm64) and updates the Homebrew tap. MSRV is Rust 1.97.1. Note: Releases prior to v1.5.4 have been purged on GitHub and do not have downloadable pre-built assets; Homebrew tap installation requires v1.5.6 or newer.