This release includes 2 breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Affected surfaces
ReleasePort's take
Moderate signal`run` now checks input platform integrity before replaying and exits with status 1 on a mismatch; `read` disables external `<script>` fetching by default, requiring `--js-fetch` to opt‑in.
Why it matters: Run command failures on integrity mismatches trigger exit 1, halting automated workflows; read’s default JS fetch disablement alters page rendering and data collection unless `--js-fetch` is explicitly used.
Summary
AI summaryrun now verifies input integrity before replaying and read defaults to disabling external JS fetches.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Breaking | High |
`read` no longer fetches external `<script src=...>` by default; opt‑in with `--js-fetch`. `read` no longer fetches external `<script src=...>` by default; opt‑in with `--js-fetch`. Source: llm_adapter@2026-05-28 Confidence: high |
— |
| Breaking | High |
`run` now verifies input platform integrity before replaying and exits on mismatch (exit 1). `run` now verifies input platform integrity before replaying and exits on mismatch (exit 1). Source: llm_adapter@2026-05-28 Confidence: high |
— |
| Feature | Medium |
`click` on non‑navigating elements now returns post‑click `text`, `tree`, and `content_hash`. `click` on non‑navigating elements now returns post‑click `text`, `tree`, and `content_hash`. Source: llm_adapter@2026-05-28 Confidence: high |
— |
| Feature | Low |
`run` gains `--no-verify-input` flag to skip input‑integrity check. `run` gains `--no-verify-input` flag to skip input‑integrity check. Source: llm_adapter@2026-05-28 Confidence: high |
— |
| Feature | Low |
`heso` command installed by `pip install heso` is now the native Rust binary instead of a Python wrapper. `heso` command installed by `pip install heso` is now the native Rust binary instead of a Python wrapper. Source: llm_adapter@2026-05-28 Confidence: high |
— |
| Bugfix | Medium |
`heso read` now correctly accepts the `--js-fetch` flag. `heso read` now correctly accepts the `--js-fetch` flag. Source: llm_adapter@2026-05-28 Confidence: high |
— |
| Bugfix | Medium |
`read` output fields (`tree`, `title`, `description`, `metadata`) are now consistent with post‑JS DOM matching `text`. `read` output fields (`tree`, `title`, `description`, `metadata`) are now consistent with post‑JS DOM matching `text`. Source: llm_adapter@2026-05-28 Confidence: high |
— |
| Bugfix | Medium |
`read`'s `cookies` field now includes cookies set by page JavaScript via `document.cookie`. `read`'s `cookies` field now includes cookies set by page JavaScript via `document.cookie`. Source: llm_adapter@2026-05-28 Confidence: high |
— |
Full changelog
Release Notes
Added
clickon a non-navigating element (an in-page handler that mutates
the DOM or callshistory.pushState) now returns the post-click
text,tree, andcontent_hash, so an agent can see what changed.
The<a href>navigation path (which already returned the
destination's fields) is unchanged.rungains--no-verify-inputto skip the input-integrity check
introduced below.
Changed
- The
hesocommand installed bypip install hesois now the native
Rust binary itself (shipped via the wheel's*.data/scripts/
directory) instead of a Python console-script that booted the
interpreter before exec'ing the binary.import hesoand
python -m hesoare unchanged. readno longer fetches external<script src=...>by default; pass
--js-fetchto opt in (matchingread --helpandeval-dom). Inline
scripts are unaffected.runnow verifies the input plat's integrity before replaying and
refuses on aplat_hashmismatch (exit 1,{ok: false, error: {code: "plat_integrity_mismatch", ...}}); a missing or malformedplat_hash
exits 2.--no-verify-inputrestores the prior replay-anything
behavior. This is a contract change —runpreviously replayed any
input and exited 0. See ADR 0024.
Fixed
heso readnow accepts--js-fetch. The flag was advertised in
read --helpbut rejected by the argument parser.readoutput is internally consistent after JavaScript runs:tree,
title,description, andmetadataare derived from the post-JS
DOM, matchingtextandactions. Previouslytreereflected the
pre-JS HTML whiletextreflected the post-JS mutated DOM.read'scookiesfield now includes cookies set by page JavaScript
viadocument.cookie, merged with the networkSet-Cookieheaders.
batchandservekeep their per-response cookie snapshot.
Install heso-cli 0.1.8
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/blank3rs/heso/releases/download/v0.1.8/heso-cli-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/blank3rs/heso/releases/download/v0.1.8/heso-cli-installer.ps1 | iex"
Download heso-cli 0.1.8
| File | Platform | Checksum |
|--------|----------|----------|
| heso-cli-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
| heso-cli-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
| heso-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| heso-cli-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
| heso-cli-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |
Breaking Changes
- `run` now performs input integrity verification before replaying; a mismatch causes exit code 1 (or 2 for missing/malformed `plat_hash`). Use `--no-verify-input` to restore previous behavior.
- `read` no longer fetches external JavaScript resources by default; opt‑in with `--js-fetch`.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About blank3rs/heso](https:
All releases →Related context
Related tools
Beta — feedback welcome: [email protected]