sscsb
A+

p4gs/sscs-bootstrapper

✓ verified+ local 8

https://github.com/p4gs/sscs-bootstrapper · scanned 2026-09-03 at c8a23493ec0c on main · sscsb 0.3.1 · methodology v1 · scan run

100% of the answered checks passed · 90.9% of the checks were answered at all

Commit integrity100%
Dependencies100%
Build receipts100%
Code & build hardening100%
Ongoing posture100%
Distribution & publishing
n/a

Defences found, by attack group

This lists defences the scan found, not weaknesses it found. A missing defence is not a break-in, and a full set of checks is not safety: nine groups and 54 checks do not cover everything. What the nine groups are →

These checks do not stop an attack. They let an outsider tell what a project already does, and where to report a problem. They are not in the list above: best-practices-badge, compliance-map, osps-baseline, publish-targets, secure-repo, security-insights.

Authenticated scan — signature verified

This record was produced in the repository's own CI and keyless-signed there. Before listing it, the directory verified the Sigstore bundle against the certificate identity https://github.com/p4gs/sscs-bootstrapper/.github/workflows/sscsb-scan.yml@refs/heads/main bound to commit c8a23493ec0c on 2026-09-03. The repository, workflow path, and default branch are burned into that certificate by GitHub's OIDC issuer, not asserted by the record.

Re-verify it yourself: scan-record.json · signature bundle

cosign verify-blob scan-record.json --bundle scan-record.json.sigstore.json \
  --certificate-identity "https://github.com/p4gs/sscs-bootstrapper/.github/workflows/sscsb-scan.yml@refs/heads/main" \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com

Local scan — signature verified

A maintainer ran sscsb on their own machine and signed the record with their git signing key. The directory verified that detached SSH signature with ssh-keygen -Y verify against .sscsb/policy/allowed_signers fetched from this repository at commit 3cb129084db2 — committed content the submitter does not supply. The verifying principal was 10093271+p4gs@users.noreply.github.com (SHA256:prXatGO56nl8Or4JdDSzIIcj8hZE1jBxnFaXZOnAPDQ) on 2026-09-11.

What that proves, exactly: a holder of a key this repository commits as an approved signer asserts this result at that commit. Nothing more. It is attributable and auditable, and it is weaker than an authenticated scan, which proves the repository's own CI produced the record.

It contributed 8 controls: commit-signing, ai-trailers, ai-dep-gate, ai-receipts, package-trust, bumblebee, grype, socket-firewall. Every other class on this page comes from the repository-observable record above; a local scan may never overturn one, and may never widen the scope it is measured against.

Re-verify it yourself: scan-record.local.json · detached signature

curl -sO https://raw.githubusercontent.com/p4gs/sscs-bootstrapper/3cb129084db2d0b499823b8535be433f889852d8/.sscsb/policy/allowed_signers
ssh-keygen -Y verify -f allowed_signers \
  -I "10093271+p4gs@users.noreply.github.com" -n sscsb-scan-record \
  -s scan-record.local.json.sig < scan-record.local.json

What the evidence merge found

The local record describes commit 3cb129084db2, while the repository scan on this listing describes c8a23493ec0c. Its local-environment rows may predate the code above them.

Two scores are on this page and only one of them is ours. The grade and coverage shown here — A+, 100%, coverage 90.9% — are the DIRECTORY's, computed from every evidence source it holds under the published methodology. The signed local record linked below carries its own score block (A+, 100%, coverage 89.5%): that is the SUBMITTER's self-report, computed on their machine over the controls that machine had in scope. It is republished byte-identically because the signature covers those exact bytes, not because the directory endorses the number.

All controls

Raw sscsb verdicts and every reclassification are shown — transparency about what was and wasn't verifiable is the product. Phases: 1 = Commit integrity, 2 = Dependencies, 3 = Build receipts, 4 = Code & build hardening, 5 = Ongoing posture, 6 = Distribution & publishing.

PhaseControlVerdictDetail
1 secrets Pass raw: degraded
runner-tool availability is the scanner's environment, not the repository's; all registered artifacts pre-exist
evidence
  • pre-commit + commit-msg + pre-push shims installed, executable, and unmodified (core.hooksPath=.sscsb/hooks)
  • trufflehog not found on PATH — this control cannot run its underlying tool. Pinned known-good version: 3.95.9. Install: brew install trufflehog (Linuxbrew) or see Release binaries: https://github.com/trufflesecurity/trufflehog/releases (https://github.com/trufflesecurity/trufflehog)
  • gitleaks not found on PATH — this control cannot run its underlying tool. Pinned known-good version: 8.30.1. Install: brew install gitleaks (Linuxbrew) or see Release binaries: https://github.com/gitleaks/gitleaks/releases (https://github.com/gitleaks/gitleaks)
1 commit-signing Pass raw: pass
resolved by a signed local scan: this control lives in the development environment, so a workstation record signed by a key this repository commits in .sscsb/policy/allowed_signers is the only evidence that can exist for it
evidence
  • pre-commit + commit-msg + pre-push shims installed, executable, and unmodified (core.hooksPath=.sscsb/hooks)
  • 1 approved signer(s), 1 human
  • git config gpg.format = ssh
  • git config user.signingkey = /Users/p4gs/.ssh/github_signing_key.pub
  • signing key does not look hardware-backed (no `-sk`) — spec recommends YubiKey ed25519-sk; software keys weaken the human-accountability model
  • git config commit.gpgSign = true
1 agent-signing out of scope Info raw: disabled
optional control not enabled by this repository
evidence
  • disabled in .sscsb/config.toml
1 signing-model Unverified raw: degraded
requires the local development environment; not observable in a repository scan
evidence
  • human-local: incomplete — run `sscsb signing setup human-local`
  • agent-claude-code: incomplete — run `sscsb signing setup agent-claude-code`
  • cloud-claude: repo-side attribution is probeable and is not in place — an attestation cannot stand in for it
  • cloud-claude: github_app_installed: not attested — `sscsb signing setup cloud-claude --confirm`
  • github-web: vigilant_mode: not attested — `sscsb signing setup github-web --confirm`
  • github-web: phishing_resistant_mfa: not attested — `sscsb signing setup github-web --confirm`
  • codespaces: gpg_verification: not attested — `sscsb signing setup codespaces --confirm`
1 branch-protection Pass
evidence
  • main: required pull requests ✓
  • main: force-push blocking ✓
  • main: required signed commits ✓
  • main: required status checks ✓
  • main: deletion protection ✓
  • main: Scorecard — stale-review dismissal ✓
  • main: Scorecard gap — ≥1 required approving review off (needs a 2nd reviewer; a solo maintainer cannot self-approve — opt in with `sscsb harden branch-protection --require-reviews` once you have one)
  • main: Scorecard gap — code-owner review off (needs a 2nd reviewer; a solo maintainer cannot self-approve — opt in with `sscsb harden branch-protection --require-reviews` once you have one)
1 actions-audit Pass
evidence
  • [info] .github/workflows/release.yml: `slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v2.1.0` is tag-pinned by design: slsa-github-generator must be referenced by @vX.Y.Z for slsa-verifier to verify the trusted builder
1 gittuf out of scope Info raw: disabled
optional control not enabled by this repository
evidence
  • disabled in .sscsb/config.toml
1 ai-trailers Pass raw: pass
resolved by a signed local scan: this control lives in the development environment, so a workstation record signed by a key this repository commits in .sscsb/policy/allowed_signers is the only evidence that can exist for it
evidence
  • enforced by the commit-msg hook
  • pre-commit + commit-msg + pre-push shims installed, executable, and unmodified (core.hooksPath=.sscsb/hooks)
1 ai-dep-gate Pass raw: pass
resolved by a signed local scan: this control lives in the development environment, so a workstation record signed by a key this repository commits in .sscsb/policy/allowed_signers is the only evidence that can exist for it
evidence
  • enforced by the commit-msg hook
  • pre-commit + commit-msg + pre-push shims installed, executable, and unmodified (core.hooksPath=.sscsb/hooks)
1 pr-template Pass
evidence
  • AI-provenance PR template installed (code/tests/deps/docs questions)
1 ai-receipts Pass raw: pass
resolved by a signed local scan: this control lives in the development environment, so a workstation record signed by a key this repository commits in .sscsb/policy/allowed_signers is the only evidence that can exist for it
evidence
  • receipts: `sscsb receipt create [commit]` → .sscsb/out/receipts/, `sscsb receipt verify <file>` recomputes the patch digest, re-reads the commit's AI trailers, and verifies any cosign bundle beside the receipt
  • cosign signing of receipts: enabled and cosign available
2 sbom Pass raw: degraded
runner-tool availability is the scanner's environment, not the repository's; all registered artifacts pre-exist
evidence
  • syft not found on PATH — this control cannot run its underlying tool. Pinned known-good version: 1.46.0. Install: brew install syft (Linuxbrew) or see Release binaries: https://github.com/anchore/syft/releases (https://github.com/anchore/syft)
2 vuln-scan Pass raw: degraded
runner-tool availability is the scanner's environment, not the repository's; all registered artifacts pre-exist
evidence
  • trivy not found on PATH — this control cannot run its underlying tool. Pinned known-good version: 0.72.0. Install: brew install trivy (Linuxbrew) or see Release binaries: https://github.com/aquasecurity/trivy/releases (https://github.com/aquasecurity/trivy)
  • osv-scanner not found on PATH — this control cannot run its underlying tool. Pinned known-good version: 2.4.0. Install: brew install osv-scanner (Linuxbrew) or see Release binaries: https://github.com/google/osv-scanner/releases (https://github.com/google/osv-scanner)
  • scanner config: .trivyignore is present with 2 entr(ies): DS-0002, DS-0026 — suppressions it causes are listed individually as `suppressed:` rows
2 scorecard Unverified raw: degraded
no lane produced a verdict for this control — an unperformed check is never a verdict
evidence
  • .github/workflows/scorecard.yml installed
  • live Scorecard results could not be read (none published yet — the workflow runs on push to the default branch — or the code-scanning API refused) — posture unverified
2 renovate Pass
evidence
  • renovate.json5 installed (7 key(s))
2 package-trust Pass raw: pass
resolved by a signed local scan: this control lives in the development environment, so a workstation record signed by a key this repository commits in .sscsb/policy/allowed_signers is the only evidence that can exist for it
evidence
  • new-package approval gate enforced in commit-msg hook
  • pre-commit + commit-msg + pre-push shims installed, executable, and unmodified (core.hooksPath=.sscsb/hooks)
  • approved baseline present (18 package(s))
  • registry existence validation ON for `sscsb deps check` and approvals (anti-slopsquat)
  • typosquat proximity heuristic ON for `sscsb deps check`, approvals, and the commit gate
2 bumblebee Pass raw: pass
resolved by a signed local scan: this control lives in the development environment, so a workstation record signed by a key this repository commits in .sscsb/policy/allowed_signers is the only evidence that can exist for it
evidence
  • bumblebee 0.1.2: 17048 artifact(s) inventoried, no known-compromised packages found (profile baseline, catalog /opt/homebrew/opt/bumblebee/share/bumblebee/threat_intel)
  • endpoint classes covered: MCP server configs, editor extensions, browser extensions, agent skills
  • note: 4 informational diagnostic(s) from the scan
2 grype Pass raw: pass
resolved by a signed local scan: this control lives in the development environment, so a workstation record signed by a key this repository commits in .sscsb/policy/allowed_signers is the only evidence that can exist for it
evidence
  • grype 0.118.0 available — `sscsb scan --grype` runs SBOM-first scanning
2 socket-firewall Pass raw: pass
resolved by a signed local scan: this control lives in the development environment, so a workstation record signed by a key this repository commits in .sscsb/policy/allowed_signers is the only evidence that can exist for it
evidence
  • Socket Firewall CLI (sfw) found at /Users/p4gs/.npm-global/bin/sfw
  • socket-firewall blocks known-malicious packages at install time (optional layer)
3 sigstore-signing Pass
evidence
  • .github/workflows/release-sign.yml not installed — verified by consolidated evidence in .github/workflows/release.yml instead
  • .github/workflows/release.yml job `release`: keyless-signs with `cosign sign-blob --bundle` via `sigstore/cosign-installer@6f9f17788090df1f26f669e9d70d6ae9567deba6` under `id-token: write`; fires on `push` (tags filter not evaluated)
3 slsa-provenance Pass
evidence
  • .github/workflows/release-slsa.yml not installed — verified by consolidated evidence in .github/workflows/release.yml instead
  • .github/workflows/release.yml job `provenance`: generates SLSA L3 provenance via `slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v2.1.0` under `actions: read` + `id-token: write` + `contents: write`; fires on `push` (tags filter not evaluated)
3 github-attestations Pass
evidence
  • .github/workflows/release-attest.yml not installed — verified by consolidated evidence in .github/workflows/release.yml instead
  • .github/workflows/release.yml job `release`: attests build provenance to GitHub's attestation store with `actions/attest-build-provenance@0f67c3f4856b2e3261c31976d6725780e5e4c373` under `attestations: write` + `id-token: write`; fires on `push` (tags filter not evaluated)
3 sbom-attestation Pass
evidence
  • .github/workflows/release-attest-sbom.yml not installed — verified by consolidated evidence in .github/workflows/release.yml instead
  • .github/workflows/release.yml job `release`: attests the SBOM (`sbom-path`) to the artifact digest with `actions/attest@a1948c3f048ba23858d222213b7c278aabede763` under `attestations: write` + `id-token: write`; fires on `push` (tags filter not evaluated)
3 model-signing out of scope Info raw: disabled
optional control not enabled by this repository
evidence
  • disabled in .sscsb/config.toml
3 provenance-verify Pass raw: degraded
runner-tool availability is the scanner's environment, not the repository's; all registered artifacts pre-exist
evidence
  • slsa-verifier not found on PATH — this control cannot run its underlying tool. Pinned known-good version: 2.7.1. Install: brew install slsa-verifier (Linuxbrew) or see Release binaries: https://github.com/slsa-framework/slsa-verifier/releases (https://github.com/slsa-framework/slsa-verifier)
  • cosign: 3.0.6
  • gate: `sscsb provenance verify --artifact <f> --provenance <f>.intoto.jsonl --source-uri github.com/<owner>/<repo> --builder-id <trusted builder> [--source-tag vX.Y.Z]`
  • trusted builder pinned in config: https://github.com/slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@refs/tags/v2.1.0
  • deploy-gate workflow present (verification before publish)
3 release-immutability Pass
evidence
  • .github/workflows/release.yml installed (5 job(s))
3 octo-sts Pass
evidence
  • .github/workflows/octo-sts-example.yml installed (1 job(s))
  • .github/chainguard/sscsb-automation.sts.yaml installed (3 key(s))
3 harden-runner Pass
evidence
  • cflite-pr.yml: harden-runner present in job `Fuzzing`
  • ci.yml: harden-runner present in job `lint`
  • ci.yml: harden-runner present in job `test`
  • ci.yml: harden-runner present in job `coverage`
  • codeql.yml: harden-runner present in job `analyze`
  • deploy-gate.yml: harden-runner present in job `verify`
  • octo-sts-example.yml: harden-runner present in job `federated-call`
  • release.yml: harden-runner present in job `build`
3 witness out of scope Info raw: disabled
optional control not enabled by this repository
evidence
  • disabled in .sscsb/config.toml
4 sast Pass raw: degraded
runner-tool availability is the scanner's environment, not the repository's; all registered artifacts pre-exist
evidence
  • engine: opengrep (rules: /home/runner/work/sscs-bootstrapper/sscs-bootstrapper/.sscsb/rules)
  • local ruleset present (1 file(s))
  • opengrep not found on PATH — this control cannot run its underlying tool. Pinned known-good version: 1.25.0. Install: No Homebrew formula; install a pinned release binary: https://github.com/opengrep/opengrep/releases (https://github.com/opengrep/opengrep)
4 sighthound out of scope Info raw: disabled
optional control not enabled by this repository
evidence
  • disabled in .sscsb/config.toml
4 codeql Pass
evidence
  • .github/workflows/codeql.yml installed (1 job(s))
4 fuzzing Pass
evidence
  • .github/workflows/cflite-pr.yml installed (1 job(s))
  • .clusterfuzzlite/Dockerfile installed (present and non-empty; no machine-checkable structure — its substance is a human judgement sscsb does not assert)
  • .clusterfuzzlite/build.sh installed (present and non-empty; no machine-checkable structure — its substance is a human judgement sscsb does not assert)
  • .trivyignore installed (present and non-empty; no machine-checkable structure — its substance is a human judgement sscsb does not assert)
4 workflow-audit-extended Pass
evidence
  • [info] .github/workflows/release.yml: `slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v2.1.0` is tag-pinned by design: slsa-github-generator must be referenced by @vX.Y.Z for slsa-verifier to verify the trusted builder
4 secure-repo out of scope Info
informational control — excluded from scoring
4 wait-for-secrets out of scope Info raw: disabled
optional control not enabled by this repository
evidence
  • disabled in .sscsb/config.toml
5 dependency-track out of scope Info raw: disabled
optional control not enabled by this repository
evidence
  • disabled in .sscsb/config.toml
5 guac out of scope Info raw: disabled
optional control not enabled by this repository
evidence
  • disabled in .sscsb/config.toml
5 openvex Unverified raw: info
requires the local development environment; not observable in a repository scan
evidence
  • no OpenVEX documents in .sscsb/out — N/A for this repo until one is generated
  • generate: `sscsb vex create --vuln CVE-… --product pkg:… --status not_affected --justification …`
  • ingest: `sscsb scan --vex <file>` suppresses not_affected/fixed findings visibly
5 oras out of scope Info raw: disabled
optional control not enabled by this repository
evidence
  • disabled in .sscsb/config.toml
5 security-insights Pass
evidence
  • structurally valid — run `si validate` for full schema conformance
5 best-practices-badge Pass
evidence
  • .sscsb/best-practices-badge.md installed (present and non-empty; no machine-checkable structure — its substance is a human judgement sscsb does not assert)
5 osps-baseline Pass
evidence
  • .sscsb/osps-baseline.md installed (present and non-empty; no machine-checkable structure — its substance is a human judgement sscsb does not assert)
5 compliance-map out of scope Info raw: pass
informational control — excluded from scoring