Skip to content

v3.4.0 — Sync from Claude Code v2.1.92→v2.1.119 + audit/behavior fixes

Latest

Choose a tag to compare

@luiseiman luiseiman released this 26 Apr 21:48
· 5 commits to main since this release

Highlights

/forge watch pass against code.claude.com covering Claude Code v2.1.92 → v2.1.119. 14 practices accepted, 6 auto-generated rejects, 1 deferred.

Domain rules refreshed

  • Hook event catalogue → 33+ with UserPromptExpansion (slash-command expansion, blockable) and PostToolBatch (end-of-batch validation, blockable). Documented mcp_tool as a fifth hook type with \${tool_input.*} substitution (v2.1.118+). PostToolUse/PostToolUseFailure now carry duration_ms (v2.1.119+). UserPromptSubmit can return hookSpecificOutput.sessionTitle (v2.1.94+).
  • Auto mode \"\$defaults\" placeholder (v2.1.118+) — extends autoMode.allow|soft_deny|environment instead of replacing them. Removes the all-or-nothing trade-off when shipping custom rules.
  • Permission tightening (v2.1.113+): Bash(find:*) allow rules no longer auto-approve -exec/-delete; deny rules now match env/sudo/watch/ionice/setsid wrappers; macOS /private/{etc,var,tmp,home} are dangerous removal targets under Bash(rm:*).
  • Native macOS/Linux builds (v2.1.117+) replace Glob/Grep with embedded bfs/ugrep via Bash. Glob(...)/Grep(...) permission specifiers and hook matchers are now platform-dependent.
  • TUI + idle-return recap: tui setting + /tui toggle (v2.1.110+); awaySummaryEnabled + /recap (v2.1.108+, default-on for telemetry-disabled deployments since v2.1.110). Coexists with dotforge's last-compact.md — different problems (idle return vs compaction survival).
  • Git attribution refresh: attribution.commit/attribution.pr supersede includeCoAuthoredBy; prUrlTemplate for self-hosted GitHub/GitLab/Bitbucket.
  • CLI surface fully documented in domain/parallel-sessions.md: 16+ flags and 6 subcommands (claude install, auth, agents, auto-mode, remote-control, setup-token).

Operational fixes

  • Audit checklist item 14 — scoring v3 behavior coverage now requires ENFORCEMENT (compiled hook under .claude/hooks/generated/ AND a settings.json reference), not just a behaviors/index.yaml declaration. Closes the false-positive that scored projects 1/1 with no runtime effect.
  • verify-before-done regex extended to match bash tests/*.sh, bash <path>/test-*.sh, ./tests/*.sh. Fixes legitimate git push from dotforge being soft-blocked after bash tests/test-*.sh runs. Recompiled hook included so the change takes runtime effect (caveat: behavior YAML edits are inert until `scripts/compiler/compile.sh` is rerun).
  • docs/claude-vs-forge.md: `/usage` is the canonical command (`/cost` and `/stats` are aliases since v2.1.118).

Verified

33/33 tests pass — 19 skills + 8 runtime + 1 compiler + 5 behavior CLI.

Catch-up note

Latest published release was v3.0.0 (2026-04-13). Versions v3.1.0 → v3.3.1 shipped between releases — see docs/changelog.md for the full intervening history.


Full diff: v3.0.0...v3.4.0