githubnext / githubnext/gh-aw-cao

[aw-doctor:compiler-security] Compiler Security Scan: actionlint strict-mode failures in self-care workflows

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

Description

Target `githubnext/gh-aw-cao`: compiler exited with code 1. 45 workflow sources compiled, 2 actionlint strict-mode errors found referencing an undefined `safe-outputs-app-token` step-output expression in two lock files, plus 1 policy warning (unrestricted `push-to-pull-request-branch` target) and drift in 3 generated lock files vs. committed versions.

**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 (strict) | `self-care-dashboard-performance.lock.yml:2283` | error | `steps.safe-outputs-app-token.outputs.token` referenced but no step with id `safe-outputs-app-token` exists in the enclosing job's context type; strict mode requires zero actionlint errors | Fix the workflow's `.md` source (likely a shared/imported fragment) so the `safe-outputs-app-token` step is actually declared in the job before this expression is used, or remove the reference; recompile |
| actionlint (strict) | `self-care-pages-health.lock.yml:2189` | error | Same undefined `safe-outputs-app-token` property reference | Same as above |
| gh-aw guard policy (info) | `pr-sous-chef.md` (push-to-pull-request-branch) | unknown | `target: "*"` allows pushing to any PR branch with no `required-title-prefix`/`required-labels` constraint | Add `required-title-prefix:` or `required-labels:` to scope which PRs can receive pushes |
| gh-aw compile drift | `self-care-data-acquisition-audit.lock.yml`, `self-care-pages-health.lock.yml`, `self-care.lock.yml` | unknown | Recompiling from current `.md` sources produces a diff vs. the committed lock files (96 insertions, 36 deletions across 3 files) | Recompile with `gh aw compile` (schedule seed `githubnext/gh-aw-cao`) and commit the regenerated lock files alongside any source fix so locks match sources |

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 (modified lock files):
M .github/workflows/self-care-data-acquisition-audit.lock.yml
M .github/workflows/self-care-pages-health.lock.yml
M .github/workflows/self-care.lock.yml

diff stat:
.../self-care-data-acquisition-audit.lock.yml | 2 +-
.github/workflows/self-care-pages-health.lock.yml | 128 +++++++++++++++------
.github/workflows/self-care.lock.yml | 2 +-
3 files changed, 96 insertions(+), 36 deletions(-)

actionlint findings:
.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: {...}; setup: {...}; setup-agent-output-env: {...}}
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: {...}; setup: {...}; setup-agent-output-env: {...}}
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

Also noted (info, non-blocking): push-to-pull-request-branch target "*" in pr-sous-chef.md has no required-title-prefix/required-labels constraint.
```

Control plane context

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

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

Contributor guide

Open the contributing guide

Research direction

Start with the referenced generated files, especially self-care-dashboard-performance.lock.yml:2283 and self-care-pages-health.lock.yml:2189, then trace their sources under .github/workflows/*.md; also inspect pr-sous-chef.md and the three lock files with drift. Run gh aw compile with strict validation and review the generated diffs. Done means the undefined step-output errors, drift, and required security scans are clean without directly editing lock files.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.