gitlab-ai-hackathon / transcend-october-2026 / dep-bouncer

Dep Bouncer on GitLab

GitLab Transcend: Life After Code · Path B (Bring Your Own) · Hands-off · Video (2:49) · GitLab project

GitLab Duo agents take an issue to production with no human, vet every npm package first, replace hijacked dependencies with clean versions, and restore production when it drifts. Every figure links to the public receipt, merge request or pipeline it comes from.

11changes taken to production by agents
4/4replayed hijacks blocked and replaced
13.3minutes to restore drifted production
9/9lifecycle stages with a recorded run

Verify in 3 clicks

  1. The newest issue receipt: issue to production, every step linked, human actions counted.
  2. Every change the agents shipped: minutes and human actions per run.
  3. Attack day: four replayed hijacks, each blocked and replaced by a clean version in production.

Three agent-driven paths

Each run's receipt counts any human action after it started.

Changes taken to production by agents

Minutes and human actions come from each public receipt. Runs without a public receipt show no duration or count.

Attack day

Labelled, benign reconstructions of real hijacks; nothing malicious is downloaded. Minutes from the attack MR to the first failed pipeline, the first Guardian note and production.

Incidents

Minutes run from the failed monitor pipeline that started the successful Responder session to the verified served build. An earlier session for the same drift was failed by the platform before its first step.

IncidentCauseMinutesHuman actionsOutcomeRestore commit
#10Production incident: build drift13.30recovered466ec0b7

Lifecycle stages

All nine stages ran for real; each row links to a run.

StageWhat runsEvidence from a recorded runCode
PlanAutopilot planner: acceptance criteria and plan noteplan note.gitlab/duo/flows/autopilot.yml
CreateAutopilot builder: implementation and dependency choicemerge requestscripts/check.mjs
VerifyShipper diagnoses failuresreplay-bench, build, test, typecheck, dependency-gate.gitlab-ci.yml, scripts/gate.mjs
SecureDependency Guardian explains and quarantines; chooses a clean replacementdependency-scanning, secret_detection, semgrep-sast, Guardian receipt, Quarantined MR.gitlab/duo/flows/dependency-guardian.yml, .gitlab-ci.yml
PackageNo agent decisionpackage-build, package-publishDockerfile, ci/publish.sh
ReleaseShipper waits and posts receiptv1.1.152, smoke-productionci/deploy.gitlab-ci.yml, ci/deploy.sh
ConfigureFlows use trusted default-branch Dep Bounceragent configuration, environments.gitlab/duo/agent-config.yml
MonitorProduction Responder diagnoses a failed monitor and runs the bounded restore and receiptlive-smoke, Recovered incident #10, pipelineci/smoke.mjs, ci/responder.mjs, .gitlab/duo/flows/production-responder.yml
GovernShipper requests landingmerge-policyci/merge-controller.mjs, ci/autopilot.mjs