ci: declare least-privilege workflow permissions

Jobs without a permissions block inherit the repository default token
scope. Scopes are derived from what each workflow actually does with
the token:

- the fourteen package build and test workflows plus the code linter
  never write through the token, they drop to contents: read.
- lint-pr-title.yml gets pull-requests: read, which is what the
  semantic PR title action documents needing.
- comment-icon-preview.yml runs on workflow_run, a privileged trigger
  processing artifacts produced by fork PRs, so an exact scope matters
  most there: actions: read to download the artifact, issues: write
  plus pull-requests: write to post the preview comment, contents:
  read for the rest.

The workflows that already declared scoped permissions (labeler,
stale, linting-icons, release and friends) are untouched.
This commit is contained in:
Thibaud-Vdb
2026-08-05 11:06:37 +02:00
parent 8298424ae0
commit 79d4dd48a7
16 changed files with 54 additions and 0 deletions
+3
View File
@@ -7,6 +7,9 @@ on:
- tools/build-icons/**
- pnpm-lock.yaml
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
@@ -6,6 +6,14 @@ on:
types:
- completed
permissions:
contents: read
# Download the pr_number artifact from the triggering run.
actions: read
# Create or update the icon preview comment on the PR.
issues: write
pull-requests: write
jobs:
upload:
runs-on: ubuntu-latest
+3
View File
@@ -9,6 +9,9 @@ on:
- tools/rollup-plugins/**
- pnpm-lock.yaml
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
+3
View File
@@ -3,6 +3,9 @@ name: Linting PR code
on:
pull_request:
permissions:
contents: read
jobs:
lint-code:
runs-on: ubuntu-latest
+4
View File
@@ -7,6 +7,10 @@ on:
- edited
- reopened
permissions:
# The semantic PR action only reads the pull request title.
pull-requests: read
jobs:
lint-pr-title:
name: PR Title Lint
+3
View File
@@ -11,6 +11,9 @@ on:
- tools/build-icons/**
- pnpm-lock.yaml
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
+3
View File
@@ -9,6 +9,9 @@ on:
- tools/build-font/**
- pnpm-lock.yaml
permissions:
contents: read
jobs:
lucide-font:
runs-on: ubuntu-latest
+3
View File
@@ -12,6 +12,9 @@ on:
- tools/rollup-plugins/**
- pnpm-lock.yaml
permissions:
contents: read
jobs:
lucide-preact:
runs-on: ubuntu-latest
@@ -12,6 +12,9 @@ on:
- tools/rollup-plugins/**
- pnpm-lock.yaml
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
+3
View File
@@ -13,6 +13,9 @@ on:
- scripts/generateNextJSAliases.mjs
- pnpm-lock.yaml
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
+3
View File
@@ -9,6 +9,9 @@ on:
- packages/shared/**
- pnpm-lock.yaml
permissions:
contents: read
jobs:
test:
runs-on: ubuntu-latest
+3
View File
@@ -12,6 +12,9 @@ on:
- tools/rollup-plugins/**
- pnpm-lock.yaml
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
+3
View File
@@ -7,6 +7,9 @@ on:
- tools/build-icons/**
- pnpm-lock.yaml
permissions:
contents: read
jobs:
lucide-static:
runs-on: ubuntu-latest
+3
View File
@@ -12,6 +12,9 @@ on:
- tools/rollup-plugins/**
- pnpm-lock.yaml
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
+3
View File
@@ -12,6 +12,9 @@ on:
- tools/rollup-plugins/**
- pnpm-lock.yaml
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
+3
View File
@@ -11,6 +11,9 @@ on:
- tools/rollup-plugins/**
- pnpm-lock.yaml
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest