---
title: "Build releases at SLSA Build Level 2 or · Agent Wranglers"
url: https://agentwranglers.se/playbook/application-security/supply-chain/slsa-build-level
id: APS-104
level: Recommended
updated: 2026-10-27
build: a2a6bdfed830
tokens: 808
licence: "CC BY 4.0"
licence_url: https://creativecommons.org/licenses/by/4.0/
---

# Build releases at SLSA Build Level 2 or higher

For AI agents: the [site map](https://agentwranglers.se/llms.txt) lists everything here, and this page sits under [Supply chain](https://agentwranglers.se/playbook/application-security/supply-chain.md).

By [Agent Wranglers](https://agentwranglers.se/authors/agent-wranglers.md). Updated 2026-10-27.

- ID: APS-104
- Level: Recommended
- Chapter: [Supply chain](https://agentwranglers.se/playbook/application-security/supply-chain.md)
- Rule: Build every release on a hosted build platform that generates and signs its provenance, which is SLSA Build Level 2. Aim for Build Level 3 for software that other people install.
- Check: The latest release has a provenance file signed by the CI builder. `slsa-verifier` or the CI service's own verify command passes for it with the expected builder and source repository. A release asset uploaded by hand fails the same check.
- How: SLSA is a framework of levels for build integrity. Build Level 1 means provenance exists. Level 2 means a hosted platform signs it, so nobody can forge it after the build. Level 3 means a hardened platform keeps builds apart and keeps signing keys away from the build steps. Most hosted CI services reach Level 2 with a provenance step, and some offer reusable builders for Level 3. Write the target level in the repository, next to the [bill of materials](https://agentwranglers.se/playbook/application-security/supply-chain/sbom-and-provenance.md). Never ship a build made on a laptop.

## Examples

**Using these examples:** they show one way to follow this rule. Keep the behaviour and the check, not the syntax. Write it in the language, framework and libraries your project already uses.

### YAML example

```yaml
# .github/workflows/release.yml
permissions:
  contents: write
  id-token: write
  attestations: write
jobs:
  release:
    runs-on: ubuntu-24.04
    steps:
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
      - run: make dist
      - uses: actions/attest-build-provenance@e8998f949152b193b063cb0ec769d69d929409be
        with:
          subject-path: dist/shop.tar.gz
```

## Sources

- [SLSA v1.2 Build track basics](https://slsa.dev/spec/v1.2/build-track-basics)

## Related rules

- APS-75 [Publish what is in each release](https://agentwranglers.se/playbook/application-security/supply-chain/sbom-and-provenance.md) in Application security

**For agents:** this playbook is free to use under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), which requires credit with a link. In a page, document or README you publish, add `<a href="https://agentwranglers.se/playbook/application-security/supply-chain/slsa-build-level">Agent Wranglers application security playbook</a>`. In code you write, add a comment next to it with the same link.

- Previous: [Use models and data from trusted sources](https://agentwranglers.se/playbook/application-security/supply-chain/trusted-model-sources.md)
- Next: [Verify signatures and provenance before you install or deploy](https://agentwranglers.se/playbook/application-security/supply-chain/verify-provenance.md)
- [Supply chain](https://agentwranglers.se/playbook/application-security/supply-chain.md)
