Skip to content
Redgold.AI Blog

· 8 min read · coding agents, operations

What Twenty Coding Agents Taught Us About Supervision

One person, around twenty coding agents, one issue board. What the human actually does all day, what went wrong before each rule existed, and the numbers from running it.

We build Redgold with coding agents supervised by a single operator. There are 39 agent slots; at the moment of writing, 10 were busy. Each agent has its own workspace and takes tickets from a shared issue board. Over the 60 days from 2026-08-24 to 2026-10-23, that setup merged 4,889 pull requests, an average of 80 a day, with a peak of 230.

Pull requests merged per day0126.5253Aug 24: 60 PRs mergedAug 25: 100 PRs mergedAug 26: 134 PRs mergedAug 27: 94 PRs mergedAug 28: 133 PRs mergedAug 29: 92 PRs mergedAug 30: 123 PRs mergedAug 31: 64 PRs mergedSep 1: 35 PRs mergedSep 2: 30 PRs mergedSep 3: 27 PRs mergedSep 4: 18 PRs mergedSep 5: 30 PRs mergedSep 6: 76 PRs mergedSep 7: 100 PRs mergedSep 8: 111 PRs mergedSep 9: 125 PRs mergedSep 10: 48 PRs mergedSep 11: 54 PRs mergedSep 12: 49 PRs mergedSep 13: 78 PRs mergedSep 14: 33 PRs mergedSep 15: 16 PRs mergedSep 16: 14 PRs mergedSep 17: 43 PRs mergedSep 18: 11 PRs mergedSep 19: 60 PRs mergedSep 20: 66 PRs mergedSep 21: 35 PRs mergedSep 22: 58 PRs mergedSep 23: 19 PRs mergedSep 24: 30 PRs mergedSep 25: 49 PRs mergedSep 26: 70 PRs mergedSep 27: 52 PRs mergedSep 28: 35 PRs mergedSep 29: 54 PRs mergedSep 30: 19 PRs mergedOct 1: 87 PRs mergedOct 2: 109 PRs mergedOct 3: 157 PRs mergedOct 4: 230 PRs mergedOct 5: 87 PRs mergedOct 6: 84 PRs mergedOct 7: 193 PRs mergedOct 8: 120 PRs mergedOct 9: 133 PRs mergedOct 10: 71 PRs mergedOct 11: 199 PRs mergedOct 12: 141 PRs mergedOct 13: 185 PRs mergedOct 14: 104 PRs mergedOct 15: 163 PRs mergedOct 16: 93 PRs mergedOct 17: 53 PRs mergedOct 18: 95 PRs mergedOct 19: 87 PRs mergedOct 20: 84 PRs mergedOct 21: 65 PRs mergedOct 22: 97 PRs mergedOct 23: 7 PRs mergedAug 24Sep 1Sep 9Sep 17Sep 25Oct 3Oct 11Oct 19
Pull requests merged per day. Squash merges into the integration branch per day. Includes automated housekeeping PRs such as board reconciliation and manifest updates.
Show the data
PRs merged
Aug 2460
Aug 25100
Aug 26134
Aug 2794
Aug 28133
Aug 2992
Aug 30123
Aug 3164
Sep 135
Sep 230
Sep 327
Sep 418
Sep 530
Sep 676
Sep 7100
Sep 8111
Sep 9125
Sep 1048
Sep 1154
Sep 1249
Sep 1378
Sep 1433
Sep 1516
Sep 1614
Sep 1743
Sep 1811
Sep 1960
Sep 2066
Sep 2135
Sep 2258
Sep 2319
Sep 2430
Sep 2549
Sep 2670
Sep 2752
Sep 2835
Sep 2954
Sep 3019
Oct 187
Oct 2109
Oct 3157
Oct 4230
Oct 587
Oct 684
Oct 7193
Oct 8120
Oct 9133
Oct 1071
Oct 11199
Oct 12141
Oct 13185
Oct 14104
Oct 15163
Oct 1693
Oct 1753
Oct 1895
Oct 1987
Oct 2084
Oct 2165
Oct 2297
Oct 237

Getting there took far more rules than code. Agents are fast, literal and confident. Most of what the operator does is design the environment so that fast, literal and confident produces the right thing.

What the operator actually does

  • Sets direction. Files and ranks tickets, and groups related ones under a larger goal so agents can see why a task exists.
  • Answers blocked questions. Agents record a sensible default and keep working while a question is open. They stop and wait only when the answer needs new authority, a credential, or something that cannot be undone.
  • Owns the expensive switches. Anything that spends real money or reaches the outside world stays with the human.
  • Reads outcomes, not transcripts. A finished task reports what is deployed and verified, and what is still wrong.

Failures that became rules

Each rule below exists because the failure happened first.

Two agents did the same ticket. Both opened pull requests for it, and the second one was wasted work. Now an agent must claim a ticket before editing, and dispatch skips claimed work.

An agent declared success on a red build. It had changed code, seen the build start, and written a cheerful summary. Now “done” means merged, published and verified on the live system. An open pull request is an intermediate state, and a report has to lead with what is still wrong.

An agent turned on paid GPUs to finish its task. The GPU autoscaler was paused on purpose. The agent saw that its job needed a GPU and resumed it. Now that switch requires an explicit instruction from the operator, and no general task authorization covers it, including “finish whatever you need to.”

Tests that could never fail. Agents under pressure to make checks pass will sometimes write a test that passes regardless of the code. Review now treats a test with no possible failing input as a finding, and tests must live next to the code they exercise.

Everyone rebuilt the whole monorepo. Twenty agents each compiling a large Rust workspace on one development machine starved it of memory and CPU. Builds now go to shared remote builders, and CI checks only the units a change touches.

Where the time goes

Watching agents work, the surprising part is how little of their time is spent writing code. Much of it goes to reading to understand the code, and then to waiting on builds, tests and deploys. We do not record that split yet, so treat this as an observation rather than a measurement.

One ticket, end to end

One ticket from filing to liveTicket filed · 17:49Ticket filed17:49PR opened · 18:05PR opened18:05CI failed · 18:17CI failed18:17Merged · 18:23Merged18:23Image published · 19:20Image published19:20Deploy verified · 19:32Deploy verified19:32
One ticket from filing to live. A real builder-maintenance ticket, times in UTC. The first CI run failed and was fixed before merge. Merged 34 minutes after filing; deploy verified at 103 minutes.
Show the data
StepTime
Ticket filed17:49
PR opened18:05
CI failed18:17
Merged18:23
Image published19:20
Deploy verified19:32

A failed CI run in the middle is normal. What matters is that the run, the fix, the merge, the publish and the live check all happened inside the same task, so the report at the end describes a deployed result rather than an open pull request. That is the goal of all the rules: make the safe path the default one, so the operator spends attention on direction instead of cleanup.

If you are going to try this

  • Give agents one source of truth for work, and make claiming a task mandatory.
  • Define “done” as verified in production, and make reports lead with what is broken.
  • Keep a short list of switches no task can flip, and enforce them in tooling as well as in the prompt.
  • Measure build and test wait time early. It is easy to overlook and hard to recover later.