Skip to content

ci: don't persist GITHUB_TOKEN in checkout (SEC-843) - #397

Merged
Matt Sutkus (msuitcase) merged 4 commits into
masterfrom
sec-842/persist-credentials
Nov 10, 2026
Merged

Matt Sutkus (msuitcase) merged 4 commits into
masterfrom
sec-842/persist-credentials

Conversation

@msuitcase

Copy link
Copy Markdown
Contributor

What

Adds persist-credentials: false to every actions/checkout step in ci.yml.

Why

By default, actions/checkout writes the job's GITHUB_TOKEN into .git/config and leaves it there for the rest of the job. Every later step can read it: composer install, phpunit, and third-party actions. A compromised dependency or action could then use the token to push code or tamper with releases. Nothing in this workflow needs git credentials after checkout, so the token doesn't need to be on disk.

peaceiris/actions-gh-pages is unaffected. It authenticates with its own github_token input, not with the persisted git config.

Stack

  1. This PR: persist-credentials: false
  2. Next PR (based on this branch): least-privilege permissions:

Part of SEC-842 (org-wide rollout).

actions/checkout writes the job token into .git/config by default, where
any later step (composer install, phpunit, third-party actions) can read
it. Nothing in this workflow needs git credentials after checkout; the
gh-pages deploy authenticates with its own github_token input.

Refs SEC-843
@msuitcase
Matt Sutkus (msuitcase) merged commit bd2419e into master Nov 10, 2026
9 checks passed
@msuitcase
Matt Sutkus (msuitcase) deleted the sec-842/persist-credentials branch November 10, 2026 00:50
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.

2 participants