Release notes

HOL Guard v3.60.0a26

Preview

HOL Guard v3.60.0a26, released November 7, 2026, is a preview release with 3 additions, 9 fixes and 3 other changes across 14 merged pull requests. Highlights: Seal a direct Codex receipt in the resident drain; Pick up a newly published Guard Cloud policy within seconds.

Changes since the previous release on this channel: alpha/v3.60.0a19alpha/v3.60.0a26

3 added · 9 fixed · 3 other

Published Original GitHub release for alpha/v3.60.0a26

Key facts

Version
v3.60.0a26
Channel
Preview
Published
Previous release
alpha/v3.60.0a19
Merged pull requests
14

Documented changes

15 typed entries

Attribution coverage

attribution complete; history inventory partial.

Scope

Guard v3.60.0a26 is a preview release published 2026-11-07. Upstream documents: Guard 3.60.0a26 is an opt-in prerelease cut from a77a51f. Stable installations remain on the stable channel. 14 commits • 14 merged pull requests • 1 contributor since Guard 3.60.0a25. Its comparison base is alpha/v3.60.0a19. It includes 85 verified contribution deliveries with public evidence links.

Changes

Added

3
  • runtimeSeal a direct Codex receipt in the resident drain (#7371) Evidence for this change
    • The capture runs only while its private marker exists, only for a checked Codex receipt, and only on Unix (Python never captures on Windows).
    • Payload and receipt text over 64 KiB are left uncaptured, matching the Python writer's limit.
    • A sealed record is marked capture_recorded, so a page sent again does not capture it twice, and the Python drain skips the capture for a record that carries the mark.
  • cloud-syncPick up a newly published Guard Cloud policy within seconds (#7357) Evidence for this change
    • runtime/cloud_policy_revision.py records the last revision per Guard home. The first value seen is only a baseline. Any later change, including a rollback to an older version or the policy being withdrawn, wakes the…
    • lease_next_job hands both the exact Cloud Review lease response and the generic queue response to an observer, and the command queue passes them to the recorder.
    • The daemon's headless cloud sync loop sleeps on a wake event instead of the shutdown event, registers for its Guard home, and runs a sync as soon as the revision moves. Shutdown sets the wake so the loop still exits…
  • runtimeRecord a direct hook's fence wait in the resident drain (#7367) Evidence for this change
    • The hook evidence writer takes a new timeline-event record. It accepts only the events it names (today policy_source_fence_window), a UTC-aware timestamp and a payload of at most 4 KiB, and the journal recovers it…
    • The native evidence store saves it through the store's existing add_event op, with the payload encoded as json.dumps writes it.
    • The drain builds the same window PolicySourceFenceWindow.absorb_direct writes for a wait no daemon window holds: it ends now, starts the clamped wait earlier, and admitted one hook. Once the writer takes it, the…

Fixed

9

Other changes

3
  • Guard 3.60.0a26 is an opt-in prerelease cut from a77a51f. Stable installations remain on the stable channel. 14 commits • 14 merged pull requests • 1 contributor since Guard 3.60.0a25. Evidence for this change
  • guardAuthorize Review jobs during the ack and skip repeat drain checks (#7376) Evidence for this change
  • guardSettle a bulk Cloud Review approval on parallel leases (#7375) Evidence for this change
    • Merged pull request #7365: fix(command): run a list of commands below a sibling checkout's root (#7365)
    • Merged pull request #7336: docs(gauntlet): document the harness-only approval round-trip lanes (#7336)
    • Merged pull request #7335: fix(command): say why a login or zsh shell is blocked and how to run it reviewed (#7335)
    • Merged pull request #7334: fix(runtime): let an approved Codex retry in a later turn reuse Allow once (#7334)
    • Merged pull request #7332: fix(command): let an allowed Git read run when its configuration cannot be read (#7332)
    • Merged pull request #7341: fix(cigar): show changes in partial clones, with Git's fetches off (#7341)
    • Merged pull request #7325: refactor(extensions): keep the Python pack activation write in test fixtures only (#7325)
    • Merged pull request #7321: fix(runtime): report early native resident exits (#7321)
    • Merged pull request #7344: feat(authority): resident signs and writes the command-control marker (#7344)
    • Merged pull request #7326: feat(runtime): write Cloud Review policy memory in the resident (#7326)
    • Merged pull request #7345: fix(guard): keep package approvals across checkouts while the lockfile holds (#7345)
    • Merged pull request #7353: perf(review): apply each Cloud approval about a second faster (#7353)
    • Merged pull request #7343: fix(command): read a $HOME directory word as the home ~ already names (#7343)
    • Merged pull request #7349: fix(releases): show large releases in the archive instead of failing (#7349)
    • Merged pull request #7351: fix(command): let an allowed extension cover a list that changes directory first (#7351)
    • Merged pull request #7356: docs(bench): add prompt context results to the long-task benchmark (#7356)
    • Merged pull request #7355: fix(approvals): let a waiting package install use the Cloud allow for its own request (#7355)
    • Merged pull request #7366: docs(bench): add the eight-run Codex round and Oh My Pi to the prompt context results (#7366)
    • Merged pull request #7358: fix(cloud-review): send a risk level with each Cloud review request (#7358)
    • Merged pull request #7361: fix(command): keep a sed filter reviewable-free after a directory change (#7361)
    • Merged pull request #7357: feat(cloud-sync): pick up a newly published Guard Cloud policy within seconds (#7357)
    • Merged pull request #7375: perf(guard): settle a bulk Cloud Review approval on parallel leases (#7375)
    • Merged pull request #7376: perf(guard): authorize Review jobs during the ack and skip repeat drain checks (#7376)
    • Merged pull request #7350: fix(approvals): give agents a short signed approval link they relay whole (#7350)
    • Merged pull request #7370: fix(guard): keep the worktree chain proof past an empty Windows search path entry (#7370)
    • Direct commit a35a46ed48fa: fix(approvals): keep a sandbox requirement saved for the artifact over a waited Cloud allow
    • Merged pull request #7367: feat(runtime): record a direct hook's fence wait in the resident drain (#7367)
    • Merged pull request #7296: feat(cigar): map a prompt to the definitions and sections that hold it (#7296)
    • Merged pull request #7327: fix(scanner): keep a comparison against a short label out of the credential finding (#7327)
    • Merged pull request #7333: fix(guard): honor Guard Cloud exact-command allow rules at the hook edge (#7333)
    • Merged pull request #7324: feat(extensions): activate policy bundles in the resident (#7324)
    • Merged pull request #7340: feat(authority): resident writers own the extension-control schema (#7340)
    • Merged pull request #7346: fix(command): keep a read allowed when inline config only switches the pager or colour off (#7346)
    • Merged pull request #7347: fix(guard): drop command results Guard Cloud refuses instead of stalling the queue (#7347)
    • Merged pull request #7348: fix(sync): say a background sync is running when hol-guard sync finds the lock busy (#7348)
    • Merged pull request #7354: feat(runtime): write business-source and active-security state files in the resident (#7354)
    • Merged pull request #7362: feat(runtime): record direct-answer receipts and activity in the resident drain (#7362)
    • Merged pull request #7359: fix(command): read a git config pattern as a key pattern, not a glob over the working tree (#7359)
    • Merged pull request #7363: fix(supply-chain): keep package approvals reusable under agent NODE_OPTIONS (#7363)
    • Merged pull request #7368: fix(command): list a package manager's state directories beside node_modules/.bin (#7368)
    • Merged pull request #7373: fix(review): send a hook's pending request to Cloud Review as soon as the hook asks about it (#7373)
    • Merged pull request #7371: feat(runtime): seal a direct Codex receipt in the resident drain (#7371)
    • Merged pull request #7364: fix(command): keep an environment prefix on a package directory flag (#7364)
    • Merged pull request #7380: fix(supply-chain): keep a script-free install's approval across checkouts of a hooked project (#7380)
    • Direct commit d2c13721cff5: feat(cigar): map a prompt to the definitions and sections that hold it (#7296)
    • Direct commit 0dc888e9c3e0: fix(scanner): keep a comparison against a short label out of the credential finding (#7327)
    • Direct commit 475946bc7a90: fix(guard): honor Guard Cloud exact-command allow rules at the hook edge (#7333)
    • Direct commit 3ebb5b7099cc: docs(gauntlet): document the harness-only approval round-trip lanes (#7336)
    • Direct commit d2020a3293dd: feat(extensions): activate policy bundles in the resident (#7324)
    • Direct commit ea335f58d095: fix(runtime): let an approved Codex retry in a later turn reuse Allow once (#7334)
    • Direct commit 58b58174bfe8: fix(command): say why a login or zsh shell is blocked and how to run it reviewed (#7335)
    • Direct commit 5835e769f3ab: refactor(extensions): keep the Python pack activation write in test fixtures only (#7325)
    • Direct commit e4f172390d8c: fix(command): let an allowed Git read run when its configuration cannot be read (#7332)
    • Direct commit 6e5d33ae5f1f: feat(runtime): write Cloud Review policy memory in the resident (#7326)
    • Direct commit ea41f1816892: fix(cigar): show changes in partial clones, with Git's fetches off (#7341)
    • Direct commit b8e80a65b236: feat(authority): resident writers own the extension-control schema (#7340)
    • Direct commit 44c6ca4e623c: fix(command): keep a read allowed when inline config only switches the pager or colour off (#7346)
    • Direct commit faa19f1de2a5: fix(command): read a $HOME directory word as the home ~ already names (#7343)
    • Direct commit 752c95f73c55: fix(guard): drop command results Guard Cloud refuses instead of stalling the queue (#7347)
    • Direct commit 0746352c80d1: feat(authority): resident signs and writes the command-control marker (#7344)
    • Direct commit 48d012fd7e84: fix(releases): show large releases in the archive instead of failing (#7349)
    • Direct commit b94746e3c29b: perf(review): apply each Cloud approval about a second faster (#7353)
    • Direct commit 0dae02c1a208: fix(guard): keep package approvals across checkouts while the lockfile holds (#7345)
    • Direct commit aa712830a57b: fix(sync): say a background sync is running when hol-guard sync finds the lock busy (#7348)
    • Direct commit 811a97ea19e0: docs(bench): add prompt context results to the long-task benchmark (#7356)
    • Direct commit a2971a88cdb0: feat(runtime): write business-source and active-security state files in the resident (#7354)
    • Direct commit a63981429e12: fix(command): let an allowed extension cover a list that changes directory first (#7351)
    • Direct commit b22599f18ed9: feat(runtime): record direct-answer receipts and activity in the resident drain (#7362)
    • Direct commit 161bcb28bd88: fix(command): read a git config pattern as a key pattern, not a glob over the working tree (#7359)
    • Direct commit 657fedf733d8: docs(bench): add the eight-run Codex round and Oh My Pi to the prompt context results (#7366)
    • Direct commit a33cf738ca70: fix(supply-chain): keep package approvals reusable under agent NODE_OPTIONS (#7363)
    • Direct commit 4208f6713131: feat(runtime): record a direct hook's fence wait in the resident drain (#7367)
    • Direct commit 2b811b610f0b: fix(command): keep a sed filter reviewable-free after a directory change (#7361)
    • Direct commit 4a9d1c8f68fd: feat(cloud-sync): pick up a newly published Guard Cloud policy within seconds (#7357)
    • Direct commit 6d9daa303492: fix(cloud-review): send a risk level with each Cloud review request (#7358)
    • Direct commit 2744f2d1b598: fix(command): list a package manager's state directories beside node_modules/.bin (#7368)
    • Direct commit 51306d856f9f: fix(command): run a list of commands below a sibling checkout's root (#7365)
    • Direct commit 634eafea1bb6: fix(review): send a hook's pending request to Cloud Review as soon as the hook asks about it (#7373)
    • Direct commit 6f6deea21ee3: perf(guard): settle a bulk Cloud Review approval on parallel leases (#7375)
    • Direct commit e3aee7857c36: perf(guard): authorize Review jobs during the ack and skip repeat drain checks (#7376)
    • Direct commit 45616c63b1be: fix(guard): keep the worktree chain proof past an empty Windows search path entry (#7370)
    • Direct commit 98f1d4cf1cf3: feat(runtime): seal a direct Codex receipt in the resident drain (#7371)
    • Direct commit 4fc30a6d3ee9: fix(approvals): give agents a short signed approval link they relay whole (#7350)
    • Direct commit a736208bca62: fix(command): keep an environment prefix on a package directory flag (#7364)
    • Direct commit a77a51f7e722: fix(supply-chain): keep a script-free install's approval across checkouts of a hooked project (#7380)

Upgrade and compatibility

None documented.

Compare with the previous release

Predecessor on the same channel: alpha/v3.60.0a19

Verified contributors

Credits derive from public pull-request authorship, verified commit authorship, or verified co-authorship — never from thanks text or release metadata. Each distinct contributor is listed once; the evidence ledger paginates every published credit record.

Contributors

Evidence ledger85 credits