githubnext / githubnext/gh-aw-cao

[aw-doctor:compiler-security] actionlint strict-mode failures for safe-outputs-app-token step reference (2 workflows)

Closed
#5,076 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` (target sha `b43ef0a449f2eec56c3ed5f7df6b8329d31bf15e`) failed with exit code 1. actionlint (strict mode) reported 2 errors, both the same underlying issue in different workflows: an undefined `steps.safe-outputs-app-token` property is referenced in a `GIT_TOKEN` expression, but that step id does not exist in the referencing job's context. No container/license/other scanner findings were reached because actionlint failed first. Highest severity: actionlint hard error (blocks strict-mode compilation).

**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 | Severity | Finding | Remediation |
|---|---|---|---|---|
| actionlint | `.github/workflows/self-care-dashboard-performance.lock.yml:2283` | error | `steps.safe-outputs-app-token.outputs.token` referenced in `GIT_TOKEN` expression, but `safe-outputs-app-token` is not a defined step id in that job's context | Fix the `.md` source so the `GIT_TOKEN` expression only references step ids that exist in the job, or add the missing step; recompile |
| actionlint | `.github/workflows/self-care-pages-health.lock.yml:2189` | error | Same pattern: `steps.safe-outputs-app-token.outputs.token` undefined in job context | Same fix, applied to this workflow's `.md` source |

Non-blocking, informational-only items also surfaced (not actionable findings, no fix required):
- Guard policy dry-run reports for several workflows note `allowed-repos: all (default)` / `min-integrity: approved` — informational only.
- `pr-sous-chef.md` uses `push-to-pull-request-branch: target: "*"` with no `required-title-prefix`/`required-labels` constraint — a hardening suggestion, not a hard failure.
- An `includes` entry `.github/workflows/aw.json` in `target/aw.yml` is ignored by the compiler (unsupported include path) — informational only.

Uncommitted lock-file drift was also observed from a prior partial compile attempt (not part of the reported findings, will be superseded once the actionlint fix is applied and locks are regenerated):
```
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
```

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. Specifically: `self-care-dashboard-performance.md` and `self-care-pages-health.md` reference `steps.safe-outputs-app-token.outputs.token` in a `GIT_TOKEN` environment expression, but actionlint (strict mode) reports that step id is not defined in that job's context — locate the referencing job and correct the expression (either reference the correct step id that actually emits the token, or remove/replace the reference) so actionlint passes with zero errors. Review generated lock-file diffs, preserve existing behavior, and stop with a concise explanation if a finding cannot be fixed safely.

Raw evidence

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

actionlint output (head of `report.txt`):
```
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}}}

📖 https://github.com/rhysd/actionlint/blob/main/docs/checks.md#check-syntax-expression
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}}}

📖 https://github.com/rhysd/actionlint/blob/main/docs/checks.md#check-syntax-expression
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
```

No token-like or credential-like values were present in the tool output.

Control plane context

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

(/body)
(labels)security,compiler(/labels)
(/safeoutputs-create_issue)

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

Contributor guide

Open the contributing guide

Research direction

Inspect .github/workflows/self-care-dashboard-performance.md and self-care-pages-health.md, comparing each GIT_TOKEN expression with the step ids in its job; do not edit generated .lock.yml files. Run the full strict compiler and security scan, and consider the issue done when actionlint and all required checks pass with regenerated locks showing only expected changes.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions
Domain
ci-cd, security, tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
72/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.