You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
⚠️Compilation Failed Today: The pre-compile step failed with ✗ unknown flag: --runner-guard. This flag was introduced by PR #25281 but is not yet available in the deployed gh-aw CLI version. Docker was also unavailable in this environment. This report is based on the last successful scan (2026-04-04) plus all available historical trend data.
Tools Used: zizmor, poutine, actionlint (runner-guard: not yet deployed)
Secrets used directly in steps instead of env vars
unpinned-uses
High
2,182
Action refs not pinned to SHA (all workflows via setup action)
template-injection
High
214
Expression injection in run: steps
obfuscation
Low
44
Base64-encoded data in workflow steps
artipacked
Medium
6
Artifact poisoning risk via upload-artifact
github-env
High
2
Dangerous use of GITHUB_ENV file
secrets-inherit
Medium
2
Secrets inherited by called workflows
Poutine Supply Chain Findings
Issue Type
Severity
Count
Description
untrusted_checkout_exec
Error
34
Exec from untrusted code changes
default_permissions_on_risky_events
Warning
14
Risky events with default permissions
github_action_from_unverified_creator_used
Warning
9
Actions from unverified creators
unverified_script_exec
Warning
4
Unverified script execution
unpinnable_action
Warning
2
Actions that cannot be pinned
pr_runs_on_self_hosted
Warning
2
PRs running on self-hosted runners
Actionlint Linting Issues
Issue Type
Count
Description
shellcheck SC2086
4,680
Unquoted variables — globbing/word splitting risk
shellcheck SC2129
176
Multiple redirects should use { } grouping
permissions
85
Unknown copilot-requests permission scope
runner-label
12
Invalid runner label references
expression
13
Undefined properties in step outputs
Runner-Guard Taint Analysis Findings
Status: Not available — --runner-guard flag was introduced in PR #25281 but is not yet recognized by the deployed gh-aw CLI version (✗ unknown flag: --runner-guard). No runner-guard data to report; no issues created.
Top Priority Issues
1. Unpinned Action References (affects ALL workflows)
Tool: zizmor
Count: 2,182 findings across all 181 workflows
Severity: High
Root Cause: All workflows use github/gh-aw-actions/setup@v0.65.6 (semver tag, not SHA)
Impact: Mutable tag can be silently redirected to malicious code — supply chain attack surface
Reference: (docs.zizmor.sh/redacted)
2. Template Injection in Run Steps
Tool: zizmor
Count: 214 findings (24 High, rest informational) across ~47 workflows
Fix Suggestion for Template Injection (Highest-Impact Security Issue)
Issue: GitHub Actions template expressions used directly in run: steps Severity: High Affected Workflows: ~47 workflows with 214 total findings
Prompt to Copilot Agent:
You are fixing a High-severity security vulnerability (template-injection) identified by zizmor in GitHub Actions workflows in the `github/gh-aw` repository.
**Vulnerability**: template-injection — Expression Injection via `${{ }}` in `run:` steps
**Rule**: `template-injection` — (docs.zizmor.sh/redacted)
**Severity**: High
### What's Wrong
GitHub Actions allows `${{ expression }}` syntax inside `run:` scripts. When user-controlled values
(e.g. `github.event.issue.title`, `github.event.comment.body`, `github.head_ref`) are interpolated
directly into shell scripts, an attacker can inject arbitrary shell commands by crafting a malicious
issue title, comment, or branch name.
### Required Fix
Replace every direct `${{ ... }}` expression inside a `run:` block with an environment variable.
Pass the value through `env:` and reference it as a normal shell variable.
**Before (vulnerable)**:
```yaml
- name: Process issue
run: |
echo "Title: ${{ github.event.issue.title }}"
gh issue comment ${{ github.event.issue.number }} --body "done"
```
**After (safe)**:
```yaml
- name: Process issue
env:
ISSUE_TITLE: ${{ github.event.issue.title }}
ISSUE_NUMBER: ${{ github.event.issue.number }}
run: |
echo "Title: ${ISSUE_TITLE}"
gh issue comment "${ISSUE_NUMBER}" --body "done"
```
### Affected Workflows to Fix
Audit the following compiled lock files for template-injection findings (run zizmor on each):
audit-workflows, auto-triage-issues, contribution-check, copilot-pr-nlp-analysis,
copilot-session-insights, copilot-token-audit, daily-code-metrics, daily-copilot-token-report,
daily-doc-updater, daily-firewall-report, daily-integrity-analysis, daily-issues-report,
daily-multi-device-docs-tester, daily-news, daily-performance-summary, daily-repo-chronicle,
deep-report, discussion-task-miner, docs-noob-tester, github-mcp-structural-analysis,
and ~27 additional workflows flagged by zizmor.
Focus on the **source `.md` workflow files** (not the compiled `.lock.yml` files).
Fix the template expressions in the markdown workflows and recompile.
View Detailed Findings by Type
Zizmor secrets-outside-env — Medium (~3,700 findings)
All workflows reference secrets like ${{ secrets.GITHUB_TOKEN }} directly in run: steps. These should be passed through env: to avoid potential log exposure.
Zizmor unpinned-uses — High (2,182 findings)
The root cause is github/gh-aw-actions/setup@v0.65.6 used in all workflows. Fix: resolve the tag to its commit SHA and pin with a comment, e.g.:
Workflows smoke-workflow-call and smoke-workflow-call-with-inputs execute code from untrusted checkout paths. Historical context: most instances have poutine:ignore annotations as false positives.
14 workflows triggered on risky events (e.g. pull_request_target) without explicit minimal permissions.
Actionlint SC2086 — Info (4,680 findings)
The gh-aw compiler generates bash ${RUNNER_TEMP}/... without quoting. This is a compiler-level issue — fix in the compiler's action templates, not individual workflow files.
Historical Trends
Date
Total
Zizmor
Poutine
Actionlint
Workflows
2026-03-29
7,383
3,455
6
3,928
178
2026-03-30
8,520
3,953
6
4,561
178
2026-03-31
8,562
3,977
19
4,566
178
2026-04-01
8,601
3,992
19
4,590
179
2026-04-02
8,600
3,762
19
4,819
179
2026-04-03
9,757
4,789
39
4,929
183
2026-04-04
9,956
4,924
65
4,967
181
2026-04-08
⚠️ Failed
—
—
—
—
Trend observations:
Total findings increased +34.8% from 2026-03-29 to 2026-04-04 (7,383 → 9,956), primarily driven by new workflows being added
unpinned-uses jumped from 5 to 1,047+ on 2026-04-03 — a new version of github/gh-aw-actions/setup was introduced using a tag
Poutine findings grew from 6 to 65, reflecting expanded supply chain checks
Template injection (High) has been stable at 24 High-severity findings across ~47 workflows — a persistent, unresolved issue
New Issues Since Last Week
default_permissions_on_risky_events (poutine): 14 new findings
github_action_from_unverified_creator_used (poutine): 9 new findings
Significant growth in unpinned-uses (5 → 2,182) due to new setup action version
Analysis Summary
Findings by Tool
Clustered Findings by Tool and Type
Zizmor Security Findings
secrets-outside-envunpinned-usestemplate-injectionrun:stepsobfuscationartipackedgithub-envsecrets-inheritPoutine Supply Chain Findings
untrusted_checkout_execdefault_permissions_on_risky_eventsgithub_action_from_unverified_creator_usedunverified_script_execunpinnable_actionpr_runs_on_self_hostedActionlint Linting Issues
shellcheck SC2086shellcheck SC2129{ }groupingpermissionscopilot-requestspermission scoperunner-labelexpressionRunner-Guard Taint Analysis Findings
Top Priority Issues
1. Unpinned Action References (affects ALL workflows)
github/gh-aw-actions/setup@v0.65.6(semver tag, not SHA)2. Template Injection in Run Steps
3. Secrets Outside Env (~3,700 findings)
4. SC2086 — Unquoted Shell Variables (4,680 findings)
bash ${RUNNER_TEMP}/...without quoting — a compiler-level fix is needed, not per-workflowFix Suggestion for Template Injection (Highest-Impact Security Issue)
Issue: GitHub Actions template expressions used directly in
run:stepsSeverity: High
Affected Workflows: ~47 workflows with 214 total findings
Prompt to Copilot Agent:
View Detailed Findings by Type
Zizmor
secrets-outside-env— Medium (~3,700 findings)All workflows reference secrets like
${{ secrets.GITHUB_TOKEN }}directly inrun:steps. These should be passed throughenv:to avoid potential log exposure.Zizmor
unpinned-uses— High (2,182 findings)The root cause is
github/gh-aw-actions/setup@v0.65.6used in all workflows. Fix: resolve the tag to its commit SHA and pin with a comment, e.g.:Poutine
untrusted_checkout_exec— Error (34 findings)Workflows
smoke-workflow-callandsmoke-workflow-call-with-inputsexecute code from untrusted checkout paths. Historical context: most instances havepoutine:ignoreannotations as false positives.Poutine
default_permissions_on_risky_events— Warning (14 findings)14 workflows triggered on risky events (e.g.
pull_request_target) without explicit minimal permissions.Actionlint
SC2086— Info (4,680 findings)The gh-aw compiler generates
bash ${RUNNER_TEMP}/...without quoting. This is a compiler-level issue — fix in the compiler's action templates, not individual workflow files.Historical Trends
Trend observations:
unpinned-usesjumped from 5 to 1,047+ on 2026-04-03 — a new version ofgithub/gh-aw-actions/setupwas introduced using a tagNew Issues Since Last Week
default_permissions_on_risky_events(poutine): 14 new findingsgithub_action_from_unverified_creator_used(poutine): 9 new findingsunpinned-uses(5 → 2,182) due to new setup action versionInfrastructure Note (Today)
Today's scan could not be completed because:
--runner-guardflag added by PR Add --runner-guard to compile; wire into static-analysis-report workflow #25281 is not yet recognized by the deployed gh-aw CLIRecommendations
--runner-guarddeploy issue — merge the CLI update so the flag is available in the runner environmenttemplate-injectionfindings across ~47 workflowsgithub/gh-aw-actions/setupto a commit SHA instead of@v0.65.6default_permissions_on_risky_eventsin the 14 affected workflowsSC2086at the compiler level (quote${RUNNER_TEMP}in generated lock files)Next Steps
--runner-guardCLI deployment so tomorrow's scan can run fullygithub/gh-aw-actions/setup@v0.65.6to its commit SHAReferences: