chore(ci): default workflows to no permissions

Start every workflow with permissions: {} and grant the minimum
required per job, following Astral's defense-in-depth pattern so a
newly added job can't silently inherit repo read access.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Bryan Helmkamp 2026-04-18 01:30:43 -04:00
parent 72a7f2f753
commit 31fa23eb6a
No known key found for this signature in database
4 changed files with 24 additions and 8 deletions

View file

@ -9,14 +9,15 @@ concurrency:
group: nightly-release
cancel-in-progress: false
permissions:
contents: read
permissions: {}
jobs:
tag-nightly:
name: Tag nightly
runs-on: ubuntu-latest
environment: nightly
permissions:
contents: read
env:
CARGO_TERM_COLOR: always
steps:

View file

@ -5,8 +5,7 @@ on:
tags:
- "v*"
permissions:
contents: read
permissions: {}
env:
CARGO_TERM_COLOR: always
@ -17,6 +16,8 @@ jobs:
verify-spa:
name: Verify SPA assets
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
@ -32,6 +33,8 @@ jobs:
name: Compile (${{ matrix.target }})
needs: verify-spa
runs-on: ${{ matrix.runner }}
permissions:
contents: read
strategy:
fail-fast: false
matrix:

View file

@ -29,8 +29,7 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
permissions: {}
env:
CARGO_TERM_COLOR: always
@ -39,6 +38,8 @@ jobs:
fmt:
name: Format
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
@ -52,6 +53,8 @@ jobs:
clippy:
name: Clippy
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
@ -68,6 +71,8 @@ jobs:
test:
name: Test (Linux)
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
@ -83,6 +88,8 @@ jobs:
name: Test (macOS)
if: github.event_name == 'workflow_dispatch'
runs-on: macos-15
permissions:
contents: read
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:

View file

@ -29,13 +29,14 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
permissions: {}
jobs:
typecheck:
name: Typecheck
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
@ -47,6 +48,8 @@ jobs:
test:
name: Test
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
@ -58,6 +61,8 @@ jobs:
build:
name: Build
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with: