Changelog
Version history and release notes for epack CLI and specification.
Windows support for pack operations, catalog search across all component kinds, and dependency security updates.
Windows
- New
epack-core-windows-amd64.exeandepack-core-windows-arm64.exerelease binaries carry the same SLSA Level 3 provenance as every other platform - Windows covers pack operations: build, sign, verify, inspect, list, extract, merge, and diff. Collector and tool execution stays on macOS and Linux and fails closed on Windows
- Merge, filtered listing and extraction, and recursive result globbing handle Windows paths correctly
Catalog and utilities
epack catalog searchsearches collectors, tools, remotes, and utilities with an optional--kindfilter, andepack catalog refreshfetches the latest registry catalog with caching- The new
epack utilitycommand installs, lists, and removes user-scoped utilities with Sigstore verification, tracked in a global utilities lock
Security
- Dependency updates for published advisories in sigstore-go and grpc-go
- Path validation rejects rooted paths on every platform
Lockfile verification metadata: every locked component records whether its signature was checked at lock time.
Lockfile
- Locked collectors, tools, and remotes gain a
verificationblock recording the outcome of lock-time signature verification - Components locked from GitHub releases record
status: verifiedwith averified_attimestamp after their Sigstore bundles are checked against the pinned digests - External binaries record
status: skipped: they run from a local path and have no bundle to verify - Lockfiles written by earlier versions carry no
verificationblock, so consumers can tell verified and skipped entries apart from locks that predate verification recording
Committed-lockfile CI: strict locked installs, lockfile provenance reporting, and machine-readable errors.
CLI
- Added
epack sync --locked: clean-machine CI install that fetches exactly the locked versions with full signature and digest verification, fails on any drift, and never rewrites the lockfile - Added
epack remote report-lock: report the currentepack.lock.yamlto a remote without pushing a pack, for CI bootstrap and refresh flows - Sync and frozen paths now validate range satisfaction: a pinned version outside its configured range fails with
lock_config_mismatchinstead of silently keeping the old pin - Added
EPACK_ERROR_FILE: failed commands append stablecode=,exit=, andsummary=lines for log-free CI error handling - Runner context gains
head_shaviaEPACK_HEAD_SHA, the branch head onpull_requestworkflows whereGITHUB_SHAis the merge commit
Remote Protocol
- Added the
lock.reportcommand andlock_reportcapability for lockfile provenance reports (conformance rule REM-090) push.prepareandpush.finalizecarry a structuredlock_provenanceenvelope alongside the existing string build context, so releases record the exact lock that produced the pack
Errors
- New stable codes for frozen and locked failures:
lock_config_mismatch,lock_stale, andlock_missing_pinned_artifactreplace generic lockfile errors at the affected call sites
Richer artifact metadata for generated collector evidence.
Protocol
- Collector artifacts can carry
display_name,description, andcontrolsmanifest metadata
Go SDK
- Added
JSONArtifact,FileArtifact, andArtifactMetahelpers for metadata-bearing collector artifacts
Collector file artifacts for binary evidence such as PDFs, screenshots, and archives.
Protocol
- Added
EPACK_COLLECTOR_OUTPUT_DIR, a per-collector staging directory for raw file artifacts - Collectors can emit
fileartifact entries whose bytes are packaged at the declaredpath - Staged file paths reject traversal, absolute paths, symlinks, and non-regular files before packaging
- Staged bytes count toward artifact and pack budgets without counting against stdout limits
Go SDK
- Added
componentsdk.Staging(ctx)for optional file-artifact staging helpers - Added
WriteStagedFileandStageFilehelpers for buffered and streaming collector output
Security fixes for transitive dependencies.
Dependencies
- Bumped
go-joseto v4.1.4 to fix a JWE decryption panic (GHSA-78h2-9frx-2jm8) - Bumped
sigstore/timestamp-authorityto v2.0.6 for improper certificate validation in the verifier (GHSA-xm5m-wgh2-rrg3) - Bumped
go.opentelemetry.io/otelto v1.42.0 to fix a baggage-header allocation amplification (GHSA-mh2q-q3fh-2475)
Collection levels for graduated evidence gathering.
Protocol
- Reserved a top-level
levelconfig key with valuestrust,audit,internal; defaults totrustwhen absent - Levels are cumulative:
auditis a superset oftrust;internalis a superset ofaudit - Unknown values downgrade to
trustwith a stderr warning so collectors never gather more than was asked for - Collectors honoring the field stamp
collected_at_levelon their top-level artifact for downstream interpretation
Go SDK
- Added
componentsdk.LevelwithLevelTrust/LevelAudit/LevelInternalconstants - Added
ctx.Level()reader andLevel.AtLeast(other)comparator for gating field collection
Locktivity-managed credentials, portable hooks, build-context emission, and smoother GitHub Actions signing.
Managed Workflows
- Added top-level
credential_setsfor Locktivity-managed workflow integrations - Collectors, tools, and remotes can request managed credentials by logical ref
- Locktivity remote auth docs now reflect
access_token,device_code, andclient_credentials
Runner UX
- Added
epack hooks runfor portable project hooks under.epack/hooks/ - Added
epack context buildto emit build metadata for runners - Project scaffolding now keeps
.epack/hooks/tracked while ignoring other runtime state
CI/CD Signing
epack signnow uses ambient GitHub Actions OIDC automatically whenid-token: writeis granted- Other CI systems can continue to provide
EPACK_OIDC_TOKENexplicitly
Profile and overlay support, multiple collector artifacts, and new top-level commands.
Profiles & Overlays
- Added
profilesandoverlaysconfiguration sections in epack.yaml - Support for registry-sourced profiles with version locking
- Profile/overlay digests tracked in manifest for reproducibility
Collector SDK
- Breaking:
Emit()now accepts[]CollectedArtifactfor multiple artifacts per collection - New
CollectedArtifactstruct with Schema and Path metadata - Collectors can emit multiple artifacts in a single call
New Commands
epack catalog search— unified search across collectors, tools, remotes, and utilitiesepack catalog refresh— update local catalog cacheepack utility install/list/remove— manage global utilities
Remote Protocol
- Added
runs.syncandauth.whoamifeature capabilities - Consistent sync behavior across collector, tool, and remote adapters
Bug Fixes
- Fixed offline verification mode to properly use embedded timestamps
- Fixed JSON output returning
nullinstead of[]for empty arrays
Verification improvements and remote protocol enhancements.
Verification
- Improved error messages for attestation verification failures
- Added support for sigstore-js provenance bundles
Remote Protocol
- Added sidecar push support for parallel attestation uploads
- Improved push workflow reliability
Initial public release of the Evidence Pack specification and epack CLI.
Specification
- Evidence Pack format specification v1.0
- Manifest schema with SHA-256 digests for all artifacts
- Sigstore attestation bundle format
- Pack digest and manifest digest algorithms
CLI (epack-core)
build— create packs from artifactssign— keyless signing via Sigstoreverify— integrity and signature verificationinspect— view pack contents and metadatadiff— compare two packsmerge— combine multiple packslist— list artifacts in a packextract— extract artifacts from a pack
CLI (Full)
new— scaffold a new epack projectinit— initialize epack in existing directorycollect— run collectors and build packpush/pull— remote registry operationslock/sync/install/update— dependency managementcollector/tool— plugin management
Go SDK
pack— core pack types and operationspack/builder— fluent API for building packspack/verify— verification with policy optionssign— Sigstore signing integration
Stay Updated
Watch the repository for new releases and subscribe to release notifications.
View ReleasesVersioning Policy
epack follows Semantic Versioning:
- Major versions (1.0, 2.0) may include breaking changes to the specification or CLI
- Minor versions (0.2, 0.3) add new features in a backwards-compatible manner
- Patch versions (0.1.1, 0.1.2) include backwards-compatible bug fixes
Specification vs CLI versions
The Evidence Pack specification version is independent of the CLI version. The specification
is versioned in the manifest ("spec_version": "1.0") and changes less frequently
than the CLI.
Backwards compatibility
The CLI will always be able to read packs created by older versions. New features that require pack format changes will use new specification versions, and the CLI will indicate when a pack requires a newer version.