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
Note on duplicates: Per the dedup-by-rule-and-file policy established in #31043, no new individual runner-guard issues were created this run. All current High-severity RGS rules (RGS-004, RGS-012, RGS-018) for the affected files are covered by previously-filed-and-closed issues. Yesterday's report: #31435.
Clustered Findings
Runner-Guard Taint Analysis
Rule ID
Name
Severity
Count
Unique Workflows
RGS-004
Comment-Triggered Workflow Without Author Authorization Check
High
1,739
18
RGS-005
Excessive Permissions on Untrusted Trigger
Medium
54
17
RGS-018
Suspicious Payload Execution Pattern
High
29
29
RGS-012
Secret Exfiltration via Outbound HTTP Request
High
9
5
Issues created this run: none — see deduplication note above. Existing coverage:
Description: Dangerous use of GitHub Actions environment file ($GITHUB_ENV / $GITHUB_OUTPUT) that can lead to environment variable injection.
Impact: An attacker who controls some upstream input may be able to inject key=value lines into $GITHUB_ENV, polluting later steps with arbitrary environment variables (including overwriting PATH).
Reference: (docs.zizmor.sh/redacted)
2. Runner-Guard [High] RGS-004 — Comment-Triggered Workflow Without Author Authorization
Tool: runner-guard
Count: 1,739 (across 18 workflows; many repetitions per file)
Description: A workflow is triggered by issue_comment/pull_request_review_comment/workflow_run, accesses secrets/has write permissions, but does not verify github.event.comment.author_association.
Impact: Any external user can trigger the privileged workflow by posting a comment.
Description: Actionlint reports copilot-requests is not a recognized GitHub Actions permission scope.
Impact: This is a recently-added GitHub-internal scope; actionlint hasn't been updated. Workflows still execute, but linting noise obscures real issues.
Recommendation: Upgrade the bundled actionlint or add an actionlint-ignore for this scope.
Fix Suggestion: Zizmor github-env in dev-hawk.lock.yml
Issue: github-env — dangerous use of environment file Severity: High Affected Workflows: 1 (dev-hawk.lock.yml, lines 721 and 1540 — both generated from dev-hawk.md)
Prompt to Copilot Agent:
You are fixing a HIGH-severity security vulnerability identified by zizmor in
the workflow `.github/workflows/dev-hawk.md` (the source markdown — lock.yml
is generated). Locations: dev-hawk.lock.yml:721 and dev-hawk.lock.yml:1540.
**Vulnerability**: `github-env` — Dangerous use of environment file
**Rule**: github-env — (docs.zizmor.sh/redacted)
**Current Issue**:
The workflow writes to `$GITHUB_ENV` (or `$GITHUB_OUTPUT`) using untrusted or
poorly sanitized input. An attacker who controls part of the input can inject
newline-delimited `KEY=VALUE` pairs, polluting later steps' environment
(potentially overwriting `PATH`, `LD_PRELOAD`, etc.).
**Required Fix**:
1. Open `.github/workflows/dev-hawk.md` and locate the `run:` steps that
correspond to dev-hawk.lock.yml lines 721 and 1540.
2. Identify each `>> $GITHUB_ENV` (or `>> "$GITHUB_ENV"`) and `>> $GITHUB_OUTPUT`
write.
3. Replace with one of these safer patterns:
- Use a heredoc delimiter (random UUID) so the value cannot contain a
line break that matches the delimiter:
```bash
EOF=$(uuidgen)
{
echo "MY_VAR<<${EOF}"
echo "${VALUE}"
echo "${EOF}"
} >> "$GITHUB_ENV"
```
- Or pass the value via `env:` mapping on a downstream step instead of
using `$GITHUB_ENV`.
- Or write to a workspace file and read in the next step.
4. Validate (`grep -n 'GITHUB_ENV\|GITHUB_OUTPUT' .github/workflows/dev-hawk.md`)
that no `echo "X=$Y" >> $GITHUB_ENV` patterns remain with untrusted `$Y`.
5. Run `gh aw compile dev-hawk` and confirm zizmor no longer flags these lines.
**Example**:
Before:
```yaml
- run: echo "TITLE=${{ github.event.issue.title }}" >> "$GITHUB_ENV"
```
After:
```yaml
- env:
TITLE: ${{ github.event.issue.title }}
run: |
EOF=$(uuidgen)
{
echo "TITLE<<${EOF}"
printf '%s\n' "${TITLE}"
echo "${EOF}"
} >> "$GITHUB_ENV"
```
Apply this fix to `.github/workflows/dev-hawk.md` only (the lock file
regenerates automatically on compile).
Change: +434 findings (+17.6%) — driven almost entirely by actionlint (554 → 984, +430). Zizmor +3, runner-guard +1. The actionlint delta is consistent with the introduction of the unknown copilot-requests permission scope flagging every job that uses it (108 occurrences) plus additional shellcheck SC2016/SC2086 warnings in new/changed workflows.
New issue types since previous scan
None — all observed rules (RGS-004/005/012/018, zizmor's template-injection/obfuscation/artipacked/github-env/excessive-permissions, poutine's untrusted_checkout_exec/etc.) appeared in yesterday's scan.
Resolved issue types
None — the rule distribution is stable.
Recommendations
Immediate (High severity, narrow scope): Fix the 2 zizmor github-env findings in dev-hawk.md — both are in a single workflow and have a clear remediation pattern (see fix prompt above).
Short-term: Investigate the actionlint regression from 554→984 findings. Most of the delta is the copilot-requests unknown scope (108 occurrences) — either update bundled actionlint or add a workflow-level ignore.
Prevention: Resolve poutine's untrusted_checkout_exec findings in smoke-workflow-call*.lock.yml by either confirming the existing # poutine:ignore comments are intentional (they appear in # poutine:ignore lines but still trip the rule) or by refactoring the bash invocations.
Next Steps
Apply the suggested fix for zizmor github-env in dev-hawk.md
Analysis Summary
Findings by Tool
Note on duplicates: Per the dedup-by-rule-and-file policy established in #31043, no new individual runner-guard issues were created this run. All current High-severity RGS rules (RGS-004, RGS-012, RGS-018) for the affected files are covered by previously-filed-and-closed issues. Yesterday's report: #31435.
Clustered Findings
Runner-Guard Taint Analysis
Issues created this run: none — see deduplication note above. Existing coverage:
Zizmor Security Findings
dev-hawk.lock.yml)daily-geo-optimizer,issue-arborist)dependabot-repair)High-severity zizmor findings:
dev-hawk.lock.yml:721—[High] github-env: dangerous use of environment filedev-hawk.lock.yml:1540—[High] github-env: dangerous use of environment filePoutine Supply Chain Findings
smoke-workflow-call,smoke-workflow-call-with-inputsmcp-inspector,link-check,super-linter,copilot-setup-steps,smoke-codexcopilot-setup-steps,smoke-codexsmoke-copilot-armActionlint Linting Issues
copilot-requestsunknown scope (108)Top Priority Issues
1. Zizmor [High]
github-envindev-hawk.lock.yml.github/workflows/dev-hawk.lock.yml(lines 721, 1540)$GITHUB_ENV/$GITHUB_OUTPUT) that can lead to environment variable injection.key=valuelines into$GITHUB_ENV, polluting later steps with arbitrary environment variables (including overwritingPATH).2. Runner-Guard [High] RGS-004 — Comment-Triggered Workflow Without Author Authorization
unbloat-docs(130),cloclo(116),q(110),tidy(108),mergefest(106),scout(105),pdf-summary(103)issue_comment/pull_request_review_comment/workflow_run, accesses secrets/has write permissions, but does not verifygithub.event.comment.author_association.3. Actionlint — Unknown permission scope
copilot-requests(108 occurrences)copilot-requestsis not a recognized GitHub Actions permission scope.Fix Suggestion: Zizmor
github-envindev-hawk.lock.ymlIssue:
github-env— dangerous use of environment fileSeverity: High
Affected Workflows: 1 (
dev-hawk.lock.yml, lines 721 and 1540 — both generated fromdev-hawk.md)Prompt to Copilot Agent:
Historical Trends
copilot-requestspermission scope flagging every job that uses it (108 occurrences) plus additional shellcheck SC2016/SC2086 warnings in new/changed workflows.New issue types since previous scan
RGS-004/005/012/018, zizmor'stemplate-injection/obfuscation/artipacked/github-env/excessive-permissions, poutine'suntrusted_checkout_exec/etc.) appeared in yesterday's scan.Resolved issue types
Recommendations
github-envfindings indev-hawk.md— both are in a single workflow and have a clear remediation pattern (see fix prompt above).copilot-requestsunknown scope (108 occurrences) — either update bundled actionlint or add a workflow-level ignore.untrusted_checkout_execfindings insmoke-workflow-call*.lock.ymlby either confirming the existing# poutine:ignorecomments are intentional (they appear in# poutine:ignorelines but still trip the rule) or by refactoring the bash invocations.Next Steps
github-envindev-hawk.mdcopilot-requestspermission scope warnings (108 instances)References