Skip to content

ci: declare empty permissions on release workflow#643

Merged
bartlomieju merged 2 commits into
denoland:mainfrom
arpitjain099:chore/release-permissions
Jun 8, 2026
Merged

ci: declare empty permissions on release workflow#643
bartlomieju merged 2 commits into
denoland:mainfrom
arpitjain099:chore/release-permissions

Conversation

@arpitjain099

@arpitjain099 arpitjain099 commented May 14, 2026

Copy link
Copy Markdown
Contributor

Pins the release job to permissions: {}. Every write path authenticates through DENOBOT_PAT: actions/checkout pulls with that token, and the tag-and-release step explicitly overrides GITHUB_TOKEN to ${{ secrets.DENOBOT_PAT }} before invoking @deno/rust-automation/tasks/publish-release. The workflow's own GITHUB_TOKEN is never used.

Defense-in-depth angle is CVE-2025-30066: a compromised third-party action (denoland/setup-deno, dsherret/rust-toolchain-file) runs inside the job context and exfiltrates the workflow token via logs. With permissions: {}, the token has nothing to leak; publish authority lives only in DENOBOT_PAT.

Matches the per-job contents: read + id-token: write blocks already in ci.yml and publish.yml. YAML validated locally with yaml.safe_load.

The release job authenticates every write path through DENOBOT_PAT:
the actions/checkout step pulls with that token, and the tag-and-
release step explicitly sets GITHUB_TOKEN=${{ secrets.DENOBOT_PAT }}
when invoking @deno/rust-automation publish-release. The workflow's
own GITHUB_TOKEN is unused.

permissions: {} at the job level documents that and matches the
per-job style used by ci.yml and publish.yml (contents:read +
id-token:write).

Signed-off-by: Arpit Jain <arpitjain099@gmail.com>
@CLAassistant

CLAassistant commented May 14, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@bartlomieju bartlomieju merged commit 81c50aa into denoland:main Jun 8, 2026
17 checks passed
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.

3 participants