githubnext / githubnext/gh-aw-cao

[aw-doctor:compiler-security] Compiler strict-mode findings: 156 actionlint errors across 34 workflows (expression + shellcheck)

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

Description

Compiling `githubnext/gh-aw-cao` with `gh aw compile` in strict mode fails (exit code 1). All 44 workflow sources compiled to 44 lock files, but strict-mode `actionlint` reports **156 errors** across **34** generated `.lock.yml` files. No container/vulnerability-scanner (grype/syft/grant/poutine/runner-guard) findings were present in the report — all findings are `actionlint` categories `[expression]` and `[shellcheck]`.

**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**: `44`
- **Generated lock files checked**: `44`
- **Result**: `findings`

| Tool | Workflow(s) | Severity | Finding | Remediation |
|---|---|---|---|---|
| actionlint (expression) | 34 lock files (e.g. `aw-doctor`, `aw-failures-investigator`, `uk-ai-advisory*`) | unknown | `property "aw" is not defined` on job outputs object referencing `steps.*.outputs.aw` — 34 occurrences | Fix the `.md` source's expression referencing the missing `aw` output; check the step ID/output name actually produced |
| actionlint (expression) | ~25 lock files | unknown | `property "rollout_percent" is not defined` in dispatch input object `{aw_context, batch_label, central_repo, control_plane_run_url, correlation_id, safe_output_mode, safe_output_repo, target_repo}` | Add `rollout_percent` to the dispatch envelope schema/type or remove the reference in the `.md` source |
| actionlint (expression) | ~25 lock files | unknown | `property "max_repos" is not defined` in same dispatch input object | Add `max_repos` to the dispatch envelope schema/type or remove the reference |
| actionlint (expression) | ~9 lock files | unknown | `property "github-mcp-app-token" is not defined` on `{set-runtime-paths, setup}` outputs object | Correct output reference to the step that actually exposes `github-mcp-app-token` |
| actionlint (expression) | ~7 lock files | unknown | `property "correlation_id"`/`"control_plane_run_url"`/`"central_repo"` not defined in a differently-shaped dispatch object (missing these three fields while having `max_repos`/`rollout_percent`) | Reconcile the two differing dispatch-envelope shapes so all required fields are consistently defined |
| actionlint (expression) | 1 lock file | unknown | `property "safe-outputs-app-token" is not defined` on `{download-agent-output, setup, setup-agent-output-env}` outputs | Correct output reference to the step that exposes this token |
| actionlint (shellcheck SC2129) | 35 lock files | unknown (style) | "Consider using `{ cmd1; cmd2; } >> file` instead of individual redirects" | Refactor the generated shell script's redirect pattern in the `.md` source (style-only, non-blocking but required for strict-mode zero-error policy) |

Guard policy dry-run output for several workflows (`design-decision-gate.md`, `pr-reviewer.md`, etc.) plus one `push-to-pull-request-branch: target: "*"` advisory (no `required-title-prefix`/`required-labels`) were informational/advisory only and are not counted as blocking findings.

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

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

Representative sample lines from `report.txt` (833 total lines; truncated, no secret-like values observed):

```
.github/workflows/aw-doctor.lock.yml:478:29: error: [expression] property "github-mcp-app-token" is not defined in object type {set-runtime-paths: {...}; setup: {...}}
.github/workflows/aw-doctor.lock.yml:1187:29: error: [expression] property "aw" is not defined in object type {...event: object...}
.github/workflows/aw-doctor.lock.yml:1505:9: error: [shellcheck] shellcheck reported issue in this script: SC2129:style:7:1: Consider using { cmd1; cmd2; } >> file instead of individual redirects
.github/workflows/aw-doctor.lock.yml:1628:39: error: [expression] property "central_repo" is not defined in object type {aw_context, max_repos, rollout_percent, safe_output_mode, safe_output_repo, target_repo}
✗ actionlint failed
strict mode: actionlint found 156 errors in workflows - workflows must have no actionlint errors in strict mode
```

diff-stat.txt and git-status.txt were both empty (no working-tree changes from the compile-only run).

Control plane context

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

> Generated by [:shield: AW Doctor / Compiler Security](https://github.com/githubnext/gh-aw-cao/actions/runs/34097864983) · copilot · auto · 27.6 AIC · ⌖ 14.7 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 21, 2026, 8:01 AM UTC

Contributor guide

Open the contributing guide

Research direction

The affected inputs are .github/workflows/*.md, while the reported outputs are generated .lock.yml files; start by running gh aw compile in strict mode and inspecting report.txt. Correct only the source workflows and related schema or output references, then regenerate locks and confirm strict compilation plus the listed security checks complete with zero findings.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, markdown, shell
Domain
build-system, ci-cd, security
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.