githubnext / githubnext/gh-aw-cao
[aw-maintenance:compiler-security] Compiler/security findings: github/gh-aw-mcpg (actionlint strict errors in release.md)
- Dominant language
- JavaScript
- Stars
- 3
- Forks
- 1
- Avg merge
- 49m
- Merged PRs (30d)
- 837
Description
Compiling all 36 gh-aw workflow sources in `github/gh-aw-mcpg` succeeded for lock generation (36/36) but **failed strict validation** with exit code 1: actionlint found 5 shellcheck errors in `release.lock.yml`, plus several lower-severity warnings (missing permission, unsafe `/tmp/` usage, missing concurrency discriminator, missing wildcard PR-branch fetch). Highest severity: actionlint strict-mode errors (blocking). Recommended action: fix the shell script in `release.md` that generates the failing step, then re-run the full validation/lint/security suite until clean.
- **Target repository**: `github/gh-aw-mcpg`
- **Compiler exit code**: `1`
- **Workflow sources checked**: `36`
- **Generated lock files checked**: `36`
- **Result**: `findings`
### Findings
| Tool | Workflow/Image | Severity | Finding | Remediation |
|------|----------------|----------|---------|-------------|
| actionlint (shellcheck SC2001) | release.md (release.lock.yml:1410) | error | Style: use `${variable//search/replace}` instead of `sed`-style substitution | Rewrite the shell script to use parameter expansion instead of `sed`/regex substitution |
| actionlint (shellcheck SC2086 ×4) | release.md (release.lock.yml:1410, lines 12–15 of script) | error | Unquoted variables in run script cause globbing/word-splitting risk | Quote all variable expansions in the affected script block |
| gh-aw compiler | github-mcp-guard-coverage-checker.md | warning | Missing `pull-requests: read` permission required by `pull_requests` toolset | Add `pull-requests: read` to workflow frontmatter permissions, or remove the `pull_requests` toolset |
| gh-aw compiler | gpl-dependency-checker.md | warning | Prompt references `/tmp/` directly instead of `/tmp/gh-aw/agent/` | Update prompt to use `/tmp/gh-aw/agent/` as the temp-file root |
| gh-aw compiler | mcp-gateway-log-analyzer.md | warning | Prompt references `/tmp/` directly instead of `/tmp/gh-aw/agent/` | Update prompt to use `/tmp/gh-aw/agent/` as the temp-file root |
| gh-aw compiler | release.md | warning | Prompt references `/tmp/` directly instead of `/tmp/gh-aw/agent/` | Update prompt to use `/tmp/gh-aw/agent/` as the temp-file root |
| gh-aw compiler | test-improver.md | warning | Prompt references `/tmp/` directly instead of `/tmp/gh-aw/agent/` | Update prompt to use `/tmp/gh-aw/agent/` as the temp-file root |
| gh-aw compiler | release.md | warning | `workflow_dispatch` workflow has no `concurrency.job-discriminator`; conclusion concurrency group is shared across dispatches | Add a discriminator such as `${{ github.run_id }}` to the concurrency group |
| gh-aw compiler (push-to-pull-request-branch) | release.md | warning | `target: "*"` requires all PR branches fetched at checkout, but checkout config lacks a wildcard fetch pattern | Add `checkout.fetch: ["*"]` and `fetch-depth: 0` to the workflow's checkout configuration |
No container image, license, zizmor, poutine, runner-guard, grant, grype, or syft findings were reported in the evidence; those scanners either passed cleanly or were not triggered by this repository's workflow set based on the captured report.
### Local fixing loop
1. Install or update the gh-aw extension, then configure the coding agent's MCP client to launch `gh aw mcp-server` over stdio from the target repository.
2. Give the agent the prompt below and require it to use the `fix` and `compile` MCP tools rather than editing generated `.lock.yml` files.
3. Require the agent to repeat the same full compiler validation and security scan until it passes, or stop and explain any finding that needs human action.
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 compiler/actionlint output (bounded excerpt)
```
.github/workflows/release.lock.yml:1410:9: error: [shellcheck] shellcheck reported issue in this script: SC2001:style:12:15: See if you can use ${variable//search/replace} instead
.github/workflows/release.lock.yml:1410:9: error: [shellcheck] shellcheck reported issue in this script: SC2086:info:12:20: Double quote to prevent globbing and word splitting
.github/workflows/release.lock.yml:1410:9: error: [shellcheck] shellcheck reported issue in this script: SC2086:info:13:14: Double quote to prevent globbing and word splitting
.github/workflows/release.lock.yml:1410:9: error: [shellcheck] shellcheck reported issue in this script: SC2086:info:14:14: Double quote to prevent globbing and word splitting
.github/workflows/release.lock.yml:1410:9: error: [shellcheck] shellcheck reported issue in this script: SC2086:info:15:14: Double quote to prevent globbing and word splitting
✗ actionlint failed
strict mode: actionlint found 5 errors in workflows - workflows must have no actionlint errors in strict mode
```
Generated lock-file diff summary
22 lock files changed (875 insertions, 771 deletions) when recompiling with the current gh-aw compiler version, reflecting compiler/tooling drift rather than source edits:
```
.github/workflows/daily-compliance-checker.lock.yml | 75 ++++++++++---------
.github/workflows/duplicate-code-detector.lock.yml | 75 ++++++++++---------
.github/workflows/gateway-issue-dispatcher.lock.yml | 75 ++++++++++---------
.github/workflows/ghcr-download-tracker.lock.yml | 75 ++++++++++---------
.github/workflows/github-mcp-guard-coverage-checker.lock.yml | 59 ++++++++-------
.github/workflows/go-fan.lock.yml | 57 ++++++++-------
.github/workflows/go-logger.lock.yml | 75 ++++++++++---------
.github/workflows/gpl-dependency-checker.lock.yml | 75 ++++++++++---------
.github/workflows/guard-status-tracker.lock.yml | 75 ++++++++++---------
.github/workflows/integrity-filtering-audit.lock.yml | 75 ++++++++++---------
.github/workflows/issue-monster.lock.yml | 83 ++++++++++++----------
.github/workflows/mcp-gateway-log-analyzer.lock.yml | 75 ++++++++++---------
.github/workflows/nightly-docs-reconciler.lock.yml | 75 ++++++++++---------
.github/workflows/nightly-schema-updater.lock.yml | 75 ++++++++++---------
.github/workflows/nightly-workflow-compiler.lock.yml | 75 ++++++++++---------
.github/workflows/plan.lock.yml | 79 ++++++++++----------
.github/workflows/release.lock.yml | 79 ++++++++++----------
.github/workflows/repo-assist.lock.yml | 82 ++++++++++-----------
.github/workflows/rust-guard-improver.lock.yml | 75 ++++++++++---------
.github/workflows/semantic-function-refactor.lock.yml | 75 ++++++++++---------
.github/workflows/test-coverage-improver.lock.yml | 79 ++++++++++----------
.github/workflows/test-improver.lock.yml | 78 ++++++++++----------
```
### Control Plane
- Correlation ID: `33834075588-34`
- Central repository: `githubnext/gh-aw-cao`
- Control plane run URL: `https://github.com/githubnext/gh-aw-cao/actions/runs/33834075588`
> Generated by [:shield: AW Maintenance / Compiler Security](https://github.com/githubnext/gh-aw-cao/actions/runs/33834386179) · copilot · auto · 24.6 AIC · ⌖ 9.28 AIC · ⊞ 13.9K · [◷](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 18, 2026, 3:51 AM UTC
Contributor guide
Research direction
Start with .github/workflows/release.md, especially the shell script that produces release.lock.yml:1410, and review the other named workflow sources for the listed permission, /tmp, concurrency, and checkout warnings. Use the gh-aw MCP fix and compile tools from github/gh-aw-mcpg, inspect generated lock diffs without editing them, and finish when strict compilation and the listed validation/security scans are clean.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github-actions, shell
- Domain
- ci-cd, security, tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100