Skip to content

Add explicit GITHUB_TOKEN permissions to workflow callers - #70

Merged
dduugg merged 1 commit into
mainfrom
fix-code-scanning-alerts
Aug 17, 2026
Merged

Add explicit GITHUB_TOKEN permissions to workflow callers#70
dduugg merged 1 commit into
mainfrom
fix-code-scanning-alerts

Conversation

@dduugg

@dduugg dduugg commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

Resolves the three open actions/missing-workflow-permissions CodeQL
alerts (#1, #3, #4). Each is a single-job caller of a reusable workflow in
rubyatscale/shared-config, so the permissions block goes job-level, right
above uses:, matching the query_packwerk precedent. A caller's block is
the ceiling for the called workflow, so each grant covers exactly what the
callee does and nothing more.

  • cd.yml -> contents: write. shared-config's cd.yml checks out with
    persisted credentials and runs discourse/publish-rubygems-action, which
    does rake release (a raw git push of the version tag), then
    gh release create. Anything less breaks the gem release.
  • stale.yml -> issues: write + pull-requests: write. shared-config's
    stale.yml runs actions/stale, which comments on and closes both stale
    issues and stale PRs. The implicit read of repo contents still works
    without naming contents.
  • triage.yml -> issues: write. shared-config's triage.yml only runs
    gh issue edit --add-label triage.

ci.yml already declares workflow-level contents: read and codeql.yml
already declares its own block, so both are left untouched.

Alerts resolved

  • #4 actions/missing-workflow-permissions (medium) — .github/workflows/cd.yml:11
  • #3 actions/missing-workflow-permissions (medium) — .github/workflows/stale.yml:8
  • #1 actions/missing-workflow-permissions (medium) — .github/workflows/triage.yml:9

Verification

  • Every job in every flagged workflow now has an effective permissions: block (cross-checked by parsing the YAML against the alert list).
  • actionlint output is byte-identical to main — no new findings introduced.
  • codeql.yml untouched.

Resolves the three open `actions/missing-workflow-permissions` CodeQL
alerts (#1, #3, #4). Each is a single-job caller of a reusable workflow in
rubyatscale/shared-config, so the permissions block goes job-level, right
above `uses:`, matching the query_packwerk precedent. A caller's block is
the ceiling for the called workflow, so each grant covers exactly what the
callee does and nothing more.

- cd.yml -> contents: write. shared-config's cd.yml checks out with
  persisted credentials and runs discourse/publish-rubygems-action, which
  does `rake release` (a raw git push of the version tag), then
  `gh release create`. Anything less breaks the gem release.
- stale.yml -> issues: write + pull-requests: write. shared-config's
  stale.yml runs actions/stale, which comments on and closes both stale
  issues and stale PRs. The implicit read of repo contents still works
  without naming contents.
- triage.yml -> issues: write. shared-config's triage.yml only runs
  `gh issue edit --add-label triage`.

ci.yml already declares workflow-level `contents: read` and codeql.yml
already declares its own block, so both are left untouched.
@dduugg
dduugg requested a review from a team as a code owner August 17, 2026 19:34
@github-project-automation github-project-automation Bot moved this to Triage in Modularity Aug 17, 2026
@dduugg
dduugg merged commit 0b63162 into main Aug 17, 2026
10 checks passed
@dduugg
dduugg deleted the fix-code-scanning-alerts branch August 17, 2026 19:40
@github-project-automation github-project-automation Bot moved this from Triage to Done in Modularity Aug 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant