Release notes
HOL Guard v3.59.0a29
PreviewHOL Guard v3.59.0a29, released November 1, 2026, is a preview release with 3 additions, 31 improvements, 19 fixes and 2 other changes across 53 merged pull requests. Highlights: Integrate optional CIGAR context assistance; Add the opt-in Vulnify hosted MCP contribution.
3 added · 31 improved · 19 fixed · 2 other
Key facts
- Version
- v3.59.0a29
- Channel
- Preview
- Published
- Previous release
- alpha/v3.59.0a27
- Merged pull requests
- 53
Documented changes
55 typed entries
Verified contributors
5 verified contributors · 126 credits
View the complete verified rosterAttribution coverage
attribution complete; history inventory partial.
Install
Scope
Guard v3.59.0a29 is a preview release published 2026-11-01. Upstream documents: Guard 3.59.0a29 is an opt-in prerelease cut from 08b9c5d. Stable installations remain on the stable channel. 54 commits • 53 merged pull requests • 3 contributors since Guard 3.59.0a28. Its comparison base is alpha/v3.59.0a27. It includes 126 verified contribution deliveries with public evidence links.
Changes
Added
3- guardIntegrate optional CIGAR context assistance (#6501) Evidence for this change
- Bring the accepted P0–P5 CIGAR context integration from the prior local delivery onto current
main: native runtime verification, scoped sources and cited context, optional agent access, sharing, private persistence… - Include the follow-on runtime and release work: qualified catalog and artifact handling, Python/interpreter preparation, version selection and upgrade jobs, rollback/recovery, and the dedicated CIGAR dashboard with…
- Keep CIGAR optional and off by default. Runtime activation and each source, app, sharing, storage, or execution permission remain explicit; Guard retains its approval authority.
- Bring the accepted P0–P5 CIGAR context integration from the prior local delivery onto current
- mcp-serversAdd the opt-in Vulnify hosted MCP contribution (
2cbddb2) Evidence for this change - scannerRead the files a committed zip carries (#6800) Evidence for this change
Improved
31- windowsResolve trusted Windows directories in the native runtime (#6840) Evidence for this change
- syncLet the runtime shape the Guard Cloud runtime session (#6830) Evidence for this change
- daemonCheck Windows process lifecycle in the native runtime (#6835) Evidence for this change
- syncLet the runtime read Guard Cloud HTTP errors (#6827) Evidence for this change
- syncLet the runtime decide whether synced intel is stale (#6829) Evidence for this change
- mdmLet the runtime find the Windows directory itself (#6824) Evidence for this change
- mdmRead the system proxy settings in the native runtime (#6814) Evidence for this change
- mdmSend the remaining MDM runtime calls through one helper (#6823) Evidence for this change
- mdmRegister and delete the Windows health task in the native runtime (#6819) Evidence for this change
- mdmRun the Windows ACL probe in the native runtime (#6812) Evidence for this change
- mdmSend the MDM runtime requests through one helper (#6821) Evidence for this change
- mdmRun the device-key helper in the native runtime (#6818) Evidence for this change
- mdmRead the managed proxy credential in the native runtime (#6815) Evidence for this change
- mdmCheck the device-key metadata in the native runtime (#6816) Evidence for this change
- mdmVerify the native install identity in the native runtime (#6813) Evidence for this change
- mdmRead the supervisor registration and run its probes in the native runtime (#6809) Evidence for this change
- mdmRead and write the continuity record and device-key metadata in the native runtime (#6808) Evidence for this change
- mdmRead and write the user health state in the native runtime (#6802) Evidence for this change
- mdmWalk macOS ownership and ACLs in the native runtime (#6806) Evidence for this change
- mdmParse health and protection leases in the native runtime (#6805) Evidence for this change
- mdmRead and write the harness coverage request in the native runtime (#6803) Evidence for this change
- mdmKeep the health lease outbox and acknowledgement in the native runtime (#6801) Evidence for this change
- mdmKeep removal authorizations and tombstones in the native runtime (#6793) Evidence for this change
- mdmDecide machine supervisor health in the native runtime (#6799) Evidence for this change
- mdmParse and verify installation continuity in the native runtime (#6794) Evidence for this change
- mdmCompose the local integrity snapshot in the native runtime (#6795) Evidence for this change
- mdmKeep the harness coverage registry in the native runtime (#6790) Evidence for this change
- mdmDecide ownership and ACL health in the native runtime (#6796) Evidence for this change
- mdmCheck health snapshot bindings in the native runtime (#6791) Evidence for this change
- mdmLoad and parse the managed policy in the native runtime (#6782) Evidence for this change
- mdmVerify the release manifest in the native runtime (#6785) Evidence for this change
Fixed
19- policyEnforce Cloud review rules from v2 bundles (#6833) Evidence for this change
- commandRead the other spelling of git blame (#6839) Evidence for this change
- commandRead the DigitalOcean contexts a listing names (#6826) Evidence for this change
- commandLet a grep include narrow the recursive walk (#6779) Evidence for this change
- commandRead the ref names a script asks git for (#6828) Evidence for this change
- commandRead a line-walking loop's own name without review (#6822) Evidence for this change
- commandRead the loopback host written as an IPv6 literal (#6685) Evidence for this change
- commandRead the unstaged comparison a script asks git for (#6825) Evidence for this change
- commandRead the staged comparison a script asks git for (#6820) Evidence for this change
- commandRun a test runner that was told not to watch (#6807) Evidence for this change
- commandRead a crates.io search without the package review (#6792) Evidence for this change
- guardStop resending review events the server has permanently quarantined (#6810) Evidence for this change
- The Review event sender no longer re-sends events Cloud has permanently quarantined. Results with
review_event_payload_hash_mismatch,review_event_snapshot_claim_mismatchor… - An event that Cloud rejects 12 times is dead-lettered with reason
review_event_retry_exhausted. Only Cloud rejections count; transport failures and offline periods do not. Rejection counts are kept in sync state and… - A batch where Cloud accepts, acknowledges and recovers nothing now ends the sync run and returns
stalledandretry_after_ms. The worker waitsmax(5s * 2^(n-1), retryAfterMs)capped at 180s before the next send…
- The Review event sender no longer re-sends events Cloud has permanently quarantined. Results with
- commandName the records git keeps beside the history (#6804) Evidence for this change
- commandRead the gem queries that print what is installed (#6798) Evidence for this change
- commandRead the git verbs that compare commits (#6797) Evidence for this change
- commandRead uv's lockfile assertion inside the sandbox (#6789) Evidence for this change
- commandName a bisect session so it stops reading as unknown (#6784) Evidence for this change
- commandRead a search that lists file names into xargs (#6776) Evidence for this change
- cloud-reviewName the published Cloud rule that queued a review (#6787) Evidence for this change
Other changes
2- Guard 3.59.0a29 is an opt-in prerelease cut from
08b9c5d. Stable installations remain on the stable channel. 54 commits • 53 merged pull requests • 3 contributors since Guard 3.59.0a28. Evidence for this change - gauntletExercise a read-driven loop that expands its own name (#6836) Evidence for this change
- Merged pull request #6741: refactor(hook): answer an unmarked edge sink route with the outage (#6741)
- Merged pull request #6723: test(runtime): hold the resident's health reply to figures and its own identity (#6723)
- Merged pull request #6827: refactor(sync): let the runtime read Guard Cloud HTTP errors (#6827)
- Merged pull request #6727: fix(command): read a package manager's usage text without review (#6727)
- Merged pull request #6754: refactor(hook): trust the resident's receipt check when draining direct answers (#6754)
- Merged pull request #6773: refactor(guard): retire command-activity store wrappers only tests called (#6773)
- Merged pull request #6758: refactor(guard): retire the Python GitHub shell capability wrapper (#6758)
- Merged pull request #6777: perf(guard): derive policy-bundle claim identities in the resident (#6777)
- Merged pull request #6756: refactor(guard): retire the Python secret sensitivity and developer inspection wrappers (#6756)
- Merged pull request #6819: refactor(mdm): register and delete the Windows health task in the native runtime (#6819)
- Merged pull request #6826: fix(command): read the DigitalOcean contexts a listing names (#6826)
- Merged pull request #6737: feat(scanner): read a credential a command line carries as an argument (#6737)
- Merged pull request #6730: fix(command): read pnpm's registry reports the way npm's are read (#6730)
- Merged pull request #6744: refactor(store): ask the resident only why a saved allow missed (#6744)
- Merged pull request #6785: refactor(mdm): verify the release manifest in the native runtime (#6785)
- Merged pull request #6784: fix(command): name a bisect session so it stops reading as unknown (#6784)
- Merged pull request #6783: fix(policy): acknowledge v2 bundles that carry no managed delivery (#6783)
- Merged pull request #6750: refactor(mcp): stop asking whether the resident reads an inline reply (#6750)
- Merged pull request #6820: fix(command): read the staged comparison a script asks git for (#6820)
- Merged pull request #6772: fix(command): read the word that stops a retry loop (#6772)
- Merged pull request #6768: refactor(supply-chain): read the verified bundle summary from the native verifier (#6768)
- Merged pull request #6799: refactor(mdm): decide machine supervisor health in the native runtime (#6799)
- Merged pull request #6822: fix(command): read a line-walking loop's own name without review (#6822)
- Merged pull request #6788: fix(command): read go mod's reporting subcommands inside the sandbox (#6788)
- Merged pull request #6830: refactor(sync): let the runtime shape the Guard Cloud runtime session (#6830)
- Merged pull request #6786: feat(command): read a Homebrew search without review (#6786)
- Merged pull request #6814: refactor(mdm): read the system proxy settings in the native runtime (#6814)
- Merged pull request #6801: refactor(mdm): keep the health lease outbox and acknowledgement in the native runtime (#6801)
- Merged pull request #6795: refactor(mdm): compose the local integrity snapshot in the native runtime (#6795)
- Merged pull request #6798: fix(command): read the gem queries that print what is installed (#6798)
- Merged pull request #6828: fix(command): read the ref names a script asks git for (#6828)
- Direct commit 8de12f3ea305: Merge branch 'main' into feat/cigar-context-assistance
- Merged pull request #6748: fix(command): read a usage page a rendering flag sits beside (#6748)
- Merged pull request #6813: refactor(mdm): verify the native install identity in the native runtime (#6813)
- Direct commit 7df10162ec11: Merge remote-tracking branch 'origin/main' into HEAD
- Merged pull request #6807: fix(command): run a test runner that was told not to watch (#6807)
- Merged pull request #6800: feat(scanner): read the files a committed zip carries (#6800)
- Merged pull request #6823: refactor(mdm): send the remaining MDM runtime calls through one helper (#6823)
- Merged pull request #6803: refactor(mdm): read and write the harness coverage request in the native runtime (#6803)
- Merged pull request #6767: fix(command): read a grep include glob by what it can select (#6767)
- Merged pull request #6810: fix(guard): stop resending review events the server has permanently quarantined (#6810)
- Merged pull request #6746: refactor(hook): send the pre-tool review every field the locked runtime reads (#6746)
- Merged pull request #6721: refactor(guard): retire Python wrappers only tests still called (#6721)
- Merged pull request #6759: refactor(guard): move the test-only artifact policy bridge under tests (#6759)
- Merged pull request #6747: refactor(policy): bind every direct-lane field the locked runtime accepts (#6747)
- Merged pull request #6833: fix(policy): enforce Cloud review rules from v2 bundles (#6833)
- Merged pull request #6775: fix(guard): read the Windows DNS host name in the resident (#6775)
- Merged pull request #6793: refactor(mdm): keep removal authorizations and tombstones in the native runtime (#6793)
- Merged pull request #6782: refactor(mdm): load and parse the managed policy in the native runtime (#6782)
- Merged pull request #6812: refactor(mdm): run the Windows ACL probe in the native runtime (#6812)
- Merged pull request #6736: perf(hook): queue an edge PostToolUse activity behind its receipt (#6736)
- Direct commit 700f5e8cad5d: fix(mcp.vulnify): clarify dry-run REVIEW vs recorded decisions
- Merged pull request #6836: test(gauntlet): exercise a read-driven loop that expands its own name (#6836)
- Merged pull request #6840: refactor(windows): resolve trusted Windows directories in the native runtime
- Merged pull request #6733: refactor(guard): move native clients only tests call out of the runtime (#6733)
- Merged pull request #6761: fix(command): read a health check written with a retry policy (#6761)
- Merged pull request #6714: fix(command): read what a tool launcher already holds (#6714)
- Merged pull request #6774: fix(command): read an fd walk that hands its files to a reader (#6774)
- Merged pull request #6780: refactor(guard): move command-activity, Vitest and onefile helpers only tests called (#6780)
- Merged pull request #6817: feat(mcp-servers): add the opt-in Vulnify hosted MCP contribution
- Merged pull request #6839: fix(command): read the other spelling of git blame (#6839)
- Merged pull request #6728: refactor(runtime): retire Python capture and resilience helpers nothing calls (#6728)
- Merged pull request #6763: fix(mcp): decide calls to non-ASCII tool names in the native relay (#6763)
- Merged pull request #6797: fix(command): read the git verbs that compare commits (#6797)
- Merged pull request #6776: fix(command): read a search that lists file names into xargs (#6776)
- Merged pull request #6790: refactor(mdm): keep the harness coverage registry in the native runtime (#6790)
- Merged pull request #6685: fix(command): read the loopback host written as an IPv6 literal (#6685)
- Merged pull request #6726: feat(extensions): add Unwreck command protection
- Merged pull request #6739: feat(scanner): read the files a committed archive carries (#6739)
- Merged pull request #6722: fix(command): read a helm command's usage text without review (#6722)
- Merged pull request #6738: fix(desktop): wait for a Core that outlasts the start window during bootstrap (#6738)
- Merged pull request #6802: refactor(mdm): read and write the user health state in the native runtime (#6802)
- Direct commit fbd81eaecf50: Merge branch 'main' into feat/cigar-context-assistance
- Merged pull request #6743: refactor(store): settle a claimed native review in one resident call (#6743)
- Merged pull request #6753: refactor(hook): send edge options without asking whether the resident reads them (#6753)
- Merged pull request #6808: refactor(mdm): read and write the continuity record and device-key metadata in the native runtime (#6808)
- Merged pull request #6732: fix(command): read the workspace root pnpm names without spelling it (#6732)
- Merged pull request #6740: fix(command): read a manager's second-level usage text without review (#6740)
- Merged pull request #6781: refactor(guard): derive policy-bundle decision identities only in the resident (#6781)
- Merged pull request #6745: perf(hook): queue an edge PreToolUse activity the daemon returns as rendered (#6745)
- Merged pull request #6770: fix(command): read an HTTPie request to a dev server without review (#6770)
- Merged pull request #6760: refactor(guard): drop test-only harness normalizer aliases and unused Windows snapshot writers (#6760)
- Merged pull request #6742: refactor(hook): answer a Cursor probe from the edge alone (#6742)
- Merged pull request #6757: fix(command): read a wait for a service as the question it asks (#6757)
- Merged pull request #6752: refactor(workspace): request every content scan without per-scan feature checks (#6752)
- Merged pull request #6725: refactor(cloud): sign Guard Cloud DPoP proofs in the resident (#6725)
- Merged pull request #6731: refactor(activity): retire the unwired Python Cloud activity aggregate (#6731)
- Merged pull request #6816: refactor(mdm): check the device-key metadata in the native runtime (#6816)
- Merged pull request #6751: refactor(runtime): drop older-runtime fallbacks the version lock retired (#6751)
- Merged pull request #6766: fix(command): read a wget health check that names where the response goes (#6766)
- Merged pull request #6829: refactor(sync): let the runtime decide whether synced intel is stale (#6829)
- Merged pull request #6729: refactor(hook): retire the Python post-tool activity fallback (#6729)
- Merged pull request #6764: refactor(mcp): drop the HOL_GUARD_MCP_RELAY canary selection (#6764)
- Merged pull request #6806: refactor(mdm): walk macOS ownership and ACLs in the native runtime (#6806)
- Merged pull request #6719: feat(scanner): read a credential carried inside a base64 payload (#6719)
- Merged pull request #6805: refactor(mdm): parse health and protection leases in the native runtime (#6805)
- Merged pull request #6765: refactor(guard): drop the test-only extraction owner writer and first-blocked-cause validator (#6765)
- Merged pull request #6501: feat(guard): integrate optional CIGAR context assistance
- Merged pull request #6769: refactor(inventory): call the native snapshot digest directly (#6769)
- Merged pull request #6821: refactor(mdm): send the MDM runtime requests through one helper (#6821)
- Merged pull request #6715: perf(approvals): settle a claimed native review retry in one store call (#6715)
- Merged pull request #6718: fix(command): read a lone usage flag as the text it prints (#6718)
- Merged pull request #6703: fix(command): keep a Git command that drops committed history at review (#6703)
- Merged pull request #6749: fix(mcp): launch Cline's managed MCP servers through the native relay (#6749)
- Merged pull request #6815: refactor(mdm): read the managed proxy credential in the native runtime (#6815)
- Merged pull request #6824: refactor(mdm): let the runtime find the Windows directory itself (#6824)
- Merged pull request #6796: refactor(mdm): decide ownership and ACL health in the native runtime (#6796)
- Merged pull request #6792: fix(command): read a crates.io search without the package review (#6792)
- Merged pull request #6735: refactor(activity): leave the correlation key file to the resident (#6735)
- Merged pull request #6787: fix(cloud-review): name the published Cloud rule that queued a review (#6787)
- Merged pull request #6779: fix(command): let a grep include narrow the recursive walk (#6779)
- Merged pull request #6809: refactor(mdm): read the supervisor registration and run its probes in the native runtime (#6809)
- Merged pull request #6794: refactor(mdm): parse and verify installation continuity in the native runtime (#6794)
- Merged pull request #6789: fix(command): read uv's lockfile assertion inside the sandbox (#6789)
- Merged pull request #6818: refactor(mdm): run the device-key helper in the native runtime (#6818)
- Merged pull request #6724: perf(hook): record a direct answer's command activity in the resident (#6724)
- Merged pull request #6762: refactor(guard): move the test-only shell execution context adapter under tests (#6762)
- Merged pull request #6716: refactor(runtime): retire the unwired content-decode and Vite output clients (#6716)
- Merged pull request #6835: refactor(daemon): check Windows process lifecycle in the native runtime (#6835)
- Merged pull request #6734: fix(command): read a quoted pipe in a loop body as text (#6734)
- Merged pull request #6791: refactor(mdm): check health snapshot bindings in the native runtime (#6791)
- Merged pull request #6771: perf(guard): derive policy-bundle lookup identities in the resident (#6771)
- Merged pull request #6825: fix(command): read the unstaged comparison a script asks git for (#6825)
- Merged pull request #6755: fix(command): read a loopback liveness ping without review (#6755)
- Merged pull request #6778: refactor(guard): retire session, composio and receipt store wrappers only tests called (#6778)
- Merged pull request #6804: fix(command): name the records git keeps beside the history (#6804)
Upgrade and compatibility
None documented.
Compare with the previous release
Predecessor on the same channel: alpha/v3.59.0a27
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.