githubnext / githubnext/gh-aw-cao
[aw-doctor:compiler-security] Compiler security scan: 152 actionlint errors block strict-mode compilation (33 lock files)
- Dominant language
- JavaScript
- Stars
- 3
- Forks
- 1
- Avg merge
- 49m
- Merged PRs (30d)
- 837
Description
gh-aw compiled all 43 workflow sources in `githubnext/gh-aw-cao` (target repo) but **failed strict-mode validation** with exit code 1: actionlint reported **152 errors** across **33 generated `.lock.yml` files**, so downstream scanners (zizmor, poutine, grype, syft, grant, runner-guard, yamllint) never ran. Errors fall into two categories: (1) 118 "undefined property" expression errors from `github.event.inputs.*`/`github.aw.*` references that don't match the declared input schema in imported control-plane snippets (e.g. `max_repos`, `rollout_percent`, `central_repo`, `control_plane_run_url`, `correlation_id`, `github-mcp-app-token`, `github.aw`), and (2) 34 shellcheck SC2129 style findings (repeated `>>` redirects) in generated run steps. No vulnerable images, license, or scanner findings were produced since the pipeline stopped at actionlint. Highest-severity supported finding: actionlint hard errors (compile-blocking).
**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**: `43`
- **Generated lock files checked**: `43`
- **Result**: `findings`
| Tool | Workflow/Image | Severity | Finding | Remediation |
|---|---|---|---|---|
| actionlint | 33 `.lock.yml` files (incl. `aw-doctor`, `aw-failures-investigator`, `aw-maintenance-compiler-security`, `uk-ai-advisory`, others) | error | `property "aw" is not defined` — `if: ${{ always() && github.aw.import-inputs.role == 'orchestrator' }}` references `github.aw`, which actionlint's schema doesn't recognize (33 occurrences) | Fix in the `.md` source (likely shared `control.md` import) that emits this conditional; use a schema-recognized context or an intermediate step output instead of `github.aw.*` |
| actionlint | same set | error | `property "github-mcp-app-token" is not defined` — step ID `github-mcp-app-token` referenced before/without matching outputs in the composite job context (11 occurrences) | Correct the step-id reference or ensure the referenced step exists in the same job scope in the `.md` source |
| actionlint | dispatch-worker workflows (`aw-failures-investigator`, `aw-maintenance-compiler-security`, `uk-ai-advisory`, others) | error | `property "max_repos"`/`"rollout_percent"` not defined on `github.event.inputs` (26 occurrences each) — dispatched worker inputs reference orchestrator-only fields | Align `workflow_dispatch.inputs` schema with the fields actually referenced, or gate these references behind the correct input set per workflow role |
| actionlint | dispatch-worker workflows | error | `property "central_repo"` / `"control_plane_run_url"` / `"correlation_id"` not defined on `github.event.inputs` (7 occurrences each) | Add these fields to `workflow_dispatch.inputs` in the relevant `.md` source(s), or remove the reference if unused |
| actionlint | `aw-maintenance-compiler-security.lock.yml` | error | `property "safe-outputs-app-token"` not defined (1 occurrence) | Same class of fix — align token/step reference with declared context |
| shellcheck (via actionlint) | 33 `.lock.yml` files, various `run:` steps | style (SC2129) | Repeated individual `>>` redirects instead of a single grouped `{ ... } >> file` block (34 occurrences) | Update the shared script templates in the `.md` sources to group appends, e.g. `{ cmd1; cmd2; } >> "$GITHUB_OUTPUT"` |
Other scanners (yamllint, zizmor, poutine, runner-guard, grant, grype, syft) did not run because the pipeline stops at the first failing validation stage (actionlint); no evidence of container/license findings is available in this run.
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: 43
Compiled locks: 43
```
Final report lines:
```
✗ actionlint failed
strict mode: actionlint found 152 errors in workflows - workflows must have no actionlint errors in strict mode
```
Sample errors (representative, full list has 152 entries across 33 files):
```
.github/workflows/aw-doctor.lock.yml:478:29: error: [expression] property "github-mcp-app-token" is not defined ...
.github/workflows/aw-doctor.lock.yml:1187:29: error: [expression] property "aw" is not defined ...
.github/workflows/aw-doctor.lock.yml:1505:9: error: [shellcheck] SC2129:style: Consider using { cmd1; cmd2; } >> file instead of individual redirects
.github/workflows/aw-doctor.lock.yml:1648:39: error: [expression] property "central_repo" is not defined ...
.github/workflows/aw-doctor.lock.yml:1649:42: error: [expression] property "control_plane_run_url" is not defined ...
.github/workflows/aw-doctor.lock.yml:1650:35: error: [expression] property "correlation_id" is not defined ...
```
No token-like or credential-like values were present in the tool output.
`git-status.txt` and `diff-stat.txt` were both empty (no working-tree changes from the compile run).
Control plane context
- Correlation ID: `34017527926-37`
- Central repository: `githubnext/gh-aw-cao`
- Control plane run URL: `https://github.com/githubnext/gh-aw-cao/actions/runs/34017527926`
> Generated by [:shield: AW Doctor / Compiler Security](https://github.com/githubnext/gh-aw-cao/actions/runs/34017717472) · copilot · auto · 31.1 AIC · ⌖ 7.91 AIC · ⊞ 14.2K · [◷](https://github.com/search?q=repo%3Agithubnext%2Fgh-aw-cao+is%3Aissue+%22gh-aw-workflow-call-id%3A+githubnext%2Fgh-aw-cao%2Faw-maintenance-compiler-security%22&type=issues)
> - [x] expires on Sep 20, 2026, 7:00 AM UTC
Contributor guide
Research direction
Work only in the `.github/workflows/*.md` sources and directly related files; do not edit generated `.lock.yml` files. Start by configuring `gh aw mcp-server` and use its `fix` and `compile` tools with strict validation. Done means the compiler and all listed security and quality scanners pass, with generated lock-file diffs reviewed and existing behavior preserved.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github-actions, markdown, shell
- Domain
- ci-cd, devtools, security
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 28/100