Skip to main content

aflock-ai/cilock-action reference

Source of truth: cilock-action/action.yml.

The CI/lock GitHub Action wraps a command (or another GitHub Action) and produces signed attestations. It downloads its own variant of the cilock binary at runtime from the cilock-action releases.

- uses: aflock-ai/cilock-[email protected] # latest as of 2026-05-23
with:
step: build
command: "go build -o myapp ./cmd/myapp"

Latest release: v1.0.3 — bundles a CI/lock built from rookery main with govulncheck, inclusion-proof, secretscan, slsa, and the PR #153 atomic-rename trace fix. Pin to the exact tag (or commit SHA) — never a moving major-version ref.

Multi-step chain via step names

CI/lock's policy language lets you declare relationships between attested steps. By giving each cilock-action invocation a distinct step: name and declaring artifactsFrom in the verification policy, the verifier enforces that step N's materials match step N-1's products byte-for-byte. This is how CI/lock's own release pipeline chains vendor-cilock-depsrelease-build — see Verify the cilock binary.

# Step 1 — vendor
- uses: aflock-ai/cilock-[email protected]
with:
step: vendor-deps # ← policy declares this step
command: go mod vendor
outfile: dist/vendor.attestation.json

# Step 2 — build, references step 1 via artifactsFrom in your policy
- uses: aflock-ai/cilock-[email protected]
with:
step: app-build
command: go build -mod=vendor -o app ./cmd/app
outfile: dist/build.attestation.json
trace: "true" # ← required for the hermetic / network-egress Rego

Required permissions

For keyless Sigstore signing (the default), the workflow needs:

permissions:
id-token: write # for OIDC token to Fulcio
contents: read # standard checkout

Add packages: write if you push container images, etc.

Inputs

Core

One of command or action-ref is required.

InputDefaultDescription
step(required)Step name for the attestation.
command(none)Shell command to run.
action-ref(none)GitHub Action to wrap (owner/repo@ref or docker://image).
action-inputs(none)JSON map of inputs to pass to the wrapped action.
action-env(none)Additional env vars for the wrapped action (KEY=VALUE per line).

Binary

InputDefaultDescription
versionmatches action tagcilock-action release version to download.
cilock-binary-url(none)Custom URL for a pre-built cilock binary.
cilock-args(none)Additional raw args passed through to CI/lock.

Attestation

InputDefaultDescription
attestationsenvironment git githubSpace-separated attestor list (the shim translates to the comma-separated form the cilock CLI expects).
outfile(none)Output file for signed envelope.
workingdir(none)Working directory.
tracefalseEnable command tracing.
hashessha256Hash algorithms.

TestifySec platform

InputDefaultDescription
platform-urlhttps://platform.testifysec.comAll service URLs are derived from this. Self-hosted customers override.

Archivista

Derived from platform-url if not explicitly set.

InputDefaultDescription
enable-archivistatrueStore attestations in Archivista.
archivista-serverderived from platform-urlArchivista server URL.

Sigstore / Fulcio

Derived from platform-url if not explicitly set.

InputDefaultDescription
enable-sigstoretrueEnable Sigstore/Fulcio signing.
fulcio-urlderived from platform-urlFulcio server URL.
fulcio-oidc-client-idsigstoreFulcio OIDC client ID.
fulcio-oidc-issuerhttps://token.actions.githubusercontent.comFulcio OIDC issuer URL.
fulcio-use-httptrueUse HTTP/REST API for Fulcio (works behind any reverse proxy).

File signer

InputDefaultDescription
key(none)Path to signing key.
certificate(none)Path to signing certificate.
intermediates(none)Comma-separated paths to intermediate certificates.

KMS

InputDefaultDescription
kms-aws-profile(none)AWS profile for KMS signing.
kms-gcp-credentials-file(none)GCP credentials file for KMS signing.
kms-ref(none)KMS key reference URI (awskms://..., gcpkms://..., azurekms://..., hashivault://...).

Vault

InputDefaultDescription
vault-url(none)HashiCorp Vault URL.
vault-token(none)HashiCorp Vault token.

Timestamps

InputDefaultDescription
timestamp-serversderived from platform-urlSpace-separated TSA URLs.

Environment filtering

InputDefaultDescription
env-add-sensitive-key(none)Comma-separated additional sensitive env var keys.
env-filter-sensitive-varsfalseFilter (remove) sensitive vars instead of obfuscating.

Material / Product

InputDefaultDescription
product-include-glob*Glob for product file inclusion.
product-exclude-glob(none)Glob for product file exclusion.

Attestor exports

InputDefaultDescription
attestor-sbom-exportfalseExport SBOM as a separate attestation.
attestor-slsa-exportfalseExport SLSA provenance as a separate attestation.

Builder

InputDefaultDescription
builder-manifest(none)Path to a rookery-builder manifest for a custom binary.
builder-preset(none)Builder preset: minimal, cicd, all.

Outputs

OutputDescription
git_oidGitOID of the stored attestation.
attestation_filePath to the attestation output.

Runtime

runs:
using: "node20"
main: "shim/index.js"

The shim/index.js Node entry point downloads the variant binary from https://github.com/aflock-ai/cilock-action/releases/{latest/download | download/<tag>} and invokes it with the constructed args.

Worked examples

The action ships example workflows in examples/github/:

  • Wrapping another GitHub Action (e.g. docker/build-push-action)
  • Wrapping a shell command
  • Multi-step pipeline with downstream verification

The full end-to-end walkthrough lives in the GitHub Actions tutorial.