Release notes

HOL Guard v3.56.0a2

Preview

HOL Guard v3.56.0a2, released October 23, 2026, is a preview release with 1 addition, 7 improvements, 10 fixes and 9 other changes across 24 merged pull requests. Highlights: Lead the releases screen with the version you are running; Inventory url redaction in the resident.

Changes since the previous release on this channel: alpha/v3.53.0a3alpha/v3.56.0a2

1 added · 7 improved · 10 fixed · 9 other

Published Original GitHub release for alpha/v3.56.0a2

Key facts

Version
v3.56.0a2
Channel
Preview
Published
Previous release
alpha/v3.53.0a3
Merged pull requests
24

Documented changes

27 typed entries

Verified contributors

Credits being verified. Attribution coverage is in progress.

Attribution coverage

attribution in progress; history inventory partial.

Scope

Guard v3.56.0a2 is a preview release published 2026-10-23. Upstream documents: Guard 3.56.0a2 is an opt-in prerelease cut from 2cad069. Stable installations remain on the stable channel. 26 commits • 24 merged pull requests • 2 contributors since Guard 3.56.0a1. Its comparison base is alpha/v3.53.0a3. It includes 234 verified contribution deliveries with public evidence links. Attribution for this release is being verified.

Changes

Added

1

Improved

7

Fixed

10

Other changes

9
  • Guard 3.56.0a2 is an opt-in prerelease cut from 2cad069. Stable installations remain on the stable channel. 26 commits • 24 merged pull requests • 2 contributors since Guard 3.56.0a1. Evidence for this change
  • ciParallelize formatting and bound telemetry lookup (#5734) Evidence for this change
  • testsUse tmpfs for admitted offline fixture data (3b26c5a) Evidence for this change
  • ciStabilize producer caching and CI test fixtures (#5720) Evidence for this change
  • ciShare offline setup across two fixture groups (f1f90ae) Evidence for this change
  • package-shimsTake the store lock from a fresh interpreter (#5753) Evidence for this change
  • nativeGive resident-stop callers room past the runtime's stop bound (#5726) Evidence for this change
  • nativeExpect stdbuf to model the program behind it in the differential check (#5724) Evidence for this change
  • postureSeed the sync fixture's receipts against the real clock (#5722) Evidence for this change
    • Merged pull request #5617: refactor(hook): hash the claude alias in the resident with the other artifacts (#5617)
    • Merged pull request #5641: refactor(native): decide the public release transport in the resident (#5641)
    • Merged pull request #5550: fix(shell): read a virtualenv's own programs by the path that names them (#5550)
    • Merged pull request #5689: perf(native): batch directory syncs for fresh offline exports
    • Merged pull request #5706: test(native): fix two nightly test failures on macOS and Windows (#5706)
    • Merged pull request #5708: fix(native): let read-only docker context listings run without review (#5708)
    • Merged pull request #5734: perf(ci): parallelize formatting and bound telemetry lookup (#5734)
    • Merged pull request #5498: refactor(runtime): retire the Python pytest-target detector (#5498)
    • Merged pull request #5542: fix(guard): let Claude Code list a feature directory with Read without review (#5542)
    • Merged pull request #5662: fix(native): read back the logs a container or a compose project already printed (#5662)
    • Merged pull request #5527: fix(hook): the resident decides containment routing on both hook paths, and a missing answer is the host outage (#5527)
    • Merged pull request #5596: fix(extensions): keep connector discovery working on a long history (#5596)
    • Merged pull request #5500: fix(secure-fs): classify a source inside a linked workspace by its target (#5500)
    • Direct commit 49e6de00b7e7: fix(native): keep Poetry project reads fail closed
    • Merged pull request #5516: fix(hook): the resident decides the PreToolUse floor, and a missing answer is the host outage (#5516)
    • Direct commit c8b49c834828: fix(dashboard): name a release version once on the Releases screen
    • Merged pull request #5673: test(ci): preserve schema fixture paths in coverage reports (#5673)
    • Merged pull request #5602: fix: clear the macOS and Windows nightly test failures (#5602)
    • Merged pull request #4608: Add azure-vm-pricing MCP server descriptor (#4608)
    • Merged pull request #5728: fix(daemon): enroll a fresh home before the policy publisher starts (#5728)
    • Direct commit 70e16d1ea422: Merge branch 'main' into feat/command-mcpguard
    • Direct commit d6fe8aea08b1: maintainer: merge main; normalize non-contribution paths to main
    • Merged pull request #5635: fix(gauntlet): judge the two benign native cases by what the host and redactor actually write (#5635)
    • Merged pull request #5679: fix(runtime): migrate authenticated legacy command packs
    • Merged pull request #5642: test(gauntlet): run the shell shapes behind recent false-positive fixes (#5642)
    • Merged pull request #5579: refactor(extension-control): compute approval proof digests in the resident (#5579)
    • Merged pull request #5584: refactor(native): spell a sensitive read's approval-key digest in the resident (#5584)
    • Merged pull request #5232: feat(extensions): classify Iterlay CLI side effects and read-only paths (#5232)
    • Merged pull request #5585: fix(command): keep a write beside a Git listing reviewable instead of blocked (#5585)
    • Merged pull request #5144: Register xrpl-token-guard hosted MCP server (#5144)
    • Merged pull request #5562: refactor(catalog-delivery): move build-only delivery readers out of the runtime package (#5562)
    • Merged pull request #5651: fix(test): build the runtime test binary on Windows again (#5651)
    • Merged pull request #5752: fix(codex): write the Windows sink command so either Codex shell runs it (#5752)
    • Merged pull request #5715: ci(native): retry the Linux installed SLO once when only the RSS ceiling misses (#5715)
    • Merged pull request #5634: fix(native): read a conditional and a while loop as the lists inside them (#5634)
    • Merged pull request #5667: fix(native): admit read-only Poetry project queries without review (#5667)
    • Merged pull request #5427: feat(mcp): add codex-claude-bridge MCP server contribution (#5427)
    • Merged pull request #5588: feat(dashboard): add a Releases tab showing every published version and what it changed (#5588)
    • Merged pull request #5572: feat(native): seal the managed-controls activation and publication epoch in the resident (#5572)
    • Merged pull request #5506: refactor(runtime): delete the unreachable declared-output capture (#5506)
    • Merged pull request #5677: fix(command): read a bisect log and a note as the printing commands they are (#5677)
    • Merged pull request #5654: perf(release): reuse verified native binaries before compiling
    • Merged pull request #5630: fix(native): prove a touch beside the peers it is written with (#5630)
    • Merged pull request #5609: fix(dashboard): ask hol.org for the page of releases it will actually send (#5609)
    • Merged pull request #5704: fix(extensions): recover missed publisher claim invitations
    • Merged pull request #5556: fix(native): compile the npm-proving test helpers only where their tests run (#5556)
    • Direct commit 9c1c749b5415: fix(delivery): patch the container pins and anchor data releases to the signed root
    • Merged pull request #5607: test(native): stop the fixture's store resident before the lifecycle tests run (#5607)
    • Merged pull request #5582: fix(ci): pin the Gauntlet image to Node.js 22.23.4 (#5582)
    • Merged pull request #5618: feat(dashboard): render release notes as the maintainer wrote them (#5618)
    • Merged pull request #5521: fix(shell): recognize the path-word lookups as read-only (#5521)
    • Merged pull request #5719: refactor(native): aibom report summaries in the resident (#5719)
    • Merged pull request #5587: feat(native): spell the artifact approval key in the resident (#5587)
    • Merged pull request #5601: refactor(extensions): decide the approval extension recommendation in the resident instead of Python (#5601)
    • Merged pull request #5581: refactor(extension-control): compute the runtime snapshot digest in the resident (#5581)
    • Direct commit fc5bd2e5b92b: chore(dashboard): rebuild Extensions bundle after rebase onto main
    • Merged pull request #5686: fix(native): keep an ordinary setting out of contained execution (#5686)
    • Direct commit 179080b7203d: feat(mcp): add Journey Digital church website audit descriptor
    • Merged pull request #5512: feat(mcp-servers): add halflife-mcp MCP contribution (#5512)
    • Merged pull request #5519: refactor(hooks): let the native runtime pick the verdict for Claude's permission dialog (#5519)
    • Merged pull request #5571: refactor(native): verify catalog object and container bytes in the runtime (#5571)
    • Merged pull request #5547: Add agent-wire MCP server contribution (#5547)
    • Merged pull request #5732: feat(dashboard): lead the releases screen with the version you are running (#5732)
    • Merged pull request #5507: fix(dashboard): keep the extensions page usable while Guard settles a catalog (#5507)
    • Merged pull request #3119: feat(command): add BatteryControl command safety extension (#3119)
    • Merged pull request #5685: test(native): retry parity runs that stop decoding part-way through the budget (#5685)
    • Merged pull request #5568: refactor(native): validate catalog distribution roots in the runtime (#5568)
    • Merged pull request #5624: fix(native): read a glob that names no directory (#5624)
    • Merged pull request #5563: feat(native): seal extension-control anchors, manifests and restores in the resident (#5563)
    • Direct commit a36783f210e1: fix(ci): exclude cfg(test) vendored suite from host compiler source closure
    • Merged pull request #5647: fix(native): read a quoted angle bracket as text, not a redirect (#5647)
    • Merged pull request #5650: fix(ci): declare the find -exec reader in the command source manifest (#5650)
    • Merged pull request #5632: test(native): pin requested-stop isolation between two runtime digests (#5632)
    • Merged pull request #5709: Register read-only XRP Ledger Trading Lab MCP (#5709)
    • Merged pull request #5554: fix(native): normalize extension ids in the native command catalog lookup (#5554)
    • Merged pull request #5655: fix(guard): keep frozen hooks and MCP proxies on the stable launcher (#5655)
    • Merged pull request #5552: feat(native): decide extension-control commits and transition recovery in the resident (#5552)
    • Merged pull request #5593: fix(native): contain a run whose tool directory sits in an installed package tree (#5593)
    • Merged pull request #5565: refactor(native): seal, verify and open command-pack records in the runtime (#5565)
    • Merged pull request #5580: refactor(native): assemble custom-extension continuity commits in the resident (#5580)
    • Merged pull request #5722: test(posture): seed the sync fixture's receipts against the real clock (#5722)
    • Merged pull request #5645: fix(update): release the update barrier before repairing shims and hooks (#5645)
    • Merged pull request #5748: fix(pi): route Windows pytest through the contained sink (#5748)
    • Merged pull request #5503: refactor(runtime): retire the Python Codex hook response shaper (#5503)
    • Merged pull request #4680: feat: add x402Shield command policy descriptor (#4680)
    • Merged pull request #5362: feat(extensions): add command.agentsocks command source (#5362)
    • Merged pull request #5528: fix(lifecycle): carry long authority history beside the migration request (#5528)
    • Merged pull request #5648: fix(hooks): migrate retained policy when the installed compiler changes (#5648)
    • Merged pull request #5599: feat(mcp-servers): add remote-pc-mcp MCP contribution (#5599)
    • Merged pull request #5675: test(command): cover nice and stdbuf prefixes in the gate and Gauntlet (#5675)
    • Merged pull request #5720: perf(ci): stabilize producer caching and CI test fixtures (#5720)
    • Merged pull request #5721: refactor(native): inventory url redaction in the resident (#5721)
    • Merged pull request #5666: perf(extensions): answer the publisher's pack-record and active-security reads in the resident (#5666)
    • Merged pull request #5623: fix(approvals): report held decisions outside Oh My Pi (#5623)
    • Merged pull request #5658: fix(native): name the command-admission failure the resident actually hit (#5658)
    • Merged pull request #5523: fix(catalog): read Guard state through a symlinked ancestor directory (#5523)
    • Merged pull request #5670: feat(commands): map container and cluster changes and GitHub metadata reads (#5670)
    • Merged pull request #5699: fix(hooks): stabilize exhausted handoff deadlines
    • Merged pull request #5564: feat(hook): decide the JSON document's exit status in the native runtime (#5564)
    • Merged pull request #5505: refactor(runtime): delete the unreachable Python sandbox runner (#5505)
    • Merged pull request #5684: perf(ci): warm trusted Rust test archives outside the main queue (#5684)
    • Merged pull request #5680: fix(hooks): drop the harness tool-name spelling the adapter replaced (#5680)
    • Merged pull request #5711: refactor(native): judge the managed policy of an installed upgrade in the resident (#5711)
    • Merged pull request #5735: fix(native): run a Poetry or Pipenv project tool inside the sandbox (#5735)
    • Merged pull request #5674: fix(native): stop reviewing writes to project files named after credentials (#5674)
    • Merged pull request #5558: fix(shell): resolve the repository root on Windows instead of reviewing it (#5558)
    • Merged pull request #5629: fix(native): model an rg inclusion that names a path (#5629)
    • Merged pull request #5513: refactor(hook): read the native verdict instead of re-deriving it in Python (#5513)
    • Merged pull request #5530: refactor(catalog): validate permission replacements in Rust and drop the unused Python permission catalog (#5530)
    • Merged pull request #5665: fix(native): read the program behind nice and stdbuf (#5665)
    • Merged pull request #5727: fix(native): review a sourced init file instead of refusing it outright (#5727)
    • Merged pull request #5610: feat(mcp-servers): add Pinpoint MCP contribution (#5610)
    • Merged pull request #5688: fix(catalog): log why a publication refresh failed, not only that restore found nothing (#5688)
    • Merged pull request #5578: perf(ci): split Rust compilation units and rebalance coverage shards (#5578)
    • Merged pull request #5672: fix(native): contain local Composer and Bundler project work (#5672)
    • Merged pull request #5605: refactor(native): check delivery asset locations with the pack lifecycle's one check (#5605)
    • Merged pull request #5515: test(inventory): pin the Rust inventory contract to Python's output (#5515)
    • Merged pull request #5669: perf(native): batch metadata fetches and reuse container reads (#5669)
    • Merged pull request #5510: fix(contracts): reject runtime-scope entries for deleted modules (#5510)
    • Merged pull request #5499: refactor(runtime): retire the Python local read operand shim (#5499)
    • Merged pull request #5504: fix(pretool): read a Windows working directory as the path it names (#5504)
    • Merged pull request #5595: fix(command): keep pip listings quiet when the session exports XDG_CONFIG_HOME (#5595)
    • Merged pull request #5557: fix(guard): hold commands that reach a known-bad host for review (#5557)
    • Direct commit 273445d60ba6: Merge remote-tracking branch 'origin/main' into repair/pr-4608
    • Merged pull request #3100: feat(mcp): add Quidli Connect remote MCP contribution (#3100)
    • Merged pull request #5637: fix(ci): give the default-auto probe's receipt drain the same budget everywhere (#5637)
    • Merged pull request #5631: feat(mcp): add obsidian-kanban MCP server contribution and trust binding (#5631)
    • Merged pull request #5543: fix(extensions): name the Extension that settles a Cursor review (#5543)
    • Merged pull request #5546: fix(hook): the resident hashes the artifact a saved approval is keyed by (#5546)
    • Merged pull request #5731: fix(commands): read every package manager's exec spelling as a local-bin run (#5731)
    • Merged pull request #5615: fix(native): read a pipeline filter's pattern as text, not as a path (#5615)
    • Direct commit ee14f4e9e7d6: Merge remote-tracking branch 'origin/main' into repair/pr-5539
    • Merged pull request #5518: fix(extensions): read installed data through a symlinked installation prefix (#5518)
    • Merged pull request #5541: Add jd-church-website-audit MCP descriptor (#5541)
    • Merged pull request #5616: refactor(native): let the resident bind what a prepared Extension control commit repeats (#5616)
    • Merged pull request #5544: feat(inventory): classify inventory item evidence in the native runtime (#5544)
    • Merged pull request #5592: refactor(inventory): read an artifact's source of truth in the resident (#5592)
    • Merged pull request #5603: fix(catalog): drop the npx-only flag from the uvx example in the command oracle (#5603)
    • Merged pull request #5724: test(native): expect stdbuf to model the program behind it in the differential check (#5724)
    • Merged pull request #5692: fix(native): keep the snapshot publisher alive when the store is locked (#5692)
    • Merged pull request #5577: ci(native): stop nightly flakes from failing healthy runs (#5577)
    • Merged pull request #5652: fix(native): let a shared dependency link stand beside a branch read (#5652)
    • Merged pull request #5627: fix(ci): measure soak RSS growth after the worker pool fills (#5627)
    • Merged pull request #5508: fix(policy): pin the Guard Cloud policy-bundle signing key as a built-in anchor (#5508)
    • Merged pull request #5687: fix(scanner): block passwd, passphrase, *_pass and access_key values and passwords in URLs from agent output (#5687)
    • Merged pull request #5604: refactor(native): let the resident name the pack record a resumed transition binds (#5604)
    • Merged pull request #5589: chore(release): 3.54.0 (#5589)
    • Merged pull request #5471: refactor(runtime): retire the Python source-path classifier (#5471)
    • Merged pull request #5730: perf(tests): use tmpfs for admitted offline fixture data
    • Direct commit 7b8d4ab60c96: feat(mcp): add codex-claude-bridge MCP server contribution
    • Merged pull request #5751: fix(gauntlet): keep the authority a daemon start enrolled in a new home (#5751)
    • Merged pull request #5509: refactor(github): retire the Python GitHub CLI capability shim (#5509)
    • Merged pull request #5723: refactor(native): the contributed MCP grammar in the resident (#5723)
    • Merged pull request #5700: perf(ci): reuse native packs during projection preparation
    • Merged pull request #5712: perf(ci): decouple native wheels and consolidate validation
    • Direct commit 7933c2c22209: fix(native): refuse a continuity write that mixes the removals record with state
    • Merged pull request #5525: fix(evidence): repair stale command evidence health instead of leaving a dead-end warning (#5525)
    • Merged pull request #5626: test(rust): give parallel test fixtures distinct directory names (#5626)
    • Merged pull request #5574: refactor(native): validate and digest the v1 extension catalog wire in the runtime (#5574)
    • Merged pull request #5493: fix(security): address OpenSSF Scorecard vulnerabilities and unsigned data releases (#5493)
    • Merged pull request #5640: chore(release): 3.55.0
    • Merged pull request #5611: test: leave sysconfig answering every caller while a test stubs its paths (#5611)
    • Merged pull request #5742: fix(native): run Maven lifecycle goals in the workspace sandbox (#5742)
    • Merged pull request #5533: fix(extensions): stop sending a reinstall for an oversized native request (#5533)
    • Merged pull request #5613: fix(extensions): read an installed authoring context through one verified runtime (#5613)
    • Merged pull request #5668: perf(ci): shard bundled MCP decision cases by package
    • Merged pull request #5656: feat(guard): enroll the extension-control authority when the daemon first starts (#5656)
    • Merged pull request #5657: feat(desktop): retire other HOL Guard installs when Desktop updates Core (#5657)
    • Merged pull request #5713: refactor(native): plan a verified workspace read in the resident (#5713)
    • Merged pull request #5555: fix(native): honour a merge Allow on repositories named after Guard, and check out fetched branches without review (#5555)
    • Merged pull request #5590: docs(changelog): correct two garbled release-note lines (#5590)
    • Merged pull request #5659: perf(ci): stabilize Rust caches and reuse package test builds
    • Merged pull request #5636: fix(rust): scope the symlink test's fingerprint import to Unix (#5636)
    • Direct commit f6993152d346: fix: review mutating ADB tools
    • Merged pull request #5606: fix(native): read the program a find -exec names and the timeout an eval call carries (#5606)
    • Merged pull request #5545: fix(dashboard): announce ready Guard updates inside the Desktop window (#5545)
    • Merged pull request #5410: fix(dashboard): name the app on each MCP connection in the Extensions list (#5410)
    • Merged pull request #5514: feat(network): enforce workspace URL rules and known-bad URL indicators from Guard Cloud (#5514)
    • Merged pull request #5520: feat(native): implement the inventory fingerprint and agent-type seams (#5520)
    • Merged pull request #5671: fix(native): let the sandbox contain a local rsync copy (#5671)
    • Merged pull request #5608: refactor(native): let the resident judge Extension catalog negotiation with Cloud (#5608)
    • Merged pull request #5622: fix(catalog): reuse verified catalog object reads so extension publication meets its deadline (#5622)
    • Merged pull request #5633: test(hook): pin the native-unavailable exit codes to the resident's table (#5633)
    • Merged pull request #3041: Add command.master-of extension for bulk mo CLI mutations (#3041)
    • Merged pull request #5663: perf(ci): use every allocated core for pytest shards
    • Merged pull request #5705: feat(review): name the extensions that already cover a paused command (#5705)
    • Merged pull request #5620: fix(native): let an agent take stock of a toolchain tree without review (#5620)
    • Merged pull request #5718: refactor(native): read a package evaluation back in the resident (#5718)
    • Merged pull request #5619: fix(review): show extension setup guidance for commands an extension covers (#5619)
    • Merged pull request #5714: refactor(native): retire the shell directory grammar Python kept (#5714)
    • Merged pull request #5583: fix(gauntlet): judge a declared benign exit and a proven contained rerun as the results they are (#5583)
    • Merged pull request #5536: fix(codex): run contained Python and Node work on Windows instead of asking (#5536)
    • Merged pull request #5560: refactor(extensions): admit pack archives only through the native runtime (#5560)
    • Merged pull request #5676: chore(release): 3.55.1
    • Merged pull request #5517: fix(hooks): answer a missing workflow evaluation with the outage response (#5517)
    • Merged pull request #5511: feat(native): port the artifact hash to Rust behind a parity fixture (#5511)
    • Merged pull request #5733: fix(native): read a held evaluation's policy action as an action (#5733)
    • Merged pull request #5612: refactor(native): let the resident judge what a local Extension control draft may change (#5612)
    • Merged pull request #5451: fix(daemon): record MCP discovery failures in daemon.log (#5451)
    • Merged pull request #5522: feat(dashboard): distill Rules & exceptions to one list, one toolbar, and one disclosure
    • Merged pull request #5621: fix(native): stop charging a requested resident shutdown to the crash-loop budget (#5621)
    • Merged pull request #5535: fix(extensions): name why a connector scan failed and keep the rest (#5535)
    • Merged pull request #5710: fix(native): wait for the supervisor before a stop returns (#5710)
    • Merged pull request #5697: test(native): pin the pack binding a catalog migration carries forward (#5697)
    • Merged pull request #5537: refactor(runtime): answer extension-control composition and resolution from the resident (#5537)
    • Merged pull request #5532: fix(gauntlet): reseed the protected Codex hooks file after install (#5532)
    • Merged pull request #5726: test(native): give resident-stop callers room past the runtime's stop bound (#5726)
    • Merged pull request #5573: feat(native): compute the extension-control semantic preview in the resident (#5573)
    • Direct commit 2b8c0c44bf32: maintainer: merge main; normalize non-contribution paths to main
    • Merged pull request #5591: feat(extensions): decide the Extensions allow hint in the native resident (#5591)
    • Merged pull request #5549: feat(dashboard): promote Extensions to the primary sidebar group and demote Evidence (#5549)
    • Merged pull request #5646: perf(extensions): stop re-reading command controls every second while nothing changed (#5646)
    • Merged pull request #5649: fix(ci): declare the find -exec reader in the command source inputs (#5649)
    • Direct commit f786bca2a1dd: Merge remote-tracking branch 'origin/main' into pr3119-batterycontrol
    • Merged pull request #5484: chore(release): 3.53.0
    • Merged pull request #5534: feat(native): verify the extension-control authority in the resident (#5534)
    • Merged pull request #5597: fix(dashboard): ask for a code when an extension save outlives a recent proof (#5597)
    • Merged pull request #5638: feat(mcp): add brickproof-adb MCP server contribution and trust binding (#5638)
    • Merged pull request #5538: fix(guard): stop reviewing prompts over output-format options (#5538)
    • Merged pull request #5664: refactor(extensions): drop the Python authority record sealer (#5664)
    • Merged pull request #5729: refactor(native): the false-positive path grammar in the resident (#5729)
    • Merged pull request #5531: refactor(managed-controls): remove the unused Python catalog and bundle parsers (#5531)
    • Merged pull request #5661: fix(native): run Git in a linked worktree inside the workspace sandbox (#5661)

Upgrade and compatibility

None documented.

Compare with the previous release

Predecessor on the same channel: alpha/v3.53.0a3

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 ledger234 credits