Skip to content

Grant the provenance job contents: write so the release workflow can start - #36

Merged
repsecure merged 1 commit into
mainfrom
agent/4.2c-release-permissions
Aug 5, 2026
Merged

Grant the provenance job contents: write so the release workflow can start#36
repsecure merged 1 commit into
mainfrom
agent/4.2c-release-permissions

Conversation

@repsecure

Copy link
Copy Markdown
Owner

The release workflow could not start at all. Two workflow_dispatch dry runs returned startup_failure with zero jobs created.

Cause: the SLSA generator declares an upload-assets job requiring contents: write. GitHub validates a called workflow's DECLARED permissions when the run is created, before any if: guard is evaluated. The caller granted contents: read on the reasoning that upload-assets: false means that job never runs. That reasoning is correct about runtime and irrelevant to startup.

Found by dispatching the workflow rather than reading it. A release pipeline that has never been executed is not a release pipeline.

upload-assets is still false, so the generator never attaches anything, and the release job remains the only thing that touches release assets.

The SLSA generator declares an upload-assets job requiring contents: write.
GitHub validates a called workflow's declared permissions when the run is
created, before any if: guard is evaluated, so granting contents: read made
the entire workflow fail with startup_failure and no job ever ran.

upload-assets is false, so that job still never executes and the release job
remains the only thing that attaches assets. The previous comment reasoned
correctly about runtime and drew the wrong conclusion about startup.

Signed-off-by: reesebuilt <126643625+reesepj@users.noreply.github.com>
@repsecure
repsecure merged commit 3f81cb0 into main Aug 5, 2026
10 checks passed
@repsecure
repsecure deleted the agent/4.2c-release-permissions branch August 5, 2026 07:42
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.

1 participant