shield-v0.6.0
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 markdownOutputs 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 toallow
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: cleancargo test --release: 148 tests passing (was 133 in v0.5.0 — +15 covering the new diff mode)cargo auditagainst 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-shieldDocker:
docker pull ghcr.io/aperionai/shield:shield-v0.6.0
# or for the latest tag:
docker pull ghcr.io/aperionai/shield:latestDirect 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