Problem Statement
Two Smoke CI runs on 2026-05-02 failed at the agent job level before producing any output, blocking all downstream jobs. These are the highest-severity failures because they produce zero telemetry and must be fixed before the engines can be validated.
Affected Workflows & Runs
| Engine |
Run ID |
Duration |
Failure Mode |
| Crush v0.59.0 |
§25239718625 |
~1m |
EROFS crash on binary install |
| Gemini CLI |
§25239718609 |
~4m |
HTTP 400 API_KEY_INVALID |
Root Cause Analysis
Crush — Read-Only Filesystem (EROFS)
Crush v0.59.0 is delivered as an npm package (@charmland/crush). During post-install, the package attempts to place the extracted binary at:
/opt/hostedtoolcache/node/24.14.1/x64/lib/node_modules/`@charmland/crush`/bin/
In the agentic workflow chroot/sandbox, the host filesystem is bind-mounted read-only. The directory exists on the host but cannot be written to inside the sandbox, producing:
ERREOFS: read-only file system, mkdir '/opt/hostedtoolcache/node/.../bin'
A secondary issue was also logged: Failed to transfer /host/home/runner/work/_temp/gh-aw/safeoutputs ownership to chroot user, indicating the sandbox setup itself has a gap with the Crush tool cache path.
Proposed remediation:
- Override the Crush binary destination to a writable path (e.g.,
/tmp/crush-bin/) via the CRUSH_BIN_DIR env var or equivalent, OR
- Pre-install the Crush binary outside the sandbox before the chroot is applied (during
activation job), OR
- Mount the specific node_modules subdirectory as writable in the sandbox configuration
Gemini — Invalid API Key
The Gemini CLI failed on its first API call with:
{"code": 400, "status": "INVALID_ARGUMENT",
"message": "API key not valid. Please pass a valid API key.",
"details": [{"reason": "API_KEY_INVALID", "domain": "googleapis.com"}]}
Both generateJson (routing) and sendMessageStream (main stream) paths hit this simultaneously at 2026-05-02T01:00:16Z. The Crush run also logged GEMINI_API_KEY is not set at startup, confirming the secret is absent or expired in the CI environment.
Proposed remediation:
- Rotate the
GEMINI_API_KEY secret in GitHub Actions (check expiry date in Google Cloud Console)
- Add a startup validation step to the Gemini smoke workflow that checks
GEMINI_API_KEY is non-empty before launching the agent, and fails fast with a clear error
- Consider using a service account key instead of an API key for better lifecycle management
Success Criteria
References:
Generated by [aw] Failure Investigator (6h) · ● 639.1K · ◷
Problem Statement
Two Smoke CI runs on 2026-05-02 failed at the
agentjob level before producing any output, blocking all downstream jobs. These are the highest-severity failures because they produce zero telemetry and must be fixed before the engines can be validated.Affected Workflows & Runs
API_KEY_INVALIDRoot Cause Analysis
Crush — Read-Only Filesystem (EROFS)
Crush v0.59.0 is delivered as an npm package (
@charmland/crush). During post-install, the package attempts to place the extracted binary at:In the agentic workflow chroot/sandbox, the host filesystem is bind-mounted read-only. The directory exists on the host but cannot be written to inside the sandbox, producing:
A secondary issue was also logged:
Failed to transfer /host/home/runner/work/_temp/gh-aw/safeoutputs ownership to chroot user, indicating the sandbox setup itself has a gap with the Crush tool cache path.Proposed remediation:
/tmp/crush-bin/) via theCRUSH_BIN_DIRenv var or equivalent, ORactivationjob), ORGemini — Invalid API Key
The Gemini CLI failed on its first API call with:
{"code": 400, "status": "INVALID_ARGUMENT", "message": "API key not valid. Please pass a valid API key.", "details": [{"reason": "API_KEY_INVALID", "domain": "googleapis.com"}]}Both
generateJson(routing) andsendMessageStream(main stream) paths hit this simultaneously at2026-05-02T01:00:16Z. The Crush run also loggedGEMINI_API_KEY is not setat startup, confirming the secret is absent or expired in the CI environment.Proposed remediation:
GEMINI_API_KEYsecret in GitHub Actions (check expiry date in Google Cloud Console)GEMINI_API_KEYis non-empty before launching the agent, and fails fast with a clear errorSuccess Criteria
gemini-client-error-*.jsonartifacts; agent completes at least 5 turnsagentjob concludessuccessin the next Smoke CI batchReferences: