githubnext / githubnext/gh-aw-cao

[cao-evolution:compiler-security] gh-aw compiler & security scan findings: 65 workflows, exit code 1 (95 actionlint, 3,741 zizmor, 550 CVEs, 1,246 license finding

Closed
#11,938 0 comments 0 reactions 0 assignees View on GitHub
cao-evolution cao-evolution:compiler-security
Dominant language
JavaScript
Stars
3
Forks
1
Avg merge
49m
Merged PRs (30d)
837

Description

Compiling all 65 `githubnext/gh-aw-cao` workflows found the compiler run exited **non-zero (1)**. Findings span 5 categories: **95 actionlint issues** (92 shellcheck, 3 expression errors), **zizmor scanner** (34 Critical, 237 High, 2,989 Medium, 481 Low, 401 Informational — dominated by `secrets-outside-env` and `github-app` dangerous-token-use rules), **runner-guard** (1 Medium excessive-permissions on `pull_request_target`/`issue_comment`-triggered workflow), **grype container CVEs** (34 Critical, 131 High across 9 images), and **grant license policy** (1,246 findings, mostly transitive npm packages in the gh-aw Node/firewall images). Highest severity supported by tooling: **Critical** (zizmor secrets-outside-env/CVE-2026-63073 and others in `alpine`/firewall images). No functional workflow-source regressions were found — the only working-tree diff is expected cron-scatter timestamps in lock files.

**Action:** Assign this issue to Copilot using **Agent prompt** below; review its pull request and merge only after the full compiler and security scan passes.

Failure details

- **Target repository**: `githubnext/gh-aw-cao`
- **Compiler exit code**: `1`
- **Workflow sources checked**: `65`
- **Generated lock files checked**: `65`
- **Result**: `findings`

| Tool | Workflow / Image | Severity | Finding | Remediation |
|---|---|---|---|---|
| actionlint (shellcheck) | 15+ `.lock.yml` files (e.g. `dashboard-authoring-corpus.lock.yml`) | error | 92 shellcheck issues (mostly SC1003 unescaped quotes, SC2034 unused vars) in embedded scripts | Regenerate scripts from `.md` sources fixing quoting/unused-var patterns; recompile |
| actionlint (expression) | `optimization-token-optimizer.lock.yml`, `self-care-dashboard-performance.lock.yml`, `self-care-pages-health.lock.yml` | error | Undefined properties referenced in `${{ }}` expressions (`token_eligible`, `safe-outputs-app-token`) | Fix expression references in workflow `.md` sources to match actual step outputs; recompile |
| zizmor | 30+ workflows | Medium (2,989 instances) | `secrets-outside-env`: secrets referenced without a dedicated `environment:` | Move secret references into a scoped `environment:` block |
| zizmor | e.g. `cao-evolution-catalog-advisor.lock.yml`, `cao-evolution-compiler-security.lock.yml`, `cao-evolution-efficiency.lock.yml` (64 instances) | High | `github-app`: dangerous use of `actions/create-github-app-token` (token scope/exposure risk) | Review app-token step permissions/least-privilege scoping per zizmor guidance |
| zizmor | many workflows (392 instances) | Informational | `anonymous-definition`: workflow/action definitions without a `name:` | Add `name:` fields where practical |
| zizmor | many workflows (386 instances) | Medium | `undocumented-permissions`: `permissions:` blocks without explanatory comments | Add inline comments justifying each granted permission |
| zizmor | `dashboard-authoring-corpus.lock.yml`, `design-decision-gate.lock.yml`, `docs-explanatory-diagrams.lock.yml` +36 (39 instances) | Medium | `artipacked`: credential persistence through uploaded artifacts | Ensure `actions/checkout` doesn't persist credentials into artifacts |
| zizmor | 9 workflows | Low | `adhoc-packages`: ad-hoc package installs outside lockfile-pinned steps | Pin package installs via manifest/lockfile where feasible |
| zizmor | `pr-reviewer.lock.yml`, `repo-assist-pr-upkeep.lock.yml`, `self-care-primer-brand-checker.lock.yml`, `self-care.lock.yml` (11 instances) | Informational/Low | `template-injection`: code injection via template expansion | Use intermediate env vars instead of directly interpolating untrusted values into scripts |
| zizmor | `eslint-rules*.lock.yml`, `optimization-ai-credit-*.lock.yml`, `self-care-docs-build-time-investigator.lock.yml` (9 instances) | Low | `obfuscation`: obfuscated usage of GitHub Actions features | Simplify expression/step usage flagged by zizmor |
| runner-guard | `agentic_commands.yml` | Medium (RGS-005) | Write-level `permissions:` on a job triggered by `pull_request_target`/`issue_comment`-style event | Reduce to read-only permissions or move privileged steps to a separate trusted-trigger job |
| grype | `alpine`, `ghcr.io/github/gh-aw-firewall/agent`, `.../api-proxy`, `.../cli-proxy`, `.../squid`, `ghcr.io/github/gh-aw-mcpg`, `ghcr.io/github/gh-aw-node`, `ghcr.io/github/github-mcp-server`, `node` | Critical/High | 550 CVE findings (34 Critical, 131 High) across 9 base/tool images — e.g. `CVE-2026-63073`/`CVE-2026-18798`/`CVE-2026-63076` in `libcrypto3`/`libssl3` on `alpine:latest` | Rebuild/pull updated base images (e.g. `alpine` libssl3/libcrypto3 → 3.5.8-r0); bump pinned image digests |
| grant | 9 container images (npm/transitive deps) | error (license policy) | 1,246 license policy findings, largely permissively-licensed (MIT/ISC/Apache-2.0) transitive npm packages inside firewall/Node images flagged under strict mode | Review `.poutine.yml`/grant allowlist for known-safe permissive licenses, or update policy scope |

Agent prompt

1. Assign this issue to Copilot.
2. Configure its MCP client to launch `gh aw mcp-server` over stdio from the target repository, then give it the prompt below. Require the server's `fix` and `compile` tools; never allow direct edits to generated `.lock.yml` files.
3. Review the resulting pull request and require the same full compiler and security scan to pass before merge. If a finding needs human action, require the agent to stop and explain it.

**Agent prompt**

Fix the reported gh-aw compiler and security findings in this repository. Change only `.github/workflows/*.md` sources and directly related files; never edit generated `.lock.yml` files. Use the gh-aw MCP server's `fix` and `compile` tools, rerunning compilation with strict validation, model checks, actionlint, shellcheck, yamllint, zizmor, poutine, runner-guard, grant, grype, and syft until clean. Review generated lock-file diffs, preserve existing behavior, and stop with a concise explanation if a finding cannot be fixed safely.

Raw evidence

Compiler summary:
```
Target: githubnext/gh-aw-cao
Exit code: 1
Workflow sources: 65
Compiled locks: 65
```

Working-tree diff (from `git-status.txt`): only 15 `.lock.yml` cron-scatter timestamp changes plus a new `.poutine.yml`; no functional regressions detected.

Totals from report: 1,612 actionlint/shellcheck-style `error:` lines, 3,074 `warning:` lines, 550 CVE mentions, 1,246 license-policy findings (`grant failed: strict mode: grant found 1246 license policy finding(s) in container images`).

Full raw report (1,636,018 bytes, 27,599 lines) and per-tool digest are retained in the workflow run's `/tmp/gh-aw/agent/cao-evolution-compiler-security/report.txt` evidence artifact for detailed review; not reproduced in full here due to size.

Control plane context

- Correlation ID: `35044423050-118`
- Central repository: `githubnext/gh-aw-cao`
- Control plane run URL: `https://github.com/githubnext/gh-aw-cao/actions/runs/35044423050`

> Generated by [:shield: CAO Evolution / AW Compiler Security](https://github.com/githubnext/gh-aw-cao/actions/runs/35044862900) · copilot · auto · 41.9 AIC · ⌖ 9.39 AIC · ⊞ 12.7K · [◷](https://github.com/search?q=repo%3Agithubnext%2Fgh-aw-cao+is%3Aissue+%22gh-aw-workflow-call-id%3A+githubnext%2Fgh-aw-cao%2Fcao-evolution-compiler-security%22&type=issues)
> - [x] expires on Sep 30, 2026, 1:59 AM UTC

Contributor guide

Open the contributing guide

Research direction

Start with the 65 .github/workflows/*.md sources and the gh aw MCP server's fix and compile tools; do not edit generated .lock.yml files. Run the compiler and the listed validation and security scans, then review generated lock-file diffs. Done means the full compiler and security scan passes, or any unsafe finding is clearly documented.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, github-actions, javascript
Domain
ci-cd, devops, security, tooling
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.