Repository navigation
Thoth CLI v0.3.7
Thoth CLI v0.3.7
0.3.7 - 2026-09-12
Stable release of the macOS runtime (thoth and thothctl) for Apple Silicon
and Intel. This is the global latest release; Linux and Windows artifacts are
not included and remain at v0.3.6. This client release does not change the
platform readiness status.
Security
- Updated the HTTP/2 stack from
h20.4.13 in v0.3.6 to 0.4.19, fixing
RUSTSEC-2026-0258 (unbounded queuing of empty DATA frames throughhyper).
The advisory is patched in h2 0.4.16 and later.
Added
- Carried an action attestation ID through every governed tool call. The proxy
reusesaction_attestation_idfrom the request when supplied and otherwise
generates one, sends it to the enforcer, and reports it on decision responses
and on both the request and terminal telemetry events, so an attempt can be
correlated end to end. - Reported decision evidence on
ALLOWandBLOCKresponses, which previously
carried none.BLOCK,DEFERandSTEP_UPresponses now include the
enforcement trace ID, action attestation ID, authorization decision, reason,
reason code, action classification and risk score when the enforcer supplies
them.
Fixed
- Stopped writing enforcer error response bodies and selected response headers
into proxy logs when a call fails. A failure is now recorded as a reason code
(enforcer_transport_error,enforcer_http_error,enforcer_invalid_response)
with the HTTP status only, so response content cannot reach logs. - Distinguished an enforcer response with no recognized decision from a genuine
BLOCK. Both still fail closed, but the former is now recorded as
enforcer_invalid_responserather than being indistinguishable from a policy
denial in evidence. - Preserved request-side correlation IDs on the terminal event when the enforcer
is unreachable, returns an error status, or returns an undecodable body, so a
failed call is still traceable to the attempt that caused it. - Kept a locally escalated
STEP_UPfrom exporting a receipt that the
underlyingALLOWnever carried. - Distinguished an absent model risk score from one the enforcer explicitly
reported as null, and stopped copying non-numeric risk payloads into decision
evidence. - Cleared stale request-side reason fields from terminal telemetry so a decision
reason always describes that decision.
Known limitations
- On Windows the proxy API key file (
~/.thoth/proxy_api_key.json) is written
with inherited ACLs. The owner-only permission handling thatthothctl
applies on macOS and Linux has no Windows equivalent yet, so treat that file
as readable by any account with access to the user profile until it does.
Changed
- Serialized the decision-evidence integration fixtures. Each spawns a proxy
subprocess and a mock enforcer, and running them concurrently exhausted the
proxy's bounded 5s HTTP timeout, so the proxy failed closed and the suite
reported six failures unrelated to proxy behavior.
This release contains macOS runtime assets only. Linux and Windows remain on their previous release; select an explicit earlier version for those platforms.
Enterprise Release Metadata
- Sigstore keyless signatures (
*.sig+*.sigstore.json) for all release assets - Build provenance (
provenance.json, GitHub attestations*.intoto.jsonl) - SBOMs (
sbom.cdx.json,sbom.spdx.json) - Immutable manifest (
release-manifest.json) - Apple signing/notarization metadata (
signing-metadata.json,apple-notarization-log.jsonwhen enabled) - Santa trust metadata (
santa-metadata.json)
Assets
apple-notarization-log.jsonapple-notarization-log.json.sigstore.jsonapple-notarization-state.jsonapple-notarization-state.json.sigstore.jsonapple-notarization-submit.jsonapple-notarization-submit.json.sigstore.jsonartifact-list.txtartifact-list.txt.sigstore.jsonchecksums.sha256checksums.sha256.sigstore.jsonchecksums.sha512checksums.sha512.sigstore.jsongithub-attestation-0.intoto.jsonlgithub-attestation-0.intoto.jsonl.sigstore.jsongithub-attestation-1.intoto.jsonlgithub-attestation-1.intoto.jsonl.sigstore.jsongithub-attestation-2.intoto.jsonlgithub-attestation-2.intoto.jsonl.sigstore.jsonmacos-0.intoto.jsonlmacos-0.intoto.jsonl.sigstore.jsonmacos-1.intoto.jsonlmacos-1.intoto.jsonl.sigstore.jsonprovenance.jsonprovenance.json.sigstore.jsonrelease-manifest.jsonrelease-manifest.json.sigstore.jsonsanta-metadata.jsonsanta-metadata.json.sigstore.jsonsbom.cdx.jsonsbom.cdx.json.sigstore.jsonsbom.spdx.jsonsbom.spdx.json.sigstore.jsonsigning-metadata.jsonsigning-metadata.json.sigstore.jsonsigstore-metadata.jsonthoth-macos-arm64thoth-macos-arm64.provenance.intoto.jsonlthoth-macos-arm64.provenance.intoto.jsonl.sigstore.jsonthoth-macos-arm64.sigstore.jsonthoth-macos-universalthoth-macos-universal.pkgthoth-macos-universal.pkg.sigstore.jsonthoth-macos-universal.sigstore.jsonthoth-macos-universal.tar.gzthoth-macos-universal.tar.gz.sigstore.jsonthoth-macos-x86_64thoth-macos-x86_64.provenance.intoto.jsonlthoth-macos-x86_64.provenance.intoto.jsonl.sigstore.jsonthoth-macos-x86_64.sigstore.jsonthothctl-macos-arm64thothctl-macos-arm64.provenance.intoto.jsonlthothctl-macos-arm64.provenance.intoto.jsonl.sigstore.jsonthothctl-macos-arm64.sigstore.jsonthothctl-macos-universalthothctl-macos-universal.sigstore.jsonthothctl-macos-x86_64thothctl-macos-x86_64.provenance.intoto.jsonlthothctl-macos-x86_64.provenance.intoto.jsonl.sigstore.jsonthothctl-macos-x86_64.sigstore.json
Standalone binary provenance
thoth-macos-universal-loose.intoto.jsonl verifies the standalone thoth binary.
macos-0.intoto.jsonl covers the Homebrew archive and its binaries;
macos-1.intoto.jsonl covers the notarized installer.
An upload retry signed the same executable code again, so the standalone
thoth binary and packaged copy have different code-signature bytes.
The published binaries and checksum manifests have not been replaced.