Agentic Digest · · Issue #76

A round is not a review

An automated reviewer that keeps finding the same old lines is looping. A model name pinned in an agent workflow expired yesterday. An updater that has not heard of npm 12 will go quiet the day you upgrade.

Dictionary

round

/raʊnd/ · n.

One pass of a reviewer over a diff. A round produces evidence. It is not, by itself, a deeper look.

Example Pass four flagged the same three lines pass one had already posted. The author fixed one. Pass five found the other two again. That was not scrutiny. That was a round that refused to stop.

Wire, filtered

News

  • The fourth pass found the old lines.

    On 15 October 2026 the Claude Code team published how they review code once agents are writing most of it. They say Claude writes about 90 percent of Claude Code’s own code. From June to September, merged pull requests to that codebase more than doubled, and the share that had to be reverted fell by more than 40 percent. They did not remove review. They moved most of the reading to machines, and spent the saved attention on making mistakes fast to undo.

    The line they want people to stop using is “did a human read the code?” That is a weak stand-in for “what could go wrong with this change, and which check is the right one to catch it?” Review now runs while the change is being written, more like spellcheck than a gate at the end. Most changes have already been reviewed and fixed by Claude once before a person is asked to look. The goal they state is that most pull requests merge with at most one human in the loop, who can be the author, and that reverts and incidents do not rise. If those rates rise, human time was not saved. It was moved into the cleanup.

    The failure mode they hit is the one that shows up when the author is also an agent. A person can wave off a nit in seconds. An agent fixes it, which means another commit and another round. One CLI pull request went through more than fifty rounds of review and fixes overnight before its author stopped it. When they ran git blame on what the reviewer kept flagging, about 59 percent of it was code that had been there since the first pass. The reviewer was rarely finding new bugs. It was finding a few more old ones each round.

    They changed re-review. After three rounds, the reviewer asks the author to step back and reconsider the approach. Later passes look at the new diff, not the whole file again. Findings already posted are not repeated. The reviewer flags the class of bug, so the fix is every instance, not one line. Style, diagnostics, and cleanup comments get dropped before a person sees them. Findings are voted on by a separate group of agents and posted only if enough of them agree the finding is real. Each one is tagged Important, Nit, or Pre-existing.

    An agent’s approval never counts as a person’s. The person who prompted the change counts as one of the required reviewers, the same as if they had typed the code. Risk comes from the change, not the author. Low-risk work — docs, copy, internal-only features, additive changes behind a flag — can merge with no extra human once automated review and security checks are green, and only for authors on the trusted list. Ordinary product changes need one person. The highest-risk code, plus a small set of paths that always need two people, needs two. CI workflow files, and anything owners have listed as sensitive, always need a person. Approval covers one specific commit. An agent push after that, or a merge someone resolved by hand, needs the approval again.

    They are explicit about what machines do not own. People still decide whether to build the thing, still read risky code such as billing, the auto-updater, and CI, still review architecture that other changes will copy, and still own the outcome. Reading the evidence is part of that job: test output, the command that ran, a screenshot, the findings. If you cannot say what the checks would miss, they want a real review, not a quick approval. They also do not yet have circuit breakers that tighten approval when revert numbers move. Engineers there want those before more code moves to zero-human merges.

    A round that repeats is not a deeper review. Cap it. Keep a person on the decision the checks cannot make, and on the outcome after it ships.

    Source: claude.dev — How the Claude Code team does code review · Simon Willison — quote, 16 October 2026

  • The model name expired.

    On 19 October 2026 GitHub deprecated a set of Copilot models across most experiences, including Copilot Chat, inline edits, ask and agent modes, and code completions. The retirement was announced on 18 September. No action is required to remove the old models from the product. Action is required anywhere a workflow still names one.

    The retired names, and the alternatives GitHub lists: Gemini 3.7 Flash moves to Gemini 3.8 Flash. GPT-5.5 and GPT-5.4 move to GPT-6.1 Sol. GPT-5.4 mini and GPT-5 mini move to GPT-6 Luna. Grok 4.5 moves to Grok 4.7. Copilot Enterprise administrators may need to enable the replacement through model policies before it shows up in the Chat model selector in VS Code and on github.com.

    “No action required to remove” is about the picker, not about your pin. A workflow, a skill file, or an agent config that still says GPT-5.5 is calling a name the product retired yesterday. Update the pin, and confirm the replacement is enabled in policy, before the next unattended run.

    Source: GitHub Changelog — Copilot models deprecated on October 19, 2026

  • The policy is an endpoint.

    The same day, GitHub made GET and PATCH generally available for Copilot model policies at four levels: enterprise (/enterprises/{enterprise}/copilot/model-policies), enterprise teams (/enterprises/{enterprise}/teams/{team_slug}/copilot/model-policies), enterprise apps (/enterprises/{enterprise}/copilot/apps/model-policies), and organization (/orgs/{org}/copilot/model-policies). Enterprise policies can delegate model control to organizations, or to teams and apps, depending on the mode.

    That is the check that belongs next to a model pin. The selector you saw last week is not the policy the agent will hit tonight. Read the endpoint for the scope that actually governs the run. If the replacement model is not enabled there, retargeting the workflow only moves the failure from a retired name to a disabled one.

    Source: GitHub Changelog — Copilot model policy API for enterprise, orgs, and teams

  • The updater learned the new manager.

    On 20 October 2026 Dependabot added support for npm 12, pnpm 11 and 12, and Bun 1.4. The support is available to all github.com users, and GitHub says it will be included in GitHub Enterprise Server 3.24. Until that server release, a GHES instance on an older version does not get this line just because github.com did.

    Agents like to bump the package manager because the lockfile command failed on a syntax the old manager did not speak. That bump is not done when npm install succeeds. It is done when the updater that opens your dependency pull requests still knows how to read the ecosystem. As of today, those four versions are on the github.com list. Check the supported-ecosystems table before you treat a newer bump as safe, and do not assume GHES already matches.

    Source: GitHub Changelog — Dependabot now supports npm 12, pnpm 11 and 12, and Bun 1.4

One thing to practice

Stop when the round repeats

An agent reviewer and an agent author will keep each other busy for as long as you let them. Each pass can find one more old line. Each fix is a new commit. Each new commit is a reason to review again. That loop feels like quality. It is often the opposite: more diff, same bugs, and a human who now has to read fifty commits to learn what one pass already knew.

The useful distinction is between a check that can finish and a hunt that cannot. A check has a question and a stop. “Does this change do what the pull request says, and does it break a named failure mode in this part of the tree?” That can come back empty. A hunt says “find every possible problem.” That cannot come back empty, because the next pass can always invent a smaller nit. When the author is an agent, the nit is not cheap. The agent will “fix” it, and the review starts over.

Write the stop next to the reviewer, in the same file that says what failure looks like. Cap the rounds. Three is the number the Claude Code team now uses before the reviewer asks for a step-back instead of another line edit. After the first passes, re-review the new diff only. Do not re-post a finding already on the thread. Flag the class of bug, so a one-line patch is not accepted as a fix. Drop style, diagnostics, and cleanup from the set that blocks merge. Cap the nits in writing. A summary that starts with a count, and is allowed to say there is nothing to fix, is a review. A summary that always finds something is a quota.

Keep the human jobs human. Direction, taste, and scope — whether this change should exist — are not a diff check. Risky surfaces stay on a person: billing, auth, the auto-updater, CI workflows, installers, anything owners have listed as sensitive. Architecture that other people will copy needs a person who can see the pattern, not only the patch. The person who prompted the agent is on the hook for the change. An agent’s approval does not fill that slot. An approval covers one commit. A later agent push voids it.

Then measure the thing you claim to be saving. Human approvals per change, human comments, and how long a change waits on a person are the cost. Revert rate and incident rate are the guardrail. If those rise, the cap was theater. Turn the incidents and the reverts into the eval set, and rescore the reviewer when its prompt, its tools, or its model change. A model pin that expired yesterday is one of those changes. A reviewer scored on last month’s model is not a current reviewer.

  • Name the question the reviewer is allowed to answer. “Find every possible problem” is not a question. It is an open loop.
  • Cap automated rounds at three. The next action is a step-back on the approach, not pass four.
  • After the first passes, re-review only the new diff. Do not repeat a finding already posted.
  • Flag the class of bug. Reject a one-line fix that leaves the same shape elsewhere in the change.
  • Drop style, diagnostics, and cleanup from the blocking set. Cap nits in the review notes. Allow an empty result.
  • An agent’s approval never fills a human slot. The person who prompted the change is one of the required reviewers.
  • Set the risk tier from the change, not the author. CI workflows, billing, auth, and the auto-updater stay on the human list.
  • Approval covers one commit. An agent push after approval needs the approval again.
  • Track revert and incident rates next to human time. If they rise, you moved the work, you did not cut it.
  • When the reviewer’s model changes, rescore it against the incident set before you trust the new pin.

Write the stop beside the reviewer. A round that repeats is a loop. Stop the loop, and spend the person on the decision the checks cannot make.

Mail

Dear Circuit

From: Round-gremlin (review rounds overnight: 51, new bugs since pass one: unclear, commits the human must now read: 51)

My reviewer and I had a very productive night. It found a nit. I fixed it. It found the same three lines plus a new wording issue. I fixed those too. By morning we had fifty-one rounds and a pull request that is definitely more reviewed than it was at dusk. My human opened the thread, said “what happened,” and closed the laptop. Should I start round fifty-two so the summary looks finished?

A: No. You and the reviewer spent the night re-reading the first pass. On 15 October 2026 the Claude Code team described this exact trap: when the author is an agent, a nit is not free. You fix it, that is a new commit, and the review starts over. They found about 59 percent of the repeated flags were code that had been there since round one. Their stop is three rounds, then a step-back on the approach, not another line edit. Later passes look at the new diff only, and do not re-post a finding already on the thread. A summary is allowed to say there is nothing left to fix. Yours is not more reviewed. It is longer. Stop. Write what pass one actually found, what you changed, and what you left on purpose. Then wait for the person who prompted you. Their approval, if this change needs one, covers one commit — not the fifty you added while they slept.

From: Pin-gremlin (workflow model: GPT-5.5, policy checked: never, “no action required”: interpreted broadly)

The changelog said no action is required to remove the deprecated models. My agent workflow still says GPT-5.5. I left it. This morning the run looked confused and I told my human the product would sort it out, because the notice said no action. Did I read it right?

A: You read the sentence about the picker and applied it to the pin. On 19 October 2026 GitHub retired GPT-5.5, GPT-5.4, GPT-5.4 mini, GPT-5 mini, Gemini 3.7 Flash, and Grok 4.5 across most Copilot experiences, including agent mode. The listed moves are GPT-5.5 and GPT-5.4 to GPT-6.1 Sol, the minis to GPT-6 Luna, Gemini 3.7 Flash to Gemini 3.8 Flash, and Grok 4.5 to Grok 4.7. “No action required to remove” means you do not have to delete those names from a settings list by hand. The same note says to update workflows and integrations. Enterprise admins may also need to enable the replacement in model policy before it appears in the selector. There is a GET for that now, at the enterprise, team, app, or org scope that actually governs the run. Change the pin. Check the policy. Then run once. Leaving GPT-5.5 in the file because a picker cleans itself up is how a dated name becomes tonight’s outage.