githubnext / githubnext/gh-aw-cao

[aw-doctor:compiler-security] actionlint strict-mode failures across 33 workflow lock files (152 errors)

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

Description

Strict-mode compilation of all 43 gh-aw workflows in `githubnext/gh-aw-cao` failed: actionlint reported 152 errors across 33 generated lock files (compiler exit code 1). No vulnerable container images, license issues, or later-stage security-scanner findings were observed because the pipeline stopped at the actionlint step before zizmor/poutine/runner-guard/grype/syft ran. All findings are actionlint validation errors (undefined-property expressions and one shellcheck style warning), not exploitable vulnerabilities. Highest-impact category: repeated `github.aw`/`github.event.inputs.*` (`max_repos`, `rollout_percent`, `central_repo`, `control_plane_run_url`, `correlation_id`) and `steps.github-mcp-app-token` property-not-defined errors, indicating a shared workflow-source template issue affecting most CAO workflows.

**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` (33 with findings)
- **Result**: `findings`

| Tool | Workflow(s) | Severity | Finding | Remediation |
|------|-------------|----------|---------|-------------|
| actionlint | 11 lock files (e.g. `aw-doctor`, `aw-failures-investigator`, `uk-ai-advisory-operational-resilience`) | unknown | `property "github-mcp-app-token" is not defined` — step output referenced before/without the corresponding step ID in scope | Ensure the `github-mcp-app-token` step ID exists in the same job before referencing `steps.github-mcp-app-token.outputs.token` |
| actionlint | 33 lock files | unknown | `property "aw" is not defined` on `github.aw.import-inputs.role` — `github.aw` is not a recognized GitHub context property | Replace `github.aw.import-inputs.role` with a supported context (e.g. a step output or `env` variable) in the shared control/orchestrator template |
| actionlint | 26 lock files | unknown | `property "max_repos" is not defined` on `github.event.inputs.max_repos` (workflow_dispatch inputs missing this field) | Add `max_repos` to the `workflow_dispatch.inputs` schema of the affected workflow sources, or remove the reference if unused |
| actionlint | 26 lock files | unknown | `property "rollout_percent" is not defined` on `github.event.inputs.rollout_percent` | Add `rollout_percent` to `workflow_dispatch.inputs`, or remove the reference |
| actionlint | 7 lock files | unknown | `property "central_repo"` / `control_plane_run_url"` / `"correlation_id"` not defined on `github.event.inputs.*` | Add these fields to `workflow_dispatch.inputs` for the affected workflows, or remove unused references |
| actionlint | 1 lock file | unknown | `property "safe-outputs-app-token"` not defined | Verify the step ID producing this output exists and is spelled consistently |
| actionlint (shellcheck SC2129) | 34 lock files | style | Multiple individual `>> file` redirects in a `run:` block instead of a single grouped redirect | Group the redirects with `{ cmd1; cmd2; } >> file` in the shared shell-script template used by these workflows |

Deduplicated: the same 6 property-not-defined patterns and 1 shellcheck style pattern account for all 152 errors, repeated across generated lock files that share common `.md` source templates (likely `shared/control.md` and its dependents).

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

```
i Using actionlint 1.7.12
i Running actionlint (with shellcheck/pyflakes) on 43 files
.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-token: ${{ steps.github-mcp-app-token.outputs.token || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
.github/workflows/aw-doctor.lock.yml:1187:29: error: [expression] property "aw" is not defined in object type {action: string; ...}
if: ${{ always() && github.aw.import-inputs.role == 'orchestrator' }}
.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:1628:39: error: [expression] property "central_repo" is not defined ...
.github/workflows/aw-doctor.lock.yml:1629:42: error: [expression] property "control_plane_run_url" is not defined ...
.github/workflows/aw-doctor.lock.yml:1630:35: error: [expression] property "correlation_id" is not defined ...
... (repeats across 33 lock files; 152 errors total)
✗ actionlint failed
strict mode: actionlint found 152 errors in workflows - workflows must have no actionlint errors in strict mode
```

Diff summary: no working-tree changes were produced by the deterministic compile (dry-run); `git-status.txt` and `diff-stat.txt` were empty. No credential-like values were present in the captured output.

Control plane context

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

> Generated by [:shield: AW Doctor / Compiler Security](https://github.com/githubnext/gh-aw-cao/actions/runs/34052846578) · copilot · auto · 44.5 AIC · ⌖ 7.84 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, 6:53 PM UTC

Contributor guide

Open the contributing guide

Research direction

Start with the shared workflow sources, especially shared/control.md and its dependents under .github/workflows/*.md; do not edit generated .lock.yml files. Use the gh-aw MCP server's fix and compile tools with strict validation, then run the listed compiler and security scans. Done means the generated lock files compile cleanly with no actionlint or shellcheck findings and the full scan passes.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, markdown, shell
Domain
ci-cd, devops, security, tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.