Skip to content

Commit d628baa

Browse files
ci: apply least-privilege permissions to all workflows
Move write permissions from workflow-level to job-level to satisfy OpenSSF Scorecard Token-Permissions check. This follows the principle of least privilege - workflows default to read-all, and only specific jobs that need write access declare it. Changed workflows: - claude.yml: id-token: write moved to job level - claude-code-review.yml: consistent read-all at workflow level - codeql.yml: security-events: write moved to job level - labeler.yml: pull-requests: write moved to job level - pr-tests.yml: pull-requests: write, statuses: write moved to job level - release.yml: contents: write already at job level, workflow to read-all - stale.yml: issues: write, pull-requests: write moved to job level - unity-tests.yml: checks: write moved to job level Signed-off-by: Jason Xu <jasonxudeveloper@gmail.com> Signed-off-by: JasonXuDeveloper - 傑 <jason@xgamedev.net>
1 parent 7117f00 commit d628baa

8 files changed

Lines changed: 18 additions & 27 deletions

File tree

.github/workflows/claude-code-review.yml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,7 @@ on:
1010
# - "src/**/*.js"
1111
# - "src/**/*.jsx"
1212

13-
permissions:
14-
contents: read
15-
pull-requests: read
16-
issues: read
13+
permissions: read-all
1714

1815
jobs:
1916
claude-review:

.github/workflows/claude.yml

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,7 @@ on:
1010
pull_request_review:
1111
types: [submitted]
1212

13-
permissions:
14-
contents: read
15-
pull-requests: read
16-
issues: read
17-
id-token: write
13+
permissions: read-all
1814

1915
jobs:
2016
claude:

.github/workflows/codeql.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@ on:
1313
- cron: '0 0 * * 0'
1414
workflow_dispatch:
1515

16-
permissions:
17-
contents: read
18-
security-events: write
16+
permissions: read-all
1917

2018
jobs:
2119
changes:
2220
name: Detect Changes
2321
runs-on: ubuntu-latest
22+
permissions:
23+
contents: read
2424
# Only run path detection for push/pull_request events
2525
if: github.event_name == 'push' || github.event_name == 'pull_request'
2626
outputs:

.github/workflows/labeler.yml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@ on:
44
pull_request_target:
55
types: [opened, synchronize, reopened]
66

7-
permissions:
8-
contents: read
9-
pull-requests: write
7+
permissions: read-all
108

119
jobs:
1210
label:
1311
runs-on: ubuntu-latest
12+
permissions:
13+
contents: read
14+
pull-requests: write
1415
steps:
1516
- name: Apply labels based on changed files
1617
uses: actions/labeler@v5

.github/workflows/pr-tests.yml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,14 @@ concurrency:
1212
group: pr-tests-${{ github.event.pull_request.number }}
1313
cancel-in-progress: true
1414

15-
permissions:
16-
contents: read
17-
pull-requests: write
18-
statuses: write
15+
permissions: read-all
1916

2017
jobs:
2118
changes:
2219
name: Detect Changes
2320
runs-on: ubuntu-latest
21+
permissions:
22+
contents: read
2423
outputs:
2524
should_test: ${{ steps.filter.outputs.src }}
2625
steps:

.github/workflows/release.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,7 @@ on:
2626
required: false
2727
type: string
2828

29-
permissions:
30-
contents: write
29+
permissions: read-all
3130

3231
jobs:
3332
validate:

.github/workflows/stale.yml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,14 @@ on:
66
- cron: '0 0 * * *'
77
workflow_dispatch:
88

9-
permissions:
10-
issues: write
11-
pull-requests: write
9+
permissions: read-all
1210

1311
jobs:
1412
stale:
1513
runs-on: ubuntu-latest
14+
permissions:
15+
issues: write
16+
pull-requests: write
1617
steps:
1718
- name: Mark stale issues and PRs
1819
uses: actions/stale@v9

.github/workflows/unity-tests.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,7 @@ on:
2323
description: 'Test results summary'
2424
value: ${{ jobs.test.outputs.results }}
2525

26-
permissions:
27-
contents: read
28-
checks: write
26+
permissions: read-all
2927

3028
jobs:
3129
test:

0 commit comments

Comments
 (0)