githubnext / githubnext/gh-aw-cao

[aw-doctor:compiler-security] githubnext/gh-aw-cao — actionlint strict-mode failures in self-care-dashboard-performance and self-care-pages-health workflows

Closed
#4,810 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

Compiling all 45 gh-aw workflows in `githubnext/gh-aw-cao` (strict mode) exited with code 1: actionlint reported 2 errors, both the same root cause — a `GIT_TOKEN` expression referencing `steps.safe-outputs-app-token.outputs.token`, a step id that does not exist in the generated job's step-outputs type, in `self-care-dashboard-performance.lock.yml` and `self-care-pages-health.lock.yml`. One additional compiler warning flags an overly broad `push-to-pull-request-branch` policy (`target: "*"` with no `required-title-prefix`/`required-labels`) in `pr-sous-chef.md`, and one informational warning notes the root `aw.yml` `includes` list references `.github/workflows/aw.json`, which is not a recognized includes source. Highest severity: actionlint **error** (strict mode compile failure — blocks lock-file regeneration).

**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` (line 2283) | error | `GIT_TOKEN` expression references `steps.safe-outputs-app-token.outputs.token`, a step id absent from the job's generated step-output type (only `download-agent-output`, `setup`, `setup-agent-output-env` are defined) | Fix the source workflow (`self-care-dashboard-performance.md`) and/or the shared safe-outputs template so the GIT_TOKEN fallback expression references a step id that actually exists after compilation; recompile until actionlint reports 0 errors |
| actionlint | `self-care-pages-health.lock.yml` (line 2189) | error | Same finding: `steps.safe-outputs-app-token.outputs.token` referenced but undefined in job step-outputs type | Same remediation, applied to `self-care-pages-health.md` |
| gh-aw compiler (guard dry-run) | `pr-sous-chef.md` | unknown (informational) | `push-to-pull-request-branch: target: "*"` allows pushing to any PR branch with no additional constraints | Add `required-title-prefix:` or `required-labels:` to scope which PRs can receive pushes |
| gh-aw compiler | root `aw.yml` (`includes` list) | unknown (informational) | Includes entry `.github/workflows/aw.json` ignored — not a recognized workflow/skill/agent/source-destination includes entry | Update the `includes` list in `aw.yml` to reference a valid workflow file, skill directory, agent markdown file, or source/destination mapping instead of `aw.json` |

Note: `git-status.txt`/`diff-stat.txt` show the compile step regenerated `self-care-pages-health.lock.yml` and `self-care.lock.yml` (95 insertions / 35 deletions) as part of this dry-run/scan; these are expected artifacts of recompilation and not separate 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

```
i Using actionlint 1.7.12
i Running actionlint (with shellcheck/pyflakes) on 45 files
.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
```

```
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(-)
```

Other compiler output consisted of routine guard policy dry-run reports (allowed-repos: all, min-integrity: approved) for each workflow, plus the `push-to-pull-request-branch` and `aw.yml` includes warnings quoted in the findings table above. No token or credential values were present in the captured output.

Control plane context

- **Correlation ID**: 34144570001-71
- **Central repository**: githubnext/gh-aw-cao
- **Control plane run URL**: https://github.com/githubnext/gh-aw-cao/actions/runs/34144570001

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

Contributor guide

Open the contributing guide

Research direction

Start with .github/workflows/self-care-dashboard-performance.md and self-care-pages-health.md, then inspect the shared safe-outputs template and generated lock-file diffs without editing the lock files. Use the gh aw MCP server's fix and compile tools, including strict validation and the listed security scans. Done means the source changes regenerate clean lock files and the full compiler reports zero actionlint errors and passes the required scans.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.