Skip to content

v1.5.1 — the if: filter works, and forge stops claiming rules you already had

Latest

Choose a tag to compare

@nickt92 nickt92 released this 27 Jul 05:16
9b6dd2f

🧪 ForgeDesktop (beta) — read before opening

The attached build is unsigned (no Apple Developer ID), so macOS Gatekeeper blocks it after download. Right-click → Open does not work on macOS 15 or later. To run it:

# move ForgeDesktop.app to /Applications first, then:
xattr -dr com.apple.quarantine /Applications/ForgeDesktop.app

It is a menu bar app — look for the anvil icon in the status bar, not the Dock.

Building from source avoids this entirely: locally built apps are never quarantined.

A patch release, but a consequential one — three of these are things forge claimed to do and did not.

forge no longer deletes permission rules you already had

forge recorded the entire resolved preset as "what forge added". If you already had Read or Bash(git status:*) in your settings, forge claimed them as its own — and removed them on your next preset change or uninstall.

Reproduced against the real code: a user with three rules applies a preset, and unmerging leaves them with one.

forge now separates what it actually added from what it merely found already present, and only ever removes the former. Your manifest migrates automatically on the next forge install.

The if: hook filter never worked

It was written onto the hook group. Claude Code accepts if only on individual hook entries, so it was silently discarded — meaning commit-validator and db-guard ran on every single Bash call instead of only on git commits and database commands.

The v1.3.0 notes claimed a 95-99% reduction in process spawns from this feature. That reduction never happened. It does now.

forge can update its own hooks

Hook groups were deduplicated by command string, a key that cannot express "same hook, new definition". Once a hook was installed, its timeout, matcher and if filter were frozen forever.

This is why fixing the if: placement alone would have reached only fresh installs — everyone with forge already installed would have kept the broken shape.

Hooks forge stopped shipping are now removed

A plan-checkpoint entry dropped back in 1.3.0 is still registered on installed machines. Removal is driven by the install manifest, so it covers every hook forge has ever installed — and never touches a script you put in ~/.claude/hooks/ yourself.

Also fixed

  • forge stats reported an install from today as "1 day ago" — the UTC timestamp was read in local time, and on macOS the baseline drifted through the day instead of sitting at midnight
  • secret-filter ran its 13 credential patterns over the output of every tool; now scoped to the ones whose output can carry secrets

Tests: 969 — 780 CLI (bats-core, macOS/Linux/Windows) + 189 desktop (XCTest).