Release notes
HOL Guard v3.56.0a5
PreviewHOL Guard v3.56.0a5, released October 24, 2026, is a preview release with 9 additions, 4 improvements, 22 fixes and 9 other changes across 41 merged pull requests. Highlights: Decide a case statement as the lists its arms hold; Lay out the Supply Chain screen as a roster with a ruled details ledger.
9 added · 4 improved · 22 fixed · 9 other
Key facts
- Version
- v3.56.0a5
- Channel
- Preview
- Published
- Previous release
- alpha/v3.56.0a4
- Merged pull requests
- 41
Documented changes
44 typed entries
Verified contributors
2 verified contributors · 43 credits
Attribution coverage
attribution complete; history inventory partial.
Install
Scope
Guard v3.56.0a5 is a preview release published 2026-10-24. Upstream documents: Guard 3.56.0a5 is an opt-in prerelease cut from 51c7c19. Stable installations remain on the stable channel. 43 commits • 41 merged pull requests • 3 contributors since Guard 3.56.0a4. Its comparison base is alpha/v3.56.0a4. It includes 43 verified contribution deliveries with public evidence links.
Changes
Added
9- commandDecide a case statement as the lists its arms hold (#5856) Evidence for this change
- dashboardLay out the Supply Chain screen as a roster with a ruled details ledger (#5867) Evidence for this change
- The roster leads. The status hero comes first, then package managers with search and filters. Audit and Sync act on the whole roster, so they now sit after it.
- One ruled details ledger. Recent activity, workspace audit, supply chain intel, connected apps, the safety check source and the Guard Cloud capabilities share a new
SupplyChainDetailSection. On wide screens the… - Supply chain intel shows the bundle facts as a definition list, severity counts as plain text, and top advisories as a list. Loading, error and empty states each have their own copy.
- dashboardDraw what leaves the device on the About page (#5866) Evidence for this change
- nativeRead a whole command group as the list inside it (#5849) Evidence for this change
- nativeProve a repository count and an attribute check as reads (#5846) Evidence for this change
- nativeRead a sparse-checkout listing as the read it is (#5851) Evidence for this change
- gauntletReport the decision each case actually drove (#5835) Evidence for this change
- nativeVerify a trust attestation end to end in Rust (#5817) Evidence for this change
- nativePort the truthful protection-health report to Rust (#5833) Evidence for this change
Improved
4- nativeRead a skill's document in the native runtime (#5869) Evidence for this change
- supply-chainKeep one ecosystem support table (#5871) Evidence for this change
- supply-chainRecord the evidence identifiers the resident derived (#5868) Evidence for this change
- nativeKeep one copy of the lists the false-positive rules read (#5861) Evidence for this change
Fixed
22- syncWait briefly for catalog discovery before posting the runtime session (#5880) Evidence for this change
- ciLet the Gauntlet runtime build name its own size bound (#5879) Evidence for this change
- shellRead an env prefix behind a launcher as the parser reads it (#5870) Evidence for this change
- commandRead past a bare exec when projecting an environment prefix (#5872) Evidence for this change
- githubRead a trailing
--helpas help rather than as the command it follows (#5865) Evidence for this change - sinkLet the native parser name every prefix the contained sink peels (#5854) Evidence for this change
- commandKeep the activity record for a rule whose risk class the effect table does not name (#5858) Evidence for this change
- ciRecord why the locked zod leaves the advisory's code unreached (#5863) Evidence for this change
- commandRead the env options that only name the environment (#5853) Evidence for this change
- nativeRead a collapsing relative path as the current directory (#5852) Evidence for this change
- nativeKeep a JSONC comment's line breaks and report real positions (#5850) Evidence for this change
- nativeName a JSON number's Python type the way json.loads does (#5848) Evidence for this change
- commandsRead an absolute path that does not exist like a relative one (#5827) Evidence for this change
- detectionRefuse an unexaminable Gemini extension root instead of reporting none (
c9a7d78) Evidence for this change - nativeCarry an operator's choice to an Oh My Pi MCP tool (#5838) Evidence for this change
- aibomSync skill inventory that Guard Cloud accepts and report rejections (#5837) Evidence for this change
- nativeProve a literal-status exit step in a command chain (#5840) Evidence for this change
- nativeLet a restored release replace the security root its failed upgrade left (#5841) Evidence for this change
- A rollback to a lower authority or revocation epoch is still ignored, so the newer observation is kept.
- An older release that claims a newer authority still fails with
version_rollback. - An installed observation after a remote one is still ignored.
- nativeReview globs that print or bind credential-directory listings (#5836) Evidence for this change
- redactionMask secrets written as exported shell assignments (#5802) Evidence for this change
- scannerRead a credential written after an answer word as a value (#5829) Evidence for this change
- releaseReplace interrupted delivery uploads when publication is retried (#5834) Evidence for this change
Other changes
9- Guard 3.56.0a5 is an opt-in prerelease cut from
51c7c19. Stable installations remain on the stable channel. 43 commits • 41 merged pull requests • 3 contributors since Guard 3.56.0a4. Evidence for this change - nativeRead a local CLI's help text in the resident (#5843) Evidence for this change
- commandRead a nameless env behind exec where the bare spelling is read (#5875) Evidence for this change
- nativePin the MCP launch gate both halves decide (#5847) Evidence for this change
- redactionRecord the operator shapes the parity vectors missed (#5844) Evidence for this change
- nativeRead the recorded native decision back the way Guard does (#5845) Evidence for this change
- nativePass the recording flag in the Bash post-delivery tests (#5839) Evidence for this change
- gauntletHost a file-tool call in the approve-then-retry lane (#5830) Evidence for this change
- gitleaksAllow file digests in contribution authoring records (
32b9172) Evidence for this change- Merged pull request #5802: fix(redaction): mask secrets written as exported shell assignments (#5802)
- Merged pull request #5850: fix(native): keep a JSONC comment's line breaks and report real positions (#5850)
- Merged pull request #5845: test(native): read the recorded native decision back the way Guard does (#5845)
- Merged pull request #5868: refactor(supply-chain): record the evidence identifiers the resident derived (#5868)
- Merged pull request #5842: fix(detection): refuse an unexaminable Gemini extension root instead of reporting none
- Merged pull request #5851: feat(native): read a sparse-checkout listing as the read it is (#5851)
- Merged pull request #5835: feat(gauntlet): report the decision each case actually drove (#5835)
- Merged pull request #5856: feat(command): decide a case statement as the lists its arms hold (#5856)
- Merged pull request #5849: feat(native): read a whole command group as the list inside it (#5849)
- Merged pull request #5838: fix(native): carry an operator's choice to an Oh My Pi MCP tool (#5838)
- Merged pull request #5830: test(gauntlet): host a file-tool call in the approve-then-retry lane (#5830)
- Merged pull request #5869: refactor(native): read a skill's document in the native runtime (#5869)
- Merged pull request #5840: fix(native): prove a literal-status exit step in a command chain (#5840)
- Merged pull request #5853: fix(command): read the env options that only name the environment (#5853)
- Merged pull request #5834: fix(release): replace interrupted delivery uploads when publication is retried (#5834)
- Merged pull request #5829: fix(scanner): read a credential written after an answer word as a value (#5829)
- Merged pull request #5841: fix(native): let a restored release replace the security root its failed upgrade left (#5841)
- Merged pull request #5858: fix(command): keep the activity record for a rule whose risk class the effect table does not name (#5858)
- Merged pull request #5848: fix(native): name a JSON number's Python type the way json.loads does (#5848)
- Merged pull request #5870: fix(shell): read an env prefix behind a launcher as the parser reads it (#5870)
- Merged pull request #5827: fix(commands): read an absolute path that does not exist like a relative one (#5827)
- Merged pull request #5867: feat(dashboard): lay out the Supply Chain screen as a roster with a ruled details ledger (#5867)
- Merged pull request #5861: refactor(native): keep one copy of the lists the false-positive rules read (#5861)
- Merged pull request #5852: fix(native): read a collapsing relative path as the current directory (#5852)
- Merged pull request #5875: test(command): read a nameless env behind exec where the bare spelling is read (#5875)
- Merged pull request #5854: fix(sink): let the native parser name every prefix the contained sink peels (#5854)
- Merged pull request #5865: fix(github): read a trailing
--helpas help rather than as the command it follows (#5865) - Merged pull request #5871: refactor(supply-chain): keep one ecosystem support table (#5871)
- Merged pull request #5844: test(redaction): record the operator shapes the parity vectors missed (#5844)
- Merged pull request #5839: test(native): pass the recording flag in the Bash post-delivery tests (#5839)
- Merged pull request #5880: fix(sync): wait briefly for catalog discovery before posting the runtime session (#5880)
- Merged pull request #5843: perf(native): read a local CLI's help text in the resident (#5843)
- Merged pull request #5872: fix(command): read past a bare exec when projecting an environment prefix (#5872)
- Merged pull request #5817: feat(native): verify a trust attestation end to end in Rust (#5817)
- Merged pull request #5831: ci(gitleaks): allow file digests in contribution authoring records
- Merged pull request #5836: fix(native): review globs that print or bind credential-directory listings (#5836)
- Merged pull request #5866: feat(dashboard): draw what leaves the device on the About page (#5866)
- Merged pull request #5846: feat(native): prove a repository count and an attribute check as reads (#5846)
- Merged pull request #5837: fix(aibom): sync skill inventory that Guard Cloud accepts and report rejections (#5837)
- Merged pull request #5847: test(native): pin the MCP launch gate both halves decide (#5847)
- Merged pull request #5863: fix(ci): record why the locked zod leaves the advisory's code unreached (#5863)
- Merged pull request #5833: feat(native): port the truthful protection-health report to Rust (#5833)
- Merged pull request #5879: fix(ci): let the Gauntlet runtime build name its own size bound (#5879)
Upgrade and compatibility
None documented.
Compare with the previous release
Predecessor on the same channel: alpha/v3.56.0a4
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.