🔍 Static Analysis Report - November 4, 2025 #3090
Closed
Replies: 2 comments 1 reply
-
|
/plan |
Beta Was this translation helpful? Give feedback.
1 reply
-
|
This discussion was automatically closed because it was created by an agentic workflow more than 1 week ago. |
Beta Was this translation helpful? Give feedback.
0 replies
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.
-
🔍 Static Analysis Report - November 4, 2025
Executive Summary
Comprehensive static analysis of gh-aw agentic workflows completed using three industry-standard security and code quality tools: zizmor (security scanner), poutine (supply chain security), and actionlint (linting). Analysis covered a representative sample of 19 workflows out of 66 total workflows in the repository.
Key Findings:
Analysis Statistics
Findings by Tool
Findings by Severity
Clustered Findings by Tool and Type
🔨 Actionlint Linting Issues (141 total)
1. SC2086: Double Quote Variables (120 occurrences)⚠️ MOST COMMON
Severity: Info (Code Quality)
Impact: Medium - Could cause script failures with filenames containing spaces
Fix Complexity: Low - Add quotes around variables
Description: Shellcheck warns when variables are used without quotes in shell scripts. Unquoted variables can cause word splitting and globbing issues.
Affected Workflows (22):
Common Patterns:
echo "VAR=value" >> $GITHUB_ENV(should be"$GITHUB_ENV")git diff $DEFAULT_BRANCH(should be"$DEFAULT_BRANCH")gh api .../pulls/$PR_NUMBER/...(should be"$PR_NUMBER")Example:
2. SC2012: Use Find Instead of LS (10 occurrences)
Severity: Info (Code Quality)
Impact: Low - Could fail with unusual directory names
Fix Complexity: Medium - Replace ls with find command
Description: Using
lsfor scripting is discouraged. Thefindcommand is more robust and handles edge cases better.Affected Workflows (6):
Typical Location: Agent Firewall logs steps
Current Pattern:
SQUID_LOGS_DIR="$(ls -td /tmp/squid-logs-* 2>/dev/null | head -1)"Recommended Fix:
SQUID_LOGS_DIR="$(find /tmp -maxdepth 1 -type d -name 'squid-logs-*' -print0 | xargs -0 ls -td | head -1)"3. Expression Error: Undefined Property (1 occurrence)
Severity: Error
Impact: High - Workflow may fail at runtime
Fix Complexity: Low - Add missing input definition
Affected Workflow: poem-bot
Issue: Accessing
github.event.inputs.label_nameswhich is not defined in workflow_dispatch inputsLocation:
poem-bot.lock.yml:2317:36Fix: Add
label_namesto workflow_dispatch inputs in poem-bot.md, or remove the reference if not needed.4. Compilation Warnings (10 occurrences)
Various informational warnings during compilation:
Network Firewalling (4 workflows):
Action Resolution (2 workflows):
Package Validation (2 workflows):
Web Search Support (1 workflow):
🔒 Zizmor Security Issues (6 total)
template-injection: Code Injection via Template Expansion
Severity: Low
Count: 6 occurrences in 2 workflows
Reference: (redacted)#template-injection
Description: Template expressions in MCP setup steps could potentially allow code injection if they incorporate untrusted data. In this case, the risk is low because only GitHub secrets and trusted sources are used.
Affected Workflows:
Location: "Setup MCPs" step in Codex engine workflows
Risk Assessment:
secrets.GH_AW_GITHUB_TOKEN,secrets.GITHUB_TOKEN)github.event.issue,github.event.comment, or other user-controlled dataRecommended Actions:
Example Safe Usage:
🔗 Poutine Supply Chain Security (0 issues)
Status: ✅ All Clear
No supply chain security issues detected by poutine. This indicates:
Priority Issues and Recommendations
🎯 Top Priority: Fix SC2086 Variable Quoting
Why prioritize:
Action: Apply systematic fixes to quote all variables in shell scripts. See detailed fix guide in cache memory.
Estimated Effort: 2-3 hours for bulk fix across all affected workflows
📋 Medium Priority: Replace LS with Find
Why prioritize:
Action: Replace
ls -tdpattern withfindcommand in Agent Firewall logs stepsEstimated Effort: 30 minutes
🔍 Low Priority: Review Template Expressions
Why prioritize:
Action:
Estimated Effort: 1 hour
🐛 Immediate Fix: Poem-Bot Expression Error
Why prioritize:
Action: Add missing
label_namesinput definition or remove the referenceEstimated Effort: 5 minutes
Fix Suggestion: SC2086 Variable Quoting
Automated Fix Prompt for Copilot Agent
Issue: SC2086 - Double quote to prevent globbing and word splitting
Severity: Info (Code Quality)
Affected Workflows: 22 workflows (120+ occurrences)
🤖 Prompt to Copilot Agent
You are fixing shellcheck warning SC2086 identified by actionlint in GitHub Actions workflows.
Vulnerability: Unquoted variables in shell scripts can cause:
*,?are expanded as patterns)Rule: SC2086 - (redacted)
Current Issue: Variables in shell script blocks are not quoted, causing shellcheck warnings.
Required Fix: Add double quotes around ALL variable references in shell scripts.
Common Patterns to Fix:
GITHUB_ENV assignments:
Git commands:
GitHub API calls:
Variable usage in commands:
Important Notes:
.github/workflows/, NOT the.lock.ymlfilesgh aw compile (workflow) --actionlintAffected Workflows (fix these files):
Steps:
run: |sections)$VAR,$GITHUB_ENV,$PR_NUMBER, etc.$VAR→"$VAR"Please apply this fix systematically to all affected workflows.
Historical Trends
First scan baseline - No previous scan data available for comparison.
This scan establishes a baseline for:
Future scans should track:
Recommendations
Immediate Actions
Short-term (1-2 weeks)
Long-term (1-3 months)
Preventive Measures
Workflow Templates
CI/CD Integration
gh aw compile --actionlint --zizmor --poutineon all PRsCode Review Checklist
Documentation
Monitoring
Tool Information
Zizmor (Security Scanner)
Poutine (Supply Chain Security)
Actionlint (Linting)
Next Steps
For Workflow Maintainers
For Security Team
For DevOps Team
Cache Memory References
The following files have been created in
/tmp/gh-aw/cache-memory/for future reference:Conclusion
This static analysis scan reveals a healthy security posture with no Critical or High severity issues. The majority of findings are code quality improvements (SC2086 variable quoting) that enhance reliability and robustness.
Key Takeaways:
Recommended Focus: Begin systematic SC2086 fixes across all workflows, starting with high-traffic workflows. This will improve code reliability and establish good practices for future workflow development.
Report Generated: 2025-11-04 09:00:00 UTC
Scan Method: Representative sample (19 of 66 workflows)
Tools: zizmor v1.x, poutine v1.x, actionlint v1.x
Repository: githubnext/gh-aw
Detailed Findings by Workflow
artifacts-summary.md
Actionlint Issues (4)
SC2012 - Line 1434: Use find instead of ls
ls -td /tmp/squid-logs-*SC2012 - Line 3318: Use find instead of ls
ls -td /tmp/squid-logs-*SC2086 - Line 3953: Double quote to prevent globbing
$GITHUB_ENVSC2086 - Line 4431: Double quote to prevent globbing
$GITHUB_ENVCompilation Warnings (2)
audit-workflows.md
Actionlint Issues (3)
SC2086 - Line 4182: Double quote to prevent globbing
$GITHUB_ENVSC2086 - Line 4673: Double quote to prevent globbing
$GITHUB_ENVSC2086 - Line 4832: Double quote to prevent globbing
$GITHUB_ENVCompilation Warnings (2)
blog-auditor.md
Actionlint Issues (2)
SC2086 - Line 3525: Double quote to prevent globbing
$GITHUB_ENVSC2086 - Line 4017: Double quote to prevent globbing
$GITHUB_ENVbrave.md
Actionlint Issues (3)
SC2086 - Line 723: Double quote to prevent globbing
$GITHUB_ENVSC2086 - Line 4736: Double quote to prevent globbing
$GITHUB_ENVSC2086 - Line 5019: Double quote to prevent globbing
$GITHUB_ENVchangeset.md
Actionlint Issues (9)
SC2012 - Line 2040: Use find instead of ls
SC2012 - Line 3924: Use find instead of ls
3-7. SC2086 - Line 4542: Multiple instances - Double quote to prevent globbing
$DEFAULT_BRANCH,$GITHUB_SHASC2086 - Line 5181: Double quote to prevent globbing
SC2086 - Line 5424: Double quote to prevent globbing
ci-doctor.md
Actionlint Issues (3)
Compilation Warnings (1)
cli-version-checker.md
Actionlint Issues (4)
commit-changes-analyzer.md
Actionlint Issues (2)
Compilation Warnings (1)
copilot-agent-analysis.md
Actionlint Issues (2)
copilot-pr-prompt-analysis.md
Actionlint Issues (4)
daily-doc-updater.md
Actionlint Issues (8)
1-5. SC2086 - Line 3374: Multiple instances - Double quote to prevent globbing
SC2086 - Line 3549: Double quote to prevent globbing
SC2086 - Line 4010: Double quote to prevent globbing
SC2086 - Line 4278: Double quote to prevent globbing
Compilation Warnings (1)
duplicate-code-detector.md
Actionlint Issues (4)
SC2086 - Line 1523: Double quote to prevent globbing
SC2086 - Line 3045: Double quote to prevent globbing
SC2086 - Line 3564: Double quote to prevent globbing
SC2086 - Line 3641: Double quote to prevent globbing
Zizmor Issues (4)
1-4. template-injection (Low) - Line 1029: Code injection via template expansion
go-logger.md
Actionlint Issues (7)
1-5. SC2086 - Line 3493: Multiple instances - Double quote to prevent globbing
lockfile-stats.md
Actionlint Issues (2)
mcp-inspector.md
Actionlint Issues (6)
Zizmor Issues (2)
1-2. template-injection (Low) - Line 1100: Code injection via template expansion
Compilation Warnings (1)
scout.md
Actionlint Issues (3)
Compilation Warnings (1)
smoke-claude.md
Actionlint Issues (2)
dev.md
Actionlint Issues (7)
1-5. SC2086 - Line 3464: Multiple instances - Double quote to prevent globbing
firewall.md
Actionlint Issues (2)
poem-bot.md
Actionlint Issues (17)
SC2086 - Line 758: Double quote to prevent globbing
SC2086 - Line 1144: Double quote to prevent globbing
Expression Error - Line 2317: Property not defined
github.event.inputs.label_namesis not defined in workflow_dispatch inputs4-8. SC2086 - Line 4839: Multiple instances - Double quote to prevent globbing
SC2086 - Line 4986: Double quote to prevent globbing
SC2086 - Line 5304: Double quote to prevent globbing
SC2086 - Line 5637: Double quote to prevent globbing
SC2086 - Line 6099: Double quote to prevent globbing
SC2086 - Line 6352: Double quote to prevent globbing
SC2086 - Line 6649: Double quote to prevent globbing
SC2086 - Line 6991: Double quote to prevent globbing
SC2086 - Line 7225: Double quote to prevent globbing
SC2086 - Line 7373: Double quote to prevent globbing
q.md
Actionlint Issues (9)
2-6. SC2086 - Line 4947: Multiple instances - Double quote to prevent globbing
SC2086 - Line 5122: Double quote to prevent globbing
SC2086 - Line 5583: Double quote to prevent globbing
SC2086 - Line 5836: Double quote to prevent globbing
SC2086 - Line 6129: Double quote to prevent globbing
tidy.md
Actionlint Issues (10)
1-5. SC2086 - Line 3923: Multiple instances - Double quote to prevent globbing
SC2086 - Line 4098: Double quote to prevent globbing
SC2086 - Line 4559: Double quote to prevent globbing
SC2086 - Line 4812: Double quote to prevent globbing
SC2086 - Line 5109: Double quote to prevent globbing
SC2086 - Line 5465: Double quote to prevent globbing
static-analysis-report.md
Actionlint Issues (2)
Questions or Concerns?
If you have questions about any findings or need help implementing fixes, please comment on this discussion.
Contributing
To help resolve these issues:
Let's work together to improve the security and code quality of our agentic workflows! 🚀
Beta Was this translation helpful? Give feedback.
All reactions