Static Analysis Report - November 7, 2025 #3439
Closed
Replies: 1 comment
-
|
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 7, 2025
Executive Summary
This report presents findings from a comprehensive static analysis scan of all agentic workflows in the gh-aw repository. The analysis was performed using actionlint (with integrated shellcheck). Two additional security tools (zizmor and poutine) were configured but are not available in the GitHub Actions environment.
Key Finding: The vast majority of detected issues (99.4%) are false positives caused by shellcheck analyzing markdown documentation within heredoc blocks as if it were executable code.
Analysis Overview
Findings by Severity
Detailed Findings
1. SC2006: Legacy Backticks (Style)
Count: 675 occurrences⚠️ False Positive
Affected Workflows: 71 workflows
Severity: Style
Status:
Description: Shellcheck detects backticks in heredoc content and warns about "legacy backticks" even though these are within markdown documentation, not executable code.
Example:
The backticks around
/tmp/gh-aw/agent/in the markdown text trigger SC2006.Impact: None - this is documentation text, not code.
Affected Workflows: Nearly all workflows (archie, artifacts-summary, audit-workflows, blog-auditor, brave, changeset, ci-doctor, cli-version-checker, commit-changes-analyzer, copilot-agent-analysis, copilot-pr-nlp-analysis, copilot-pr-prompt-analysis, copilot-session-insights, craft, daily-doc-updater, daily-firewall-report, daily-news, daily-perf-improver, daily-repo-chronicle, daily-test-improver, dependabot-go-checker, dev, dev-hawk, dev.firewall, developer-docs-consolidator, dictation-prompt, duplicate-code-detector, example-permissions-warning, example-workflow-analyzer, firewall, github-mcp-tools-report, go-logger, go-pattern-detector, grumpy-reviewer, instructions-janitor, issue-classifier, lockfile-stats, mcp-inspector, mergefest, notion-issue-summary, pdf-summary, plan, poem-bot, pr-nitpick-reviewer, prompt-clustering-analysis, python-data-charts, q, repo-tree-map, research, safe-output-health, schema-consistency-checker, scout, security-fix-pr, semantic-function-refactor, smoke-claude, smoke-codex, smoke-copilot, smoke-detector, static-analysis-report, technical-doc-writer, test-claude-oauth-workflow, test-jqschema, test-manual-approval, test-ollama-threat-detection, test-post-steps, test-secret-masking, test-svelte, tidy, unbloat-docs, video-analyzer, weekly-issue-summary)
2. SC2287: Command Name Ending with '/' (Error)
Count: 244 occurrences⚠️ False Positive
Affected Workflows: 71 workflows
Severity: Error
Status:
Description: Shellcheck interprets slashes in markdown paths (like
/tmp/) as command names when analyzing heredoc content.Example:
The path
/tmp/in documentation triggers SC2287.Impact: None - this is documentation text, not code.
Affected Workflows: Same 71 workflows as SC2006
3. SC2002: Useless Cat (Style)
Count: 3 occurrences
Affected Workflows: 3 workflows
Severity: Style
Status: ✅ Minor Issue (Valid but Low Priority)
Description: Using
cat file | commandinstead ofcommand < fileis less efficient.Affected Workflows:
Impact: Minimal performance impact in workflow context.
Recommendation: Low priority fix - could be optimized but not critical.
4. SC2215: Flag Used as Command Name (Warning)
Count: 2 occurrences⚠️ Requires Investigation
Affected Workflows: 2 workflows
Severity: Warning
Status:
Description: A flag is being used as a command name, possibly due to a bad line break.
Affected Workflows:
Impact: Potentially a real issue that should be investigated.
Recommendation: Review the specific code locations to determine if this is a genuine syntax error.
Complete Workflow List with Issue Counts
Root Cause Analysis
The overwhelming majority of findings (919 out of 925, or 99.4%) are false positives stemming from a single root cause:
The gh-aw compiler generates steps that inject documentation into AI prompts using heredocs containing markdown text. Shellcheck analyzes the heredoc content (which includes backticks for code formatting and slashes in file paths) as if it were executable shell code.
Example from Generated Workflow
In this example:
/tmp/gh-aw/agent/trigger SC2006/tmp/triggers SC2287Recommendations
Immediate Actions
Document Known False Positives: Record that SC2006 and SC2287 findings in heredoc blocks are expected and not security issues.
Investigate SC2215 Warnings: Review the 2 instances in
blog-auditorandunbloat-docsworkflows to ensure they're not genuine syntax errors.Optional SC2002 Cleanup: Consider fixing the 3 "useless cat" instances in copilot analysis workflows as a code quality improvement (low priority).
Long-term Solution
The proper fix should be implemented in the gh-aw compiler itself:
Option A: Add Shellcheck Suppression
Option B: Use Quoted Heredoc Delimiters
Option C: Configure actionlint globally via
.actionlintrc.yml:Why Not Fix Now?
Missing Tools Analysis
Zizmor (Security Scanner)
Status: Not available in environment
Purpose: GitHub Actions security scanner
Impact: Unable to scan for:
Poutine (Supply Chain Scanner)
Status: Not available in environment
Purpose: Supply chain security analysis
Impact: Unable to scan for:
Recommendation
Install zizmor and poutine in the GitHub Actions runner environment to enable comprehensive security scanning:
Statistical Summary
Conclusion
This static analysis scan reveals that the gh-aw repository workflows are structurally sound with no critical security or code quality issues. The vast majority of findings (99.4%) are false positives caused by shellcheck misinterpreting markdown documentation within heredocs as executable code.
Key Takeaways:
Next Steps:
Scan Date: November 7, 2025
Tools Used: actionlint (with shellcheck)
Scan Duration: ~5 minutes
Analysis Stored:
/tmp/gh-aw/cache-memory/security-scans/2025-11-07.jsonBeta Was this translation helpful? Give feedback.
All reactions