[cao-evolution:compiler-security] Shellcheck SC2129 style finding in shared control.md Resolve CAO GitHub read scope step
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 1/5
- Tiempo estimado
- Menos de una hora
- Aptitud para principiantes
- 86/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- github-actions, javascript, shell
Línea de trabajo
Lee .github/workflows/shared/control.md y localiza el paso “Resolve CAO GitHub read scope”. Combina sus tres redirecciones de GITHUB_OUTPUT en una sola redirección agrupada; después, compila los workflows y comprueba que se hayan resuelto las apariciones repetidas de SC2129 y que los archivos de bloqueo generados sigan siendo producidos por el compilador.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
gh aw compile of all 70 workflow sources (70 generated lock files) in githubnext/gh-aw-cao failed (exit code 1) under the full validation/lint/container/security-scanner suite. One target-owned actionable finding remains: a shellcheck style warning (SC2129) repeated 59 times, all tracing to the same shared Resolve CAO GitHub read scope step in .github/workflows/shared/control.md. All other findings — 345 compiler expression errors for undefined daily_ai_credits_* activation outputs, 80 SC1003 shellcheck hits in the generated "Execute Pi CLI" step, 3 Runner-Guard findings (RGS-005/012/019) in compiler-generated router and hosted-health scaffolding, and 1,252 Grant license-policy violations plus multiple High/Critical Grype CVEs in 9 upstream container images (alpine, ghcr.io/github/gh-aw-firewall/*, ghcr.io/github/gh-aw-mcpg, ghcr.io/github/gh-aw-node, github-mcp-server, node:lts-alpine) — are compiler-generated or upstream-image findings with no corresponding editable target source, so they are kept only as bounded context. Grant license-policy evidence is available (.grant.yaml present). Highest-severity target-owned finding: Low (shellcheck style, SC2129).
Action: Assign this issue to Copilot using Agent prompt below; review its pull request and merge only after rerunning the full compiler and security scan confirms that the target-owned actionable findings are resolved.
Failure details
- Target repository:
githubnext/gh-aw-cao - Compiler exit code:
1 - Workflow sources checked:
70 - Generated lock files checked:
70 - Result:
findings - Grant license-policy evidence:
available - Target-owned actionable findings:
1(1 underlying issue, 59 repeated occurrences) - Upstream-owned context findings:
5underlying issue categories (345 + 80 + 3 + 1,252 + multiple Grype CVE occurrences)
Findings table
| Tool | Workflow / Image | Owning component / repository | Ownership | Severity | Finding | Target remediation |
|---|---|---|---|---|---|---|
| shellcheck (actionlint) | .github/workflows/shared/control.md (compiles into 59 of 70 lock files, step "Resolve CAO GitHub read scope") |
githubnext/gh-aw-cao |
target-owned actionable | Low (style) | SC2129: multiple individual >> "$GITHUB_OUTPUT" redirects should be combined into a single { ...; } >> "$GITHUB_OUTPUT" block |
Combine the three sequential echo ... >> "$GITHUB_OUTPUT" lines in the "Resolve CAO GitHub read scope" step into one { ...; } >> "$GITHUB_OUTPUT" block |
| actionlint (expression) | 69 lock files, activation job (compiler-generated) | github/gh-aw (compiler) |
upstream-owned context | unknown | daily_ai_credits_guardrail_status, daily_ai_credits_exceeded, daily_ai_credits_total, daily_ai_credits_estimated, daily_ai_credits_threshold referenced from needs.activation.outputs are not declared in the activation job's generated outputs: block |
None — route to github/gh-aw |
| shellcheck (actionlint) | 80 occurrences across ~16 lock files, "Execute Pi CLI" step (compiler-generated) | github/gh-aw (compiler) |
upstream-owned context | Informational | SC1003: escaped single-quote sample text embedded in compiler-generated agent execution scaffolding | None — route to github/gh-aw |
| runner-guard | agentic_commands.yml (auto-generated slash-command router, "DO NOT EDIT") |
github/gh-aw (compiler) |
upstream-owned context | Medium | RGS-005: route job has write permissions (actions: write, issues: write, pull-requests: write) while triggered by issue_comment/pull_request_review_comment |
None — route to github/gh-aw |
| runner-guard | self-care-hosted-health.lock.yml (compiler-generated "Verify hosted CAO health and MCP access" step) |
github/gh-aw (compiler) |
upstream-owned context | High | RGS-012: outbound curl to cao.githubnext.com in a job with secrets access |
None — route to github/gh-aw |
| runner-guard | self-care-hosted-health.lock.yml (compiler-generated MCP gateway step) |
github/gh-aw (compiler) |
upstream-owned context | Medium | RGS-019: run: block interpolates a ${{ steps.<id>.outputs.<name> }} step output |
None — route to github/gh-aw |
| grant | 9 upstream container images (alpine:latest, ghcr.io/github/gh-aw-firewall/{agent,api-proxy,cli-proxy,squid}:0.28.44, ghcr.io/github/gh-aw-mcpg:v0.4.29, ghcr.io/github/gh-aw-node, ghcr.io/github/github-mcp-server:v1.12.2, node:lts-alpine) |
image publishers (github/gh-aw-firewall, github/gh-aw-mcpg, github/gh-aw-node, github/github-mcp-server, Alpine/Node upstream) |
upstream-owned context | n/a (license policy) | 1,252 license-policy findings (GPL-2.0-only, GPL-3.0-or-later, LGPL variants, etc.) in compiler-selected runtime/firewall/proxy/MCP images not pinned by any editable target source | None — route to respective image-publisher repositories |
| grype | Same 9 images as above | Same image publishers as above | upstream-owned context | High / Critical | Multiple CVEs (e.g. CVE-2026-54873, CVE-2026-84782, CVE-2026-84784, CVE-2026-72897 in alpine:latest; GO-2026-6612, GO-2026-6604, GO-2026-6603, GO-2026-6611, GHSA-ch52-4w7c-c8xp, GHSA-r292-9mhp-454m, GO-2026-6608, GO-2026-6607 in ghcr.io/github/gh-aw-firewall/agent:0.28.44) |
None — route to respective image-publisher repositories |
Agent prompt
- Assign this issue to Copilot.
- Configure its MCP client to launch
gh aw mcp-serverover stdio from the target repository, then give it the prompt below. Require the server'sfixandcompiletools; never allow direct edits to generated.lock.ymlfiles. - Review the resulting pull request and rerun the same full compiler and security scan before merge. Require the target-owned actionable findings to be resolved; separately retained upstream-owned or unavailable evidence does not authorize target changes. If a target-owned finding needs human action, require the agent to stop and explain it.
Agent prompt
Fix only the target-owned actionable gh-aw compiler and security findings identified in this issue. Change only .github/workflows/*.md sources and directly related target-owned files; never edit generated .lock.yml files. Specifically: in .github/workflows/shared/control.md, combine the three sequential echo "owner=$owner" >> "$GITHUB_OUTPUT" / echo "repository=$repository" >> "$GITHUB_OUTPUT" / echo "full_name=$owner/$repository" >> "$GITHUB_OUTPUT" lines in the "Resolve CAO GitHub read scope" step into a single { ...; } >> "$GITHUB_OUTPUT" block to resolve shellcheck SC2129. 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 the target-owned findings are resolved. Review generated lock-file diffs and preserve existing behavior. Do not add or change .grant.yaml unless a separately reviewed target license-policy decision already requires it. Do not rebuild, modify, or make dependency decisions for upstream images or components; leave upstream-owned context (compiler-generated daily_ai_credits_* activation outputs, SC1003 in "Execute Pi CLI" scaffolding, RGS-005/012/019 findings in compiler-generated files, and all Grant/Grype container-image findings) unchanged and stop with a concise ownership explanation if the remaining finding cannot be fixed safely in this repository.
Raw evidence
Compiler run summary (summary.txt):
Target: githubnext/gh-aw-cao
Exit code: 1
Grant license policy: available
Workflow sources: 70
Compiled locks: 70
result.json:
{
"targetRepo": "githubnext/gh-aw-cao",
"targetSha": "b56d73723daceacca67a961d071f650e7f76eedd",
"exitCode": 1,
"scanComplete": true,
"clean": false,
"grantPolicyAvailable": true,
"reportDigest": "0c8fdd20262929ad3bcaa1c20573b20cfe7c8e3de3a7a393e415d4b3a1675e89"
}
Sample SC2129 finding (one of 59 identical occurrences):
.github/workflows/self-care.lock.yml:478:9: error: [shellcheck] shellcheck reported issue in this script: SC2129:style:7:1: Consider using { cmd1; cmd2; } >> file instead of individual redirects
Source location (.github/workflows/shared/control.md):
- name: Resolve CAO GitHub read scope
id: cao_target_read_scope
if: ${{ github.aw.import-inputs.github_tools }}
env:
CAO_READ_REPOSITORY: ${{ github.aw.import-inputs.read_repository }}
run: |
set -euo pipefail
IFS=/ read -r owner repository extra <<< "$CAO_READ_REPOSITORY"
if [[ -z "$owner" || -z "$repository" || -n "$extra" ]]; then
echo "Invalid CAO read repository: $CAO_READ_REPOSITORY" >&2
exit 1
fi
echo "owner=$owner" >> "$GITHUB_OUTPUT"
echo "repository=$repository" >> "$GITHUB_OUTPUT"
echo "full_name=$owner/$repository" >> "$GITHUB_OUTPUT"
Raw tool counts (deduplicated by bracket tag across the 4.75 MB report): 1,935 error: lines, 5,462 warning: lines total; shellcheck errors broken down as SC2129 ×59, SC1003 ×80; [expression] errors ×347 (345 of which are the daily_ai_credits_* activation-output set); Grant license policy violation lines ×1,252; Grype/container findings tagged [High]/[Critical]/[Medium]/[Low]/[Negligible]/[Unknown] across 9 images. No token-like or credential-like values were present in the sampled output.
Control plane context
- Correlation ID:
38271064036-460 - Central repository:
githubnext/gh-aw-cao - Control plane run URL: https://github.com/githubnext/gh-aw-cao/actions/runs/38271064036
Generated by 🛡️ CAO Evolution / AW Compiler Security · copilot · auto · 199.5 AIC · ⌖ 10 AIC · ⊞ 16.2K · ◷
- expires on Oct 26, 2026, 4:08 PM UTC
- Lenguaje dominante
- JavaScript
- Estrellas
- 8
- Forks
- 5
- Merge medio
- 1 h 57 min
- PR fusionados (30 d)
- 850
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de githubnext/gh-cao
-
[software-development-practices:nist-ssdf] github/gh-aw-threat-detection repository guidanceAbiertosoftware-development-practices software-development-practices:nist-ssdf
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
githubnext/gh-cao#19534 ·
Los mantenedores suelen responder en 1 día
-
cao-evolution cao-evolution:compiler-security
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
githubnext/gh-cao#19373 ·
Los mantenedores suelen responder en 1 día
-
self-care self-care:dashboard-review
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
githubnext/gh-cao#18518 ·
Los mantenedores suelen responder en 1 día
-
cao-evolution cao-evolution:compiler-security
Dificultad 1/5 1-3 horas Aptitud para principiantes 62/100
githubnext/gh-cao#17475 ·
Los mantenedores suelen responder en 1 día
-
repo-assist repo-assist:maintenance
Dificultad 1/5 Menos de una hora Aptitud para principiantes 78/100
githubnext/gh-cao#17378 ·
Los mantenedores suelen responder en 1 día
Todos los issues de githubnext/gh-cao
Issues similares
-
bug needs triage P3
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
pbakaus/impeccable#1143 ·
Los mantenedores suelen responder en 1 día
-
status: waiting for maintainer
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
mui/material-ui#49547 ·
Los mantenedores suelen responder en 1 día
-
next() is called twice when the request closes after busboy fails to startPosiblemente ocupada @NgoQuocViet2001 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
[2.x] extension-manager: translation keys that changed meaning keep their old namesPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertotype/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Los mantenedores suelen responder en 1 día