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
All 10 untrusted_checkout_exec hits carry # poutine:ignore untrusted_checkout_exec inline and are on smoke-test lock files that intentionally exercise bash against workflow-generated action scripts — unchanged from prior scans.
All findings are inside generated run: bash blocks in .lock.yml files — the actual source lives in the Go step-emitter templates under pkg/workflow/, not the lock files.
Syft SBOM Inventory
18 container images scanned
Image
Packages
ghcr.io/github/gh-aw-firewall/agent:0.27.42
532
ghcr.io/github/gh-aw-firewall/api-proxy:0.27.42
193
ghcr.io/github/gh-aw-firewall/cli-proxy:0.27.42
348
ghcr.io/github/gh-aw-firewall/squid:0.27.42
63
ghcr.io/github/gh-aw-mcpg:v0.4.6
632
ghcr.io/github/gh-aw-node
177
ghcr.io/github/github-mcp-server:v1.7.0
40
ghcr.io/github/serena-mcp-server:latest
2,314
node:lts-alpine
165
semgrep/semgrep:latest
191
grafana/mcp-grafana
245
mcp/ast-grep:latest
186
mcp/arxiv-mcp-server
168
mcp/context7
329
mcp/markitdown
375
mcp/memory
253
mcp/notion
604
python:alpine
38
serena-mcp-server (2,314 packages) remains the largest image by far and also the largest source of grype findings (see below).
Runner-Guard Taint Analysis Findings
Runner-Guard Score: not emitted in this run's output (N/A)
Rule ID
Name
Severity
Count
Affected Workflows
RGS-004
Comment-Triggered Workflow Without Author Authorization Check
Issues created: none. Every Critical/High finding (RGS-004, RGS-012, RGS-018) was re-verified via gh api search/issues against the same rule + affected file and maps to an already-closed static-analysis issue (e.g. #47726, #30284/#29694/#28156 for RGS-004; #30776/#30947/#35652/#28488 family for RGS-012; #35653/#47478/#46532/#47477 for RGS-018). Per the dedup rule, closed matches are skipped rather than recreated. RGS-005/RGS-019 are Medium severity and out of scope for issue creation.
Notable count changes vs. 2026-07-28: RGS-004 rose on ai-moderator.lock.yml (90→110) and dev-hawk.lock.yml (94→95); q.lock.yml unchanged (124). RGS-005 rose by 1 on ai-moderator.lock.yml (4→5). RGS-012/RGS-018/RGS-019 unchanged. Per meta-issue #31043, the RGS-004 recurrence is an accepted characteristic of the auto-generated comment-trigger activation scaffolding in these 3 workflows, not a new vulnerability class.
Grype Container Vulnerability Findings
Findings by image (4,256 raw / 979 distinct CVE-IDs)
Image
Findings
ghcr.io/github/serena-mcp-server:latest
1,059
mcp/markitdown
893
mcp/arxiv-mcp-server
404
ghcr.io/github/gh-aw-firewall/agent:0.27.42
344
mcp/notion
335
semgrep/semgrep:latest
250
grafana/mcp-grafana
231
ghcr.io/github/gh-aw-mcpg:v0.4.6
168
mcp/context7
164
mcp/memory
118
mcp/ast-grep:latest
95
python:alpine
77
node:lts-alpine
61
ghcr.io/github/gh-aw-firewall/squid:0.27.42
22
ghcr.io/github/github-mcp-server:v1.7.0
13
ghcr.io/github/gh-aw-firewall/cli-proxy:0.27.42
9
ghcr.io/github/gh-aw-firewall/api-proxy:0.27.42
7
ghcr.io/github/gh-aw-node
6
205 Critical-severity findings this run (down from 218 on 2026-07-28). Top recurring critical packages: tar (GHSA-23hp-3jrh-7fpw, 7 hits across versions 6.2.1/7.4.3), perl-base@5.36.0-7+deb12u3 (multiple CVEs), libc6/libc-bin@2.36-9+deb12u13 (CVE-2026-5450), libgnutls30@3.7.9-2+deb12u6, libssl3/libcrypto3@3.5.5-r0, and golang.org/x/crypto (multiple GHSA advisories across v0.40.0 and v0.48.0). Most of these are base-image OS packages (Debian/Alpine) rather than gh-aw's own code — remediation is base-image bumps/rebuilds rather than source changes.
Yamllint YAML Linting Findings
None — 0 errors across all 265 files.
Top Priority Issues
1. RGS-004: Comment-Triggered Workflow Without Author Authorization Check
Description: issue_comment/workflow_run-triggered jobs with secrets/write access lack an explicit author_association gate, so any external commenter could in principle trigger privileged execution.
Count: 205 Critical findings across 17 of 18 images
Severity: Critical
Affected: serena-mcp-server (largest surface), plus base-OS packages (tar, perl-base, libc6, libgnutls30, openssl, golang.org/x/crypto) across several MCP server images
Description: Third-party/base-image CVEs, not gh-aw source code.
Impact: Supply-chain risk from stale base images in MCP server containers gh-aw depends on.
Description: bash invocation of gh-aw action scripts flagged by poutine despite inline # poutine:ignore annotations.
Impact: Low real-world risk (smoke-test scaffolding, already suppressed), but worth confirming the ignore comment is actually being honored by the poutine version in use.
Fix Suggestion for actionlint SC2086 (unquoted shell variable expansion)
Issue: run: bash blocks in generated .lock.yml files reference variables without double-quoting them, risking globbing/word-splitting bugs. Severity: Info/Style (shellcheck) Affected Workflows: 4 workflows this run (daily-geo-optimizer, impeccable-skills-reviewer, mattpocock-skills-reviewer, pr-code-quality-reviewer) — down from a historical high of ~485 occurrences repo-wide.
Prompt to Copilot Agent:
You are fixing actionlint shellcheck SC2086 warnings ("Double quote to prevent
globbing and word splitting") reported across generated .github/workflows/*.lock.yml files.
These lock files are GENERATED by the gh-aw compiler — do NOT edit them directly.
Locate the Go template / step-emitter code in pkg/workflow/*.go that produces the
offending `run:` bash, and quote the variable expansions there.
Steps:
1. Run the repo's compile command and capture actionlint output to find the exact
SC2086 lines and the bash snippets they map to.
2. Trace each snippet back to its source in pkg/workflow/*.go.
3. Wrap the flagged expansions in double quotes:
Before: run: echo $GH_HOST >> $GITHUB_ENV
After: run: echo "$GH_HOST" >> "$GITHUB_ENV"
Apply to all variable and command-substitution expansions on the flagged line.
4. Recompile and confirm the SC2086 count drops with no new shellcheck regressions.
5. Do not add `# shellcheck disable=SC2086`; quote properly instead.
Verify: actionlint shellcheck total for SC2086 should trend toward 0.
Affected workflows this run: daily-geo-optimizer.md, impeccable-skills-reviewer.md,
mattpocock-skills-reviewer.md, pr-code-quality-reviewer.md
Short-term: Apply the SC2086/SC2038 quoting fixes in pkg/workflow/*.go to shrink the actionlint shellcheck backlog further (20 → 0).
Long-term: Track grype Critical-CVE trend per image over time (serena-mcp-server and mcp/markitdown dominate volume) and schedule periodic base-image bumps for third-party MCP server containers.
🔍 Static Analysis Report - 2026-07-29
Analysis Summary
Findings by Tool
Clustered Findings by Tool and Type
Zizmor Security Findings
None — 13th consecutive clean run since 2026-07-16.
Poutine Supply Chain Findings
All 10
untrusted_checkout_exechits carry# poutine:ignore untrusted_checkout_execinline and are on smoke-test lock files that intentionally exercisebashagainst workflow-generated action scripts — unchanged from prior scans.Actionlint Linting Issues
All findings are inside generated
run:bash blocks in.lock.ymlfiles — the actual source lives in the Go step-emitter templates underpkg/workflow/, not the lock files.Syft SBOM Inventory
18 container images scanned
serena-mcp-server (2,314 packages) remains the largest image by far and also the largest source of grype findings (see below).
Runner-Guard Taint Analysis Findings
Runner-Guard Score: not emitted in this run's output (N/A)
Issues created: none. Every Critical/High finding (RGS-004, RGS-012, RGS-018) was re-verified via
gh api search/issuesagainst the same rule + affected file and maps to an already-closed static-analysis issue (e.g. #47726, #30284/#29694/#28156 for RGS-004; #30776/#30947/#35652/#28488 family for RGS-012; #35653/#47478/#46532/#47477 for RGS-018). Per the dedup rule, closed matches are skipped rather than recreated. RGS-005/RGS-019 are Medium severity and out of scope for issue creation.Notable count changes vs. 2026-07-28: RGS-004 rose on
ai-moderator.lock.yml(90→110) anddev-hawk.lock.yml(94→95);q.lock.ymlunchanged (124). RGS-005 rose by 1 onai-moderator.lock.yml(4→5). RGS-012/RGS-018/RGS-019 unchanged. Per meta-issue #31043, the RGS-004 recurrence is an accepted characteristic of the auto-generated comment-trigger activation scaffolding in these 3 workflows, not a new vulnerability class.Grype Container Vulnerability Findings
Findings by image (4,256 raw / 979 distinct CVE-IDs)
205 Critical-severity findings this run (down from 218 on 2026-07-28). Top recurring critical packages:
tar(GHSA-23hp-3jrh-7fpw, 7 hits across versions 6.2.1/7.4.3),perl-base@5.36.0-7+deb12u3(multiple CVEs),libc6/libc-bin@2.36-9+deb12u13(CVE-2026-5450),libgnutls30@3.7.9-2+deb12u6,libssl3/libcrypto3@3.5.5-r0, andgolang.org/x/crypto(multiple GHSA advisories across v0.40.0 and v0.48.0). Most of these are base-image OS packages (Debian/Alpine) rather than gh-aw's own code — remediation is base-image bumps/rebuilds rather than source changes.Yamllint YAML Linting Findings
None — 0 errors across all 265 files.
Top Priority Issues
1. RGS-004: Comment-Triggered Workflow Without Author Authorization Check
issue_comment/workflow_run-triggered jobs with secrets/write access lack an explicitauthor_associationgate, so any external commenter could in principle trigger privileged execution.2. Grype Critical CVEs in container images
3. Poutine untrusted_checkout_exec on smoke workflows
bashinvocation of gh-aw action scripts flagged by poutine despite inline# poutine:ignoreannotations.Fix Suggestion for actionlint SC2086 (unquoted shell variable expansion)
Issue:
run:bash blocks in generated.lock.ymlfiles reference variables without double-quoting them, risking globbing/word-splitting bugs.Severity: Info/Style (shellcheck)
Affected Workflows: 4 workflows this run (daily-geo-optimizer, impeccable-skills-reviewer, mattpocock-skills-reviewer, pr-code-quality-reviewer) — down from a historical high of ~485 occurrences repo-wide.
Prompt to Copilot Agent:
Historical Trends
New Issues
None — no new finding types appeared this run.
Resolved Issues
None newly resolved this run; grype Critical severity count improved (218 → 205, -13).
Recommendations
pkg/workflow/*.goto shrink the actionlint shellcheck backlog further (20 → 0).Next Steps
# poutine:ignore untrusted_checkout_execannotations are honored by the current poutine versionReferences: