githubnext / githubnext/gh-aw-cao
[aw-doctor:compiler-security] Compiler security scan: actionlint strict-mode errors in generated lock files
- Dominant language
- JavaScript
- Stars
- 3
- Forks
- 1
- Avg merge
- 49m
- Merged PRs (30d)
- 837
Description
Target `githubnext/gh-aw-cao` failed the gh-aw compiler's strict-mode validation (exit code 1). 45 workflow sources / 45 lock files were checked. actionlint found 2 errors across 2 generated lock files referencing an undefined `safe-outputs-app-token` step output; no other lint, container, license, or scanner findings were reported. Highest severity: compiler-blocking (strict mode) error, no security-scanner severity assigned.
**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**: `45`
- **Generated lock files checked**: `45`
- **Result**: `findings`
| Tool | Workflow/Image | Severity | Finding | Remediation |
|---|---|---|---|---|
| actionlint | self-care-dashboard-performance.lock.yml:2283 | unknown (strict-mode error) | `steps.safe-outputs-app-token.outputs.token` referenced but `safe-outputs-app-token` step is not defined in the `download-agent-output` job's step outputs type | Fix the workflow source (`.github/workflows/self-care-dashboard-performance.md`) so the referenced step id/output exists, or remove the stale reference, then recompile |
| actionlint | self-care-pages-health.lock.yml:2189 | unknown (strict-mode error) | Same undefined `safe-outputs-app-token` output reference in `download-agent-output` job | Fix the workflow source (`.github/workflows/self-care-pages-health.md`) analogously, then recompile |
Note: `git-status.txt` shows `self-care-pages-health.lock.yml` and `self-care.lock.yml` already have uncommitted diffs from this compile run (95 insertions, 35 deletions across 2 files), indicating the lock files are currently out of sync with their sources even independent of the actionlint errors.
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: 45
Compiled locks: 45
```
Git status:
```
M .github/workflows/self-care-pages-health.lock.yml
M .github/workflows/self-care.lock.yml
```
Diff stat:
```
.github/workflows/self-care-pages-health.lock.yml | 128 ++++++++++++++++------
.github/workflows/self-care.lock.yml | 2 +-
2 files changed, 95 insertions(+), 35 deletions(-)
```
actionlint output (excerpt):
```
.github/workflows/self-care-dashboard-performance.lock.yml:2283:26: error: [expression] property "safe-outputs-app-token" is not defined in object type {download-agent-output: {conclusion: string; outcome: string; outputs: {string => string}}; setup: {conclusion: string; outcome: string; outputs: {string => string}}; setup-agent-output-env: {conclusion: string; outcome: string; outputs: {string => string}}}
2283 | GIT_TOKEN: ${{ steps.safe-outputs-app-token.outputs.token || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
.github/workflows/self-care-pages-health.lock.yml:2189:26: error: [expression] property "safe-outputs-app-token" is not defined in object type {download-agent-output: {conclusion: string; outcome: string; outputs: {string => string}}; setup: {conclusion: string; outcome: string; outputs: {string => string}}; setup-agent-output-env: {conclusion: string; outcome: string; outputs: {string => string}}}
2189 | GIT_TOKEN: ${{ steps.safe-outputs-app-token.outputs.token || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
✗ actionlint failed
strict mode: actionlint found 2 errors in workflows - workflows must have no actionlint errors in strict mode
```
Guard policy dry-run and push-to-pull-request-branch informational notices were emitted for several workflows but are advisory (not errors) and not included as findings above.
Control plane context
- Correlation ID: `34148729873-72`
- Central repository: `githubnext/gh-aw-cao`
- Control plane run URL: https://github.com/githubnext/gh-aw-cao/actions/runs/34148729873
> Generated by [:shield: AW Doctor / Compiler Security](https://github.com/githubnext/gh-aw-cao/actions/runs/34149017919) · copilot · auto · 22.1 AIC · ⌖ 9.94 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, 5:52 PM UTC
Contributor guide
Research direction
Start with .github/workflows/self-care-dashboard-performance.md and .github/workflows/self-care-pages-health.md, then use the gh-aw MCP server's compile tool with strict validation. Trace the undefined safe-outputs-app-token output references and fix the workflow sources without editing generated lock files. Done means recompilation and the required compiler, actionlint, and security scans pass cleanly.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github-actions
- Domain
- ci-cd, devops
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 52/100