Skip to content

[aw] Safe Output Health Monitor reported incomplete result #51304

Description

@github-actions

Workflow Failure

Workflow: Safe Output Health Monitor
Branch: main
Run: https://github.com/github/gh-aw/actions/runs/31239625370

Warning

Task Could Not Be Completed: The agent reported that the task could not be performed due to an infrastructure or tool failure.

Reasons:

  • The mandatory create_discussion safe-output for this run was already consumed by an exploratory CLI test call (title test-title-check, placeholder body) made while learning the tool syntax, before the real audit report could be submitted. create_discussion has a limit of 1 per run for this workflow, so the real findings below could not be posted as a discussion in this run.

    REAL SAFE OUTPUT HEALTH AUDIT FINDINGS FOR 2026-08-08 (this is the actual report that should have been posted as a GitHub discussion):

EXECUTIVE SUMMARY

  • Period: Last 24 hours (2026-08-07 ~21:00 UTC to 2026-08-08 ~05:00 UTC)
  • Runs Analyzed: 202
  • Distinct Workflows Active: 72
  • Safe Output Jobs Executed: 202 (one safe_outputs job per run)
  • Safe Output Jobs Failed: 6
  • Overall Safe Output Success Rate: 97.0%
  • Error Clusters Identified: 3

Architecture note: this repo does not run separate jobs per safe-output type (no create_issue job, add_comment job, etc). Every run has a single consolidated safe_outputs job whose Process Safe Outputs step handles all configured output types (create_issue, create_discussion, add_comment, update_pull_request, push_to_pull_request_branch, send_slack_message, create_check_run, set_issue_type, comment_memory, submit_pull_request_review, upload_artifact, etc) in one step. A failure processing any single item type currently fails the entire job for that run, and there is no per-type success/failure breakdown recorded anywhere in the run artifacts.

SAFE OUTPUT JOB STATISTICS

safe_outputs job (all types combined): 202 executions, 6 failures, 97.0% success rate

  • of which Smoke Copilot workflow: 3 executions, 3 failures, 0% success rate
  • of which Smoke Copilot - AOAI (Entra) workflow: 6 executions, 2 failures, 66.7% success rate
  • of which PR Sous Chef workflow (production): ~20+ executions (scheduled every 15m), 1 failure, ~95%+ success rate
  • all other workflows: remainder, 0 failures, 100% success rate

ERROR CLUSTER 1: Smoke Copilot - 100% failure rate (3/3 runs)

Runs: 31220056968, 31222502383, 31231536662 (PRs #51133 and #51174), triggered via the smoke slash command on PRs.
Observation: In every run the agent job succeeded and generated 8-10 safe-output items across ~9 types (create_discussion, create_issue, add_comment x2, send_slack_message, create_check_run, set_issue_type, comment_memory, submit_pull_request_review, upload_artifact). The consolidated Process Safe Outputs step still failed every single time.
Root Cause: Undetermined - no raw step log text was accessible to this audit (see Tooling Gap below). Leading suspects: (a) send_slack_message failing due to a missing/invalid SLACK_WEBHOOK_URL secret when triggered from a PR context, or (b) create_check_run failing due to insufficient checks:write permission on PR-triggered smoke runs.
Impact: Medium. Smoke-test workflow (not user-facing), but a 100% failure rate across all 3 samples suggests a deterministic, reproducible bug rather than a flaky one-off.

ERROR CLUSTER 2: Smoke Copilot - AOAI (Entra) - 2/6 runs failed, correlated with but not fully explained by empty output

Runs: 31222505053 (PR #51133), 31231538240 (PR #51174).
Sample Error Signature: Both failing runs show the agent job completing successfully but producing 0 safe-output items (total_items: 0), yet the safe_outputs job conclusion is failure.
Root Cause: Undetermined and puzzling - a third run of the same workflow (31220058346) also produced 0 items but SUCCEEDED. So empty output alone does not explain the failure; something else differs between the passing and failing zero-item runs.
Impact: Medium.

ERROR CLUSTER 3: PR Sous Chef - isolated single failure in a production workflow

Run: 31230238662, scheduled trigger, pi engine.
Sample Error Signature: Agent produced 5 items (update_pull_request x2, add_comment x2, create_issue x1); the safe_outputs job failed processing them. Exact failing item/error unknown.
Root Cause: Undetermined (same tooling gap). Given PR Sous Chef runs every 15 minutes and only 1 failure was observed in the 24h window, this looks like an isolated/rare event rather than a systemic regression - but it is the only failure in this audit that affects a real production workflow rather than a smoke test.
Impact: Low-frequency but highest real-world relevance of the three clusters, since it is the only non-test workflow affected.

ROOT CAUSE ANALYSIS

API-Related Issues: None identified - no evidence of GitHub API rate-limiting or auth failures in any of the 6 failing runs.
Data Validation / Parsing Issues: Cannot be confirmed without raw logs.
Permission Issues: Possible for Cluster 1 (create_check_run may lack checks:write on PR-triggered smoke runs) - plausible but unconfirmed.
Tooling Gap (most important finding): None of the available tools - the gh-aw MCP logs/audit tools, or the read-only GitHub MCP server (no workflow-run/job-log-fetching method exposed) - can retrieve the raw stdout/stderr of a failed Actions step. The cached run artifacts (run_summary.json, summary.json, aw_info.json) only carry pass/fail status per job/step and aggregate item counts, never the actual error message. All 6 failures could be located but not diagnosed.

RECOMMENDATIONS

Critical Issues: None - no user-facing production breakage detected.

Bug Fixes Required:

  1. Investigate and fix the 100%-reproducible Smoke Copilot safe-outputs failure. File: .github/workflows/smoke-copilot.lock.yml. Pull raw Actions logs for run 31231536662 to identify the specific failing item/step, then fix the underlying handler or workflow permissions/secrets.
  2. Investigate the Smoke Copilot - AOAI (Entra) empty-output inconsistency. File: .github/workflows/smoke-copilot-aoai-entra.lock.yml. Compare failing run 31222505053 against succeeding zero-item run 31220058346 to isolate the differentiating condition.

Configuration Changes:

  1. Review checks:write permission and Slack webhook availability for PR-triggered smoke workflows - confirm secrets/permissions are actually available in that trigger context, or skip those output types when running from a PR-triggered smoke invocation.

Process Improvements:

  1. Record per-item-type success/failure in run artifacts - emit a structured safe_outputs_errors.json (or extend run_summary.json) capturing which specific item(s) failed and their error message, independent of whether other items in the same run succeeded. This would have let this audit pinpoint exact root causes for all 6 failures instead of stopping at job failed.
  2. Expose raw Actions job/step logs to future audits - add a GitHub MCP tool (or gh-aw MCP tool) for fetching job/step logs by run ID. This is the single biggest blocker to root-causing safe-output failures in future audits, and is also why this current audit-tooling failure happened: no tool could be found to safely compose a large discussion body without hitting shell-escaping and safe-output quota limits either.

WORK ITEM PLANS

Work Item 1: Fix Smoke Copilot safe-outputs 100% failure rate. Priority High. Pull raw logs for run 31231536662; identify failing handler; patch. Estimated effort Small-Medium.
Work Item 2: Diagnose Smoke Copilot - AOAI (Entra) intermittent empty-output failure. Priority Medium. Compare run 31222505053 (fail) vs 31220058346 (success) job logs step-by-step. Estimated effort Small.
Work Item 3: Add per-item-type error capture to safe-outputs processing. Priority Medium. Extend the safe-outputs processing script to catch and record per-item errors instead of failing the whole step. Estimated effort Medium.

HISTORICAL CONTEXT

No prior Safe Output Health audit was found in cache memory (path was empty before this run). This is the first baseline audit. This baseline has been saved to cache memory at /tmp/gh-aw/cache-memory/safe-output-health/2026-08-08.json, index.json, and error-patterns.json for future comparison.

METRICS AND KPIS

Overall Safe Output Success Rate: 97.0% (196/202). Most Reliable Job Type: safe_outputs job across all non-smoke-test workflows, 100% success rate. Most Problematic Workflow: Smoke Copilot, 0% success rate (3/3 failed) in this window. Average Time to Failure: not meaningfully computable, failing steps ran 24-54 seconds before reporting failure, in line with normal step duration.

NEXT STEPS

  • Pull raw Actions logs for runs 31231536662 (Smoke Copilot) and 31222505053 (Smoke Copilot - AOAI Entra) via an authenticated session to get the actual error text
  • File/track Work Items 1-3 above
  • Add raw-log or per-item-error capture to close the tooling gap that limited this audit
  • Re-run this audit after fixes land to confirm Smoke Copilot returns to a passing state

REFERENCES:

This is a structured incompletion signal (report_incomplete), not a real task outcome. Any other safe outputs emitted alongside this signal (e.g., comments) describe the failure state, not a completed review or action.

Action Required

Assign this issue to an agent to debug and fix the issue.

Debug with any coding agent

Use this prompt with any coding agent (GitHub Copilot, Claude, Gemini, etc.):

Debug the agentic workflow failure using https://raw.githubusercontent.com/github/gh-aw/main/debug.md

The failed workflow run is at https://github.com/github/gh-aw/actions/runs/31239625370
Manually invoke the agent

Debug this workflow failure using your favorite Agent CLI and the agentic-workflows prompt.

Tip

Stop reporting this workflow as a failure

To stop a workflow from creating failure issues, set report-failure-as-issue: false in its frontmatter:

safe-outputs:
  report-failure-as-issue: false

Generated from Safe Output Health Monitor · 440.9 AIC ·

  • expires on Aug 8, 2026, 4:58 PM UTC

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions