Skip to content

shield-v0.6.0

Choose a tag to compare

@github-actions github-actions released this 18 May 16:17
· 22 commits to main since this release

What's in v0.6.0

The security-hygiene + behavior-diff release. Two themes:

1. Closes the three open Dependabot advisories from v0.5.x

rustls-webpki 0.101.7 (vulnerable transitive) → rustls-webpki 0.103.13, achieved by upgrading the connected dep cluster:

Dependency v0.5.x v0.6.0
reqwest 0.11.27 0.12.28
rustls 0.21.12 0.23.40
rustls-webpki 0.101.7 0.103.13 (closes RUSTSEC-2026-0098, -0099, -0104)
hyper-rustls 0.24.2 0.27.9
hyper 0.14.32 1.9.0
tokio-rustls 0.24.1 0.26.4
webpki-roots 0.25.4 1.0.7

None of the three advisories was practically exploitable in Shield's actual usage (see SECURITY.md §4 for the analysis), but cargo audit now passes cleanly against an empty ignore list. GitHub Dependabot auto-closed all three open alerts on push.

The hyper 0.14 → 1.x bump required a refactor of the OIDC callback server in src/identity/server.rs to the new http1::Builder + per-connection serve_connection model and the http_body_util::Full<Bytes> body type. The refactor is contained to that one file; the rest of the binary saw no API surface change. 7 end-to-end identity tests against a mock OIDC provider still pass post-refactor.

2. Native aperion-shield --diff mode

Native Rust port of scripts/shield-diff.py, the pre-merge behavior-diff explainer for shieldset changes. Run the engine over the same corpus under two different shieldsets and get a per-rule attribution of which lines flipped:

aperion-shield --diff \
    --rules-before main-shieldset.yaml \
    --rules-after  pr-shieldset.yaml \
    --corpus       tests/corpus/team-cursor-history.jsonl \
    --format       markdown

Outputs text / markdown (PR-comment friendly) / json (machine-readable, schema-stable with the Python prototype). CI gates:

  • --fail-if-flipped — exit 1 if any line's decision changed
  • --fail-if-loosened — exit 1 if any line moved toward a more permissive decision (the gate most teams want)
  • --fail-if-allows-loosened N — exit 1 if more than N lines flipped to allow

Runs in-process (no subprocess, no PATH dependency), reusing the same engine the proxy uses, so the decisions in the diff are exactly what a live wrapped agent would see. Existing CI workflows wired against scripts/shield-diff.py continue to work — the script is now a thin compatibility wrapper that delegates to aperion-shield --diff.

Full PR-review pattern: docs/shieldset-as-code.md Layer 4.

Verification

  • cargo build --release --locked: clean
  • cargo test --release: 148 tests passing (was 133 in v0.5.0 — +15 covering the new diff mode)
  • cargo audit against an empty ignore list: 0 advisories on 249 deps
  • Identity callback server end-to-end against the mock OIDC provider: 7/7 still pass

Install

Homebrew (macOS + Linux):

brew install AperionAI/tap/aperion-shield

Docker:

docker pull ghcr.io/aperionai/shield:shield-v0.6.0
# or for the latest tag:
docker pull ghcr.io/aperionai/shield:latest

Direct download: see the assets attached to this release for each platform (Linux x86/arm64, macOS x86/arm64, Windows x86). Each binary archive ships with a .sha256 sidecar.

Public-trust commitment

This release satisfies the hard public commitment in SECURITY.md §4.5 (pushed 2026-05-15): three open Dependabot advisories would close when v0.6.0 lands on Monday 2026-05-18. They closed.

Full Changelog: shield-v0.5.0...shield-v0.6.0