🔍 Static Analysis Report - January 6, 2026 #9119
Replies: 1 comment 1 reply
-
|
/plan |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Analysis Summary
Today's comprehensive static analysis scan of all agentic workflows identified 45 total issues across three analysis tools: actionlint, zizmor, and poutine.
Findings by Tool
Clustered Findings by Tool and Type
1. Actionlint Linting Issues (27 errors)
Actionlint identified 27 errors across workflow files, broken down into two categories:
1.1 Expression Errors (20 errors) 🔴 HIGH PRIORITY
Issue: Undefined property references in GitHub Actions expressions
Count: 20 errors across 18 workflows
Affected Workflows:
Common Patterns:
check_command_positionstep (11 workflows): Referencessteps.check_command_position.outputs.matched_commandwhen step doesn't exist in current jobbeadjob dependency (beads-worker.lock.yml): Referencesneeds.bead.outputs.idwithout proper job dependencyinputs.reasonandinputs.statewhen inputs aren't definedExample:
Impact: These errors will cause workflow runs to fail at runtime when the expressions are evaluated.
1.2 Shellcheck Errors (7 errors)
Issue: Shell script style and safety issues
Count: 7 errors across 3 workflows
Affected Workflows:
Common Issue: SC2129 - Consider using
{ cmd1; cmd2; } >> fileinstead of individual redirectsExample:
Impact: Performance and style issues, but not breaking errors.
2. Zizmor Security Findings (18 warnings)
Zizmor identified 18 security warnings across 12 workflows.
2.1 Template Injection (16 warnings) 🟡 MEDIUM PRIORITY
Issue: Code injection via template expansion
Severity: Informational (can escalate to Critical)
Reference: (redacted)
Count: 16 warnings across 11 workflows
Affected Workflows:
Security Risk:
When untrusted user input (like PR titles, issue bodies, or comments) is directly interpolated into shell commands via GitHub Actions expressions, attackers can inject arbitrary commands.
Vulnerable Pattern:
Secure Pattern:
2.2 Excessive Permissions (1 warning) 🟠 MEDIUM PRIORITY
Issue: Overly broad permissions
Severity: Medium
Reference: (redacted)
Affected Workflow: layout-spec-maintainer.lock.yml (line 69)
Issue: The workflow has broader permissions than necessary, increasing the attack surface.
Recommendation: Apply principle of least privilege - only grant the minimum permissions needed.
2.3 Artipacked (1 warning) 🟠 MEDIUM PRIORITY
Issue: Credential persistence through GitHub Actions artifacts
Severity: Medium
Reference: (redacted)
Affected Workflow: release.lock.yml (line 1087)
Security Risk: Credentials or secrets may be inadvertently included in uploaded artifacts, potentially leaking sensitive data.
Recommendation:
.gitignore-style filters for artifact uploads3. Poutine Supply Chain Analysis (0 findings)
✅ No issues detected - Poutine ran successfully and found no supply chain security concerns.
4. Other Notable Findings (144 notes)
4.1 Unverified Script Execution (129 occurrences)
Severity: Info
Count: 129 instances across 123 workflows
Pattern:
curl -sSL https://raw.githubusercontent.com/githubnext/gh-aw-firewall/main/install.sh | sudo AWF_VERSION=v0.8.1 bashNote: This is the standard installation method for the gh-aw-firewall tool. While flagged as unverified script execution, this is an expected pattern for this repository. Consider:
4.2 Schedule Distribution Warnings (15 occurrences)
Issue: Fixed schedule times that should use fuzzy schedules
Example Warnings:
Recommendation: Use fuzzy schedules to distribute workflow execution times and reduce load spikes on GitHub Actions infrastructure.
Top Priority Issues
🔴 Priority 1: Actionlint Expression Errors (20 errors)
Immediate Action Required
These errors will cause workflow failures. The most common issue is referencing
steps.check_command_positionin 11 workflows where the step either doesn't exist or is in a different job.Recommended Fix: For slash command workflows (archie, brave, cloclo, craft, grumpy-reviewer, mergefest), either:
check_command_positionstep to the job that references it, ORSee detailed fix template in the "Fix Suggestions" section below.
🟡 Priority 2: Template Injection Vulnerabilities (16 warnings)
Security Review Needed
While marked "Informational," these can escalate to CRITICAL if:
Recommended Fix: Move all user-controlled input to environment variables instead of direct expression interpolation.
🟠 Priority 3: Medium Severity Security Issues (2 warnings)
Fix Suggestions
Fix Template for Actionlint Expression Errors
The most common issue affects 11 workflows that reference
steps.check_command_position.outputs.matched_commandin job outputs, but the step doesn't exist in that job.Affected Workflows: archie, brave, cloclo, craft, grumpy-reviewer, mergefest (and 5 others)
Problem: Job outputs reference a step that exists in a different job or doesn't exist at all.
Fix Option 1 - Job Dependencies:
Fix Option 2 - Move Step to Correct Job:
Fix Option 3 - Remove Unused Output:
If the output isn't actually used downstream:
Detailed Fix Guide: Full fix instructions are available in cache memory at:
/tmp/gh-aw/cache-memory/fix-templates/actionlint-expression-errors.mdFix Template for Template Injection
Affected: 11 workflows with user input in expressions
Quick Fix - Use Environment Variables:
For Complex Logic - Use github-script:
Detailed Fix Guide: Full fix instructions are available in cache memory at:
/tmp/gh-aw/cache-memory/fix-templates/zizmor-template-injection.mdAll Findings Details
Complete Actionlint Error List (27 errors)
Expression Errors (20)
.github/workflows/archie.lock.yml:71:26- property "check_command_position" is not defined.github/workflows/beads-worker.lock.yml:1096:24- property "bead" is not defined.github/workflows/beads-worker.lock.yml:1097:23- property "reason" is not defined.github/workflows/beads-worker.lock.yml:1098:22- property "state" is not defined.github/workflows/brave.lock.yml:62:26- property "check_command_position" is not defined.github/workflows/cloclo.lock.yml:98:26- property "check_command_position" is not defined.github/workflows/craft.lock.yml:58:26- property "check_command_position" is not defined.github/workflows/daily-assign-issue-to-user.lock.yml:986:36- property "assign_to_user" is not defined.github/workflows/daily-secrets-analysis.lock.yml:490:4242- unexpected character in expression.github/workflows/grumpy-reviewer.lock.yml:62:26- property "check_command_position" is not defined.github/workflows/mergefest.lock.yml:58:26- property "check_command_position" is not definedShellcheck Errors (7)
1-3.
.github/workflows/beads-worker.lock.yml:956:9- SC2129: Consider using { cmd1; cmd2; } >> file (3 instances)4-6.
.github/workflows/smoke-copilot-no-firewall.lock.yml- SC2129 issues (3 instances)7.
.github/workflows/daily-choice-test.lock.yml:981:9- SC2129 issueComplete Zizmor Findings (18 warnings)
Template Injection (16 warnings)
Security Issues
Historical Trends
First Scan: This is the inaugural static analysis report for this repository using the comprehensive three-tool approach (actionlint + zizmor + poutine).
Baseline Established:
Future scans will track progress against this baseline.
Recommendations
Immediate Actions (This Week)
✅ Fix Actionlint Expression Errors - These will cause runtime failures
check_command_positionreferences🔒 Security Review Template Injection Warnings
🔧 Address Medium Severity Security Issues
Short-term Actions (This Month)
Address Shellcheck Issues
Optimize Schedules
Fix Campaign Validation Errors
Long-term Actions (This Quarter)
Establish Automated Scanning
gh aw compile --actionlint --zizmor --poutineto CI/CDUpdate Workflow Templates
Security Hardening
Tool Integration
Next Steps
Scan Metadata
/tmp/gh-aw/cache-memory/security-scans/2026-01-06.jsonResources
Fix Templates:
/tmp/gh-aw/cache-memory/fix-templates/actionlint-expression-errors.md/tmp/gh-aw/cache-memory/fix-templates/zizmor-template-injection.mdDocumentation:
Raw Data:
/tmp/gh-aw/compile-output.txtBeta Was this translation helpful? Give feedback.
All reactions