GitHub Security & compliance Releases

Script injection via github.event expression in run step

Part of the Actions supply chain check · fix arrives as a guide

What it is

A run step interpolates a github.event value — a PR title, branch name, issue body, or commit message — directly into the shell script.

Why it matters

The interpolation happens before the shell sees the line, so the value becomes part of the command. A branch named with a shell metacharacter executes as code in your runner, with the job's secrets available.

How to fix it

Pass the value through an env: variable and reference it as "$VAR" inside the script, so the shell treats it as data. Never interpolate ${{ }} directly into a run block.

Run them all on your app

Connect your repo and your live services with read-only scopes. The first scan is free, and nothing changes without your approval.