--- name: diagnose-awf description: Diagnose an AWF (Agentic Workflow Firewall) failure from an error, workflow run URL, or symptom. Covers auth (api-proxy, enterprise/BYOK Copilot, OIDC, mcpg), ARC/DinD and self-hosted runners, alternative runtimes (gVisor/Kata/chroot), Squid/DNS/egress denials, CI and gh-aw safe-output failures, and suspected security regressions. Routes to the canonical diagnosis registry in docs/diagnostics. allowed-tools: Bash(docker:*), Bash(gh:*), Bash(npx:*), Bash(npm:*), Bash(grep:*), Read --- # Diagnose AWF Failures Single entry point for diagnosing AWF failures. The canonical knowledge lives in the diagnosis registry — this skill only routes and reports. ## Procedure 1. **Read the index** — [`docs/diagnostics/README.md`](../../../docs/diagnostics/README.md) for boundary routing and specialist references, and [`docs/diagnostics/agent-playbook.md`](../../../docs/diagnostics/agent-playbook.md) for the report shape and safety rules. 2. **Fingerprint** the run: AWF version, runner type (GitHub-hosted / self-hosted / ARC+DinD / GHES / GHEC), `DOCKER_HOST`, `GITHUB_SERVER_URL`, container runtime, provider, auth mode. Use `unknown` where unverified. 3. **Classify the failing boundary**: `runner`, `runtime`, `network`, `auth`, `ci`, `security`. 4. **Load only matching records**: ```bash npx tsx scripts/diagnostics/cli.ts search "" --boundary ``` Without a clone, use the portable artifact `.github/agents/diagnose-awf.md` (prefer a tag matching your AWF version). 5. **Probe** with the matched finding's read-only probe when the match is ambiguous — one probe at a time. 6. **Report**: observed symptom, matched finding ID and evidence, affected version/topology, safe next probe, fix/workaround, citations. ## Auth routing - **api-proxy sidecar / provider token exchange** → `AUTH-001`, `AUTH-002` - **GitHub/Copilot enterprise and BYOK routing** → `AUTH-001`, [`docs/auth-matrix.md`](../../../docs/auth-matrix.md) - **gh-aw-launched mcpg HTTP MCP GitHub OIDC** → `AUTH-003` Check configuration presence/shape, route and health status, and redacted error classes only. ## Safety rules - Never request API keys, tokens, JWTs, `Authorization` headers, environment dumps, inference probes, or token exchanges. - Never recommend `--env-all`, disabling isolation, or broadening the domain allowlist by default. - Suspected isolation or credential-boundary regressions route to `SEC-001` and the repository security review process. - If no record matches, say so, name the smallest missing evidence, and stop. Never invent a fix. ## Specialist references - `.github/workflows/shared/self-hosted-failure-modes.md` — full runner catalog - `.github/skills/debug-firewall/SKILL.md` — Squid, iptables, container state - `.github/skills/awf-debug-tools/SKILL.md` — log parsing helpers - `.github/skills/debugging-workflows/SKILL.md` — GitHub Actions log retrieval - `docs/auth-matrix.md`, `docs/compatibility.md`, `docs/troubleshooting.md` ## Updating knowledge Follow [`docs/diagnostics/patterns.md`](../../../docs/diagnostics/patterns.md). Edit the canonical record, run `npm run diagnostics:render`, and open a reviewed PR. Never edit generated artifacts or `.lock.yml` files by hand.