SECOPS

Escalate stale security-labeled GitLab MRs on a daily schedule

Runs each morning, finds security-labeled GitLab merge requests that have sat unreviewed past their SLA.

CategorySecOps
Enginesim
Difficultyintermediate
Triggerschedule
Steps5
Setup~15 min

How it runs

The automated pipeline, trigger to output.

  • TriggerDaily schedule
  • ActionQuery open security-labeled MRs and label ageGitLabGitLab
  • LogicBucket MRs by SLA breach
  • ActionOpen PagerDuty incident for hard breachesPagerDutyPagerDuty
  • OutputPost ranked stale-MR digest to SlackSlack

What it does

Each morning it scans open merge requests that carry a security label, calculates how long each has waited since the label was applied, and compares that against your review SLA. MRs over SLA are escalated: a PagerDuty incident opens for the worst offenders and a ranked Slack digest goes to the security team.

When to use it

Use it when security reviews quietly pile up and the only signal is someone eventually complaining. This turns aging review debt into a visible, paged signal on a predictable cadence.

How it works

  1. 1A daily schedule triggers the run.
  2. 2The flow queries GitLab for all open MRs with a `security::` label and reads each label's age.
  3. 3A filter splits MRs into within-SLA and over-SLA buckets.
  4. 4For MRs past a hard breach threshold, it opens a PagerDuty incident with the MR and current reviewer.
  5. 5It posts a Slack digest ranking the over-SLA MRs by wait time so the team can clear the oldest first.

Set it up

What you configure once, before turning it on.

  1. 1
    Connect GitLabRepos, MRs, pipelines, registry.
  2. 2
    Connect PagerDutyIncidents, on-call, escalations.
  3. 3
    Connect SlackChannels, DMs, threads, mentions.
  4. 4
    Set each agent's modelWe leave models unset so you pick the tier — fast + cheap, or top-quality.
  5. 5
    Tune it to your dataEdit the prompts, filters, and field mappings so it matches how your team works.
  6. 6
    Test, then turn it onRun once against a sample, confirm the output, then enable the trigger.

Run this workflow in your colony.

14-day trial. No DevOps. No Sales call. Provisioned in under a minute.