Skip to content

ci(release): grant SLSA provenance permissions#65

Merged
CybotTM merged 2 commits into
mainfrom
ci/slsa-provenance-permissions
Apr 30, 2026
Merged

ci(release): grant SLSA provenance permissions#65
CybotTM merged 2 commits into
mainfrom
ci/slsa-provenance-permissions

Conversation

@CybotTM

@CybotTM CybotTM commented Apr 30, 2026

Copy link
Copy Markdown
Member

Summary

Grants the two permissions the upstream reusable release workflow at netresearch/skill-repo-skill needs in order to publish a SLSA build-provenance attestation for every release archive.

     permissions:
-      contents: write
-      pull-requests: write
+      contents: write          # release upload
+      id-token: write          # OIDC for sigstore (required by the attest job)
+      attestations: write      # GitHub native attestation API (required by the attest job)

Why

This is part of an org-wide rollout flipping SLSA build-provenance attestations to always on in the reusable release workflow. The first cut shipped the feature behind an opt-in input (with: attest: true); on review, opt-in was the wrong call — every release artefact in the org should have provenance, and the cost of "always on" is a tiny one-time permission grant per consumer (this PR).

Sequencing

This PR lands first. After every consumer of netresearch/skill-repo-skill/.github/workflows/release.yml@main has merged the equivalent change, the upstream will drop the opt-in input and the if: gate so the attest job always runs. No window of broken releases either way: callers that already grant the permissions are forward-compatible.

Test plan

  • CI green on this PR
  • After upstream removes the opt-in, the next release here will produce SLSA attestations verifiable via gh attestation verify <archive> --owner netresearch

Required by netresearch/skill-repo-skill/.github/workflows/release.yml,
which generates SLSA build-provenance attestations for release archives
via actions/attest-build-provenance. The reusable workflow's attest job
needs id-token: write (OIDC for sigstore) and attestations: write
(GitHub native attestation API) on the calling job.

Also drops pull-requests: write — the reusable workflow doesn't touch
the pulls API; it was over-privileging.
Copilot AI review requested due to automatic review settings April 30, 2026 07:45
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Note

Gemini is unable to generate a review for this pull request due to the file types involved not being currently supported.

@github-actions

github-actions Bot commented Apr 30, 2026

Copy link
Copy Markdown
Contributor

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the repository’s release workflow permissions so the upstream reusable release workflow (netresearch/skill-repo-skill/.github/workflows/release.yml@main) can publish SLSA build-provenance attestations for release artifacts.

Changes:

  • Add id-token: write permission to enable OIDC (Sigstore) usage during release attestation.
  • Add attestations: write permission to allow publishing GitHub-native attestations.
  • Remove pull-requests: write from the release job permissions.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@CybotTM CybotTM merged commit 9f2cd88 into main Apr 30, 2026
11 checks passed
@CybotTM CybotTM deleted the ci/slsa-provenance-permissions branch April 30, 2026 08:05
@CybotTM CybotTM mentioned this pull request May 15, 2026
CybotTM added a commit that referenced this pull request May 15, 2026
## Release v2.14.0

Minor release. `.claude-plugin/plugin.json` and
`skills/github-project/SKILL.md` frontmatter `metadata.version` were
already synced to `2.14.0` on `main` via
[#74](#74) —
this PR is the empty release marker that closes the v2.13.1 → v2.14.0
window and triggers the signed-tag release.

### Highlights since v2.13.1

- **`agentic-workflows` reference** documenting `gh-aw` and `awf`
workflow-as-prompt tooling for autonomous GitHub Actions — new patterns
for running AI agents on PRs/issues without bespoke wiring
([#75](#75)).
- **AI reviewer pushback patterns** — handling Copilot/Sourcery review
comments that disagree with the codebase intent, including when to defer
and when to push back
([#66](#66),
[#74](#74)).
- **PR-merge / branch-protection / CodeQL gotchas** documented, plus
auto-detection of allowed merge strategy in the `--delete-branch`
snippet so the recipe doesn't break on repos with merge-commit-only
policies
([#69](#69),
[#71](#71),
[#72](#72)).
- **GraphQL `Repository.mergeQueue`** for queue detection — replaces a
brittle REST probe
([#70](#70)).
- **Assessment checkpoints overhaul**: new GH-34/GH-35/GH-36,
follow_uses delegation for CodeQL/Scorecard, org_provides for
community-health files, broader licence/Dependabot/workflow targets,
plus reusable-workflow-pitfalls reference. Multiple false-positive
findings demoted to `info` to reduce assessment noise
([#56](#56),
[#57](#57),
[#58](#58),
[#59](#59),
[#60](#60),
[#61](#61),
[#62](#62),
[#63](#63),
[#64](#64),
[#65](#65),
[#73](#73)).
- **npm distribution** — the skill now also ships via
`@netresearch/agent-skill-coordinator`
([#54](#54),
[#55](#55)).
- **Release pipeline hardening** — dropped the deprecated `with: bump:`
block + `workflow_dispatch.bump` input so releases happen exclusively
via locally-signed tags, plus SLSA-provenance permissions on the caller
([#52](#52),
[#53](#53)).

### Release plan

After merge: tag main with a signed annotated tag, push, the
`skill-repo-skill` reusable workflow publishes archives + SHA256SUMS
with cosign + SLSA attestation, then narrative notes get applied via `gh
release edit ... --notes-file`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants