Last quarter one of your teams opened 140 pull requests in a week. Eleven engineers wrote nine of them. The rest came from coding agents, and your CI bill and your senior reviewers both noticed before you did.
This is no longer a thought experiment. Kiro workflows, announced this week, let multiple agents carry a complex task from start to finish with less supervision. Git 2.56 shipped git add --resolved, which refuses to stage files that still contain conflict markers, and git branch --delete-merged for bulk cleanup of landed topic branches. Those are exactly the safety rails an unattended agent needs to merge and tidy up on its own. The tooling now assumes machines commit. Most repositories, pipelines, and review processes still assume humans do. That gap creates two costs that principals should own: CI capacity and reviewer attention. Both are finite budgets, and agents will spend them as fast as you let them.
Section 1: Control pipeline cost before it controls you
Why agent volume inflates CI spend
Agents work differently from people. They push in small increments, retry when a test fails, open draft PRs to check their own work, and iterate in tight loops. A human might push four times on a feature branch. An agent might push forty. If every push triggers your full pipeline, including integration suites and end to end tests against ephemeral environments, you pay full price for every intermediate guess.
Tier the pipeline by PR state
Not every push deserves the whole pipeline. Split CI into tiers:
- Every push: lint, type checks, unit tests, secrets scanning. Minutes, not tens of minutes.
- PR marked ready for review: integration tests, end to end suites, performance checks.
- Merge queue: the final gate against the current main branch.
In GitHub Actions, the ready state is an event you can gate on:
on:
pull_request:
types: [opened, synchronize, ready_for_review]
concurrency:
group: ci-$
cancel-in-progress: true
jobs:
fast:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: make lint unit
full:
if: github.event.pull_request.draft == false
needs: fast
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: make integration e2e
Agents iterate cheaply in draft. They pay for the expensive suites only when they claim they are done.
Budgets, quotas, and queue priority
Give each agent identity, or each repository, a monthly CI minute cap. Put agent jobs in a separate runner pool with a concurrency limit so a burst of agent retries cannot starve a human who is waiting to ship a hotfix. When the queue is contended, human PRs go first. An agent that hits its quota should stop and report, not silently queue more work.
Smarter triggers
Three techniques cut most of the waste:
- Test what changed. Use path filters or a build system with dependency graphs (Bazel, Nx, Gradle) to run only affected targets.
- Cache aggressively. Dependency caches and remote build caches mean the fortieth push reuses the work of the thirty ninth.
- Cancel superseded runs. The
concurrencyblock above kills the in flight run when the agent pushes again to the same branch. No one needs results for a commit that is already obsolete.
Make the cost visible
You cannot manage what the bill hides. Tag every pipeline run with the author type: agent or human, plus the agent identity. If you run builds on AWS CodeBuild or self hosted runners on EC2, propagate those tags into cost allocation tags so Cost Explorer shows what agents actually cost per merged change. That number turns a vague concern into a budget conversation.
Section 2: Automated review, human approval
The review problem
Line by line human review does not scale to agent volume. Teams that try anyway get one of two outcomes. Reviewers burn out, or they start skimming and approving, which is worse because it looks like control. Removing humans entirely is not an option for production systems; someone has to own the decision to ship. The answer is to change what the human reviews.
Automation does the first pass
Before a human sees an agent PR, it should clear an automated gauntlet:
- An AI review agent that reads the diff against the linked task and comments on logic, edge cases, and missing tests.
- Static analysis and type checking.
- Security scanning and secrets detection.
- License and dependency checks for every new or bumped package.
- Policy as code for infrastructure. Use AWS CloudFormation Guard for templates or OPA for Terraform plans and Kubernetes manifests.
cfn-guard validate \
--data templates/ \
--rules policies/org-baseline.guard
Give the human a review brief
The output of that first pass is not a wall of bot comments. It is a structured brief posted at the top of the PR:
REVIEW BRIEF
What changed: Adds retry with backoff to payments client
Why: Task PAY-412, intermittent 503s from processor
Risk tier: HIGH (touches payments/, IAM policy)
Sensitive files: infra/iam/payments-role.yaml
Coverage delta: +3.1% (12 new tests)
Flags: IAM policy adds kms:Decrypt on wildcard resource
The reviewer reads the brief, then goes straight to the flagged areas. Attention lands where the risk is.
Humans still approve
Automation can block. Automation can flag. Automation never approves a merge to a production path. Require approval from a named owner, routed by CODEOWNERS and by risk tier, enforced with branch protection. That preserves accountability: when something breaks, there is a person who decided it was ready, not a pipeline that shrugged.
Risk tiers set review depth
- Low risk (docs, tests, minor dependency bumps that pass all checks): the human confirms the brief matches the intent and approves.
- High risk (IaC, authentication and authorization, data schemas, production configuration): deep human review, but focused on the regions automation narrowed down.
Keep the reviewers honest
A human approval step is only valuable if it is real. Measure it:
- Time to approve. A high risk PR approved in 40 seconds is a signal.
- Flag override rate. How often do reviewers dismiss automated flags, and were they right?
- Audit sampling. Pull a random sample of approved PRs each sprint for a second review.
- Escaped defects. Track production issues the automated reviewer missed and feed them back into rules and prompts.
Hype check: is AI reviewing AI the blind leading the blind?
Partly true, mostly misdirected. Automated reviewers are excellent at patterns: known vulnerability classes, policy violations, leaked secrets, missing tests, license conflicts. They are consistent and they do not get tired at 4 PM on Friday. They are weak at intent. Does this change solve the right problem? Does it fit the architecture the team agreed on? Will it create an operational burden in six months? Those questions need a human with context, and accountability for production needs a human with a name.
So the real risk is not that a model reviews another model’s code. The real risk is a human approval step that quietly decays into a rubber stamp while everyone believes it is still a control. Design for that failure mode, measure it, and you get the volume benefits of agents without giving up ownership.
Practical takeaways
- Tier your pipeline so agent drafts run only fast checks; reserve integration and end to end suites for ready PRs.
- Set CI minute caps and concurrency limits per agent, and prioritize human PRs in the queue.
- Tag pipeline runs by author type so agent CI cost appears on the bill.
- Require an automated first pass and a structured review brief before any human review.
- Keep named human approval for production paths, routed by risk tier, and audit it with real metrics.
Agents will keep getting faster at writing code. The scarce resources in your organization are now compute budget and human judgment. Spend both deliberately. How is your team handling agent PR volume today?