Guard 3.0.42
Guard 3.0.42 is a stable release cut from 1bf9e85.
8 commits • 7 merged pull requests • 2 contributors since Guard 3.0.41.
Features
- guard: Add native WebAuthn approval authority (#2720)
- Add a root-authenticated native WebAuthn V4 approval authority with strict bounded CBOR/COSE ES256 and Ed25519 verification.
- Bind exact challenge, origin/RP, credential id/rawId/type, UP/UV, counter, policy, harness, runtime, and identity scope in Rust.
- Keep Python as an opaque bounded transport adapter for the browser proof envelope; the resident Rust authority performs all semantic and cryptographic validation.
- guard: Decouple native hook decision receipts (#2719)
- Emit a bounded, identity-bound Rust decision receipt for supported native hook decisions.
- Hand receipts to a privacy-safe asynchronous writer with bounded admission, restart recovery, idempotent persistence, and fail-safe degradation.
- Enforce receipt ownership, privacy, and no-environment native-route evidence in CI.
- guard: Integrate NHD-056–070 native approval and I/O controls (
1aad04b)
Fixes
- ci: Pin native-wheel publish to the release enrollment root (#2727)
- Keep native-wheel publication gated on the public enrollment-root pin.
- Document that stable and alpha native-wheel jobs compile that pin from repository variables of the same names.
- guard: Keep inspection hooks alive when native review cannot complete (#2725)
- Keep schema-valid hook responses when native review or the local daemon cannot complete.
- Continue the emergency-safe inspection floor for workspace source reads, grep/glob, and bounded local git inspection, and pause mutating, network, secret, MCP, and uncertain actions.
- Install Cursor hooks through the attested Python interpreter so a missing execute bit cannot fail-close the IDE.
- guard: Score Codex and Cursor hooks by live intercept (#2726)
- Score Codex hook health from live PreToolUse and PermissionRequest intercepts instead of authenticated manifest identity.
- Score Cursor hook health from live blocking hook intercepts instead of attested CLI or script identity.
- Keep stale fallback identity, extra third-party hook groups, and attested-identity drift as repair work, not machine-wide local protection failures.
- guard: Stop false local protection degraded state (#2722)
- Local protection health now treats Grok as protected when catch-all PreToolUse and observe hooks are installed, even if
managed_config.tomlis missing. - Guard Cloud pending or stale sync no longer appears on the Restore local protection card. Only a disconnected or failed Cloud proof still shows as a separate Cloud action.
- A single failed local check is named in the recovery summary instead of a generic count plus Cloud copy.
- Local protection health now treats Grok as protected when catch-all PreToolUse and observe hooks are installed, even if
- guard: Treat --delete-branch=false as a non-delete squash merge (#2723)
- Treat
gh pr merge --squash --delete-branch=falseas a routine squash merge, not a GitHub delete. - Parse
--delete-branchwith the same boolean equals-true/false rules as--admin. A false value does not adddelete_remote. - Malformed values such as
--delete-branch=maybefail closed as an unknown command.
- Treat
Install
Install this release:
uv tool install "hol-guard[cisco]==3.0.42"Full changelog: v3.0.41...v3.0.42
Thanks @kantorcodes, @michael Kantor!