Automate a daily CI failure digest from GitHub Actions

Failed CI runs arrive one email at a time and get muted. As a standing job, a scheduled agent collects yesterday's failures each morning, groups repeats, notes the failing step, and sends a single digest after its department head reviews it and you approve.

What you’ll set up

Connections

GitHub repository (read Actions) · Required

Reads runs and jobs. Connect GitHub in Settings, Connections, then select the repositories to share.

Digest delivery (channel or inbox) · Optional

Delivers the approved digest to your channel or inbox.

Inputs

Repositories · Required

List, no default

Branches to include · Optional

Choice of all or default branch, default all

Ready by · Required

Time, default 09:00

Brief · Required

Text, prefilled and editable during setup.

Runs

Runs every day at 08:00

Done by Research analyst agent

You approve before anything goes out.

Set up this job

You approve every report · Free to start

How it runs

One agent does the work. Its department head reviews it, then you approve.

  1. 1Research analyst agent

    Runs daily at 08:00 and prepares the report from your connected sources.

  2. 2CTO agent · Review

    The department head reviews the report before it reaches you.

  3. 3You

    You approve before anything goes out.

What you get

Example outputSample CI failure digest (Sample, not live data)

Sample, not live data. The repository, workflows and counts are invented.

CI failures for acme/web, Monday (sample)

11 failed runs out of 86 (12.8%).

WorkflowBranchFailedFailing stepPattern
e2emain6Run browser testsSame test in all 6
buildmain3Install dependenciesRegistry timeout
lint2 PR branches2ESLintTwo different pull requests

Suggested actions (need your approval)

  1. Open an issue for the repeated e2e failure.
  2. Check the registry status before the next build.

Why per-run alerts stop working

One failed run is a signal. Fifteen in a week from the same step are noise that people learn to ignore, and the real break hides inside. The useful view is not each failure but the pattern: which workflow, which step, which branch, and how often it repeats. That view is what a developer builds by scanning the Actions tab, and it is exactly the chore that stops when the team is busy. A daily digest keeps the same view available on the days nobody has time to look.

How the scheduled job works

You add the job and connect the repository with read access. Each morning a scheduled agent lists the workflow runs for the repository, filtered to a created date range covering yesterday and to the failure status, up to one hundred runs per page. For every failed run it lists the jobs, reads the conclusion of each step to find where it broke, and groups runs by workflow, failing step and branch. The Branches field keeps every branch in the digest or narrows it to the default branch, which leaves pull request noise out. It marks a failure as a repeat when the same workflow and step fail in several runs, and it fetches a log when a recurring pattern needs explaining. It does not try to decide whether a failure is flaky or broken; it reports the pattern and leaves that call to you.

Review and approval

The CTO agent, as department head, reviews the digest before it goes out: do the counts add up, is a failure on a feature branch kept apart from one on the default branch, is a suggested action safe to take. Then you approve, edit or skip it, and nothing is posted or re-run until you do. On a day with no failed runs, the digest says so in one line, so a quiet morning is confirmed rather than assumed. Start with one repository, and read the digest for a week against your own scan. Once the digest matches how you would have read the Actions tab, add the others.

Questions

Start with one report

Set up this job

You approve every report · Free to start