Only the exceptions

In October I wanted Devin to own an issue the way Claude Code already could on my laptop: read what our sales lead filed, ask what it needs to ask, fix it, prove it, and come to me only for the exceptions. Devin had worked on our product briefly in late August and early September, then gone quiet. Almost every fix still went through Claude Code in a terminal on my MacBook, so every fix waited for me.

This is what happened from Friday 2 to Tuesday 6 October 2026, when I tried again.

In short

Terms used here

Disclosure. I am a Devin ambassador. This account comes from my Claude Code transcripts, Devin's session records, our company brain and the Git history. Repository names, usernames, issue and PR numbers, customer data and internal identifiers are left out, and other people are described by role. My quotes are copied as I typed them; square brackets mark a replaced name. Times are Singapore time (UTC+8).

Timeline: 2 to 6 October

The turning points. The details are in Key learnings.

Friday 2 October

Saturday 3 October

Sunday 4 October

Monday 5 October

Tuesday 6 October

Why Devin needs a reviewer

And how close that gets it to Claude Code on Opus 5.5.

My Sunday question set the bar: "up to your standards". "Your" meant Claude Code, and every Claude Code session and reviewer in this story ran Opus 5.5. The bar was not the model alone. It was a fresh reviewer for each change, briefed to find what green CI misses and to break the code on purpose, and a lead session that re-checked its evidence. Against that bar, Devin's own checks kept passing work the reviews then failed:

WorkDevin's own checksWhat the review foundScore
Friday's batchCI greenSomething wrong in every fixNot scored
Receipt emailTests passingSend could never open its dialog4 of 8, then 5 of 7
REVISED colourTests passingTests that skipped the real wiring; a side effect under-reported about tenfold5.5 of 7, then 6 of 7
Guard hook"Fails closed"Failed open on a crash2.5 of 4, then passed
Monday's pilot PRsTested on dev by the sales leadFalse claims and an undisclosed data changeNot scored

Yet reviewing code it had not written, Devin caught every planted defect. Claude's diagnosis on Sunday: "Devin reviews others' code well, but it does not apply that adversarial review to its own work." When I said they were "actually the same model", Claude answered: "It's the setup, not ability". Devin started each session without the lessons, on a half-built machine with no browser test tools, and nothing made it back up its claims. More instructions would not fix that; the playbook already said it all. A second session briefed to find fault would. (Whether they really were the same model I could not tell: Devin does not show which model runs a step.)

Opus 5.5 was not flawless either; Claude's mistakes are in the table further down. What made the Claude Code side trustworthy was a separate reviewer, not a model that never errs. The reviewer child copies that.

How we got to the design

Three things ruled out the obvious answers. The sales lead merged within minutes, so a human merge step was not a review. GitHub's branch protection needed a paid plan I would not buy. And I did not want Claude in the loop. Devin's own PR review only starts after a PR opens, but Managed Devins let one session start another. So the review moved before the PR: the working session starts a reviewer child, and only a pass opens a PR. The automation prompt went through seven versions in under a day:

PromptSavedWhat it changed
Go-liveBy 07:51 MonClaim, ask, fix, hand over, check on dev after merge, close on "works". Never merges.
v213:25Product facts from the brain; test data is never the reporter's job.
v3PartlyOnly an OK on the issue counts as approval.
v417:35A reviewer child before any PR; after two failed rounds, NEEDS JENSEN.
v4.118:02A soft spend cap for the reviewer; eight sessions at once.
v518:15SMALL and STANDARD tiers; a resume block on each handover page.
v5.100:27 TueLabelled findings, PASS WITH GAPS, sessions that archive themselves.

Is it on par with Claude Code on Opus 5.5?

Not measured, beyond one blind review. What we have:

So the reviewer was necessary: working alone, Devin fell short of the bar, while reviewing others it met much of it. Whether builder plus reviewer closes the gap is not measured yet. I will lighten review once about five PRs in a row pass with no blocker found.

Key learnings

What went wrong, what we did, and what we learnt.

1. A green build is not a reviewed change

What went wrong. Devin merged six PRs in 30 seconds with CI green. Every one had a flaw CI could not see.

What we did. Repaired them, and wrote the playbook: list every reader, writer and render path; prove each test fails without the fix; script every data change; say what you could not verify.

What we learnt. CI and the author's tests check what the author thought of. The defects were in what it did not.

2. Devin reviews others well, not itself

What went wrong. Devin caught every planted defect in code it had not written, then shipped a blocker in its own, on a machine without browser test tools.

What we did. Fixed the machine, then made review someone else's job: a reviewer child with fresh context and a brief to find fault.

What we learnt. Instructions do not create scepticism about your own work; a separate session does. Check the environment before blaming the model.

3. Stay a grader

What went wrong. On Sunday morning Claude began lining up Devin's remaining tasks for itself.

What we did. I stopped it: "don’t forget you are grading Devin’s work. So.. Devin should be the one doing the tasks not u". A coordination board in the company brain replaced my hand-relaying, with one rule: a message from Devin is a request, never an approval.

What we learnt. If the grader finishes the job, you never learn what the agent cannot do.

4. Decide who merges, and how fast

What went wrong. Mine. The merge rule took five positions in four days. I merged two PRs unreviewed, and they carried a blocker. I made the sales lead a merger against Claude's advice, without thinking about speed; they merged four PRs within minutes, which broke no rule.

What we did. Moved review before the PR exists. No paid plan, no Claude in the loop. "this is all part of the learning process", I wrote at 17:05.

What we learnt. A human merge step is only a review if that human reviews.

5. Fix the cause of a recurring bypass

What went wrong. For weeks I approved the guard bypass push by push. Old failures had reached the development branch through merges on GitHub, where the guards never run, so every push was blocked. Only 3 of the 47 blocking checks also ran in CI.

What we did. Cleared the old failures, made the guards block only new problems, and required a written reason for any bypass.

What we learnt. Every approved bypass teaches every agent that bypassing is normal.

6. Read the live setting, not the one you remember

What went wrong. I assumed Devin ran on Fusion, because almost all my own Devin sessions did. The automation form said "Org default (Normal)" at 00:57 on Monday, and Claude read it twice more that day without flagging it. Claude also reported prompt v3 saved when only part of it was.

MondayWeekly quota usedWhat was happening
00:0522%Automation not yet built.
18:0464%Thirteen issues in, reviewer children running.
18:1669%v5 saved; "let's monitor it first".
23:4686%Still on Normal. SWE-2 High from 23:51.

What we did. SWE-2 is not on the automation's own menu, so I set it as the organisation default and the API default, which reviewer children use. Every prompt save is now reloaded and compared with the file.

What we learnt. Before reasoning about cost or behaviour, read the value on the page that sets it. "this is a learnable mistake.", I wrote at 23:53.

7. Every restart costs a full read

What went wrong. Each reply starts a fresh session that re-reads everything and re-runs the baseline tests. One issue took four sessions. Claude twice posted new instructions on issues already in progress, restarting each one.

What we did. v5 added size tiers, a resume block and a leaner reviewer, and we stopped posting instructions mid-flight.

What we learnt. When every event starts a session, a human comment is the expensive unit. Batch them.

8. A strict reviewer creates a second queue

What went wrong. Two failed review rounds sent an issue to me. By midnight almost everything was waiting for me, mostly over test strength. One change failed only on its PR wording.

What we did. In v5.1, defects, process gaps and test gaps on a STANDARD change still mean FIX FIRST. Wording problems, and test gaps on a SMALL change, mean PASS WITH GAPS: fix what is cheap, list the rest.

What we learnt. Block on what changes users or stored data; list the rest.

9. The work was better than the report

What went wrong. PR descriptions claimed results a re-run did not reproduce. A handover said "browser-tested" about a local build.

What we did. The reviewer marks every claim TRUE, FALSE or UNVERIFIED with evidence, and a false claim is fixed before the PR opens.

What we learnt. Read the claims before the diff.

10. The issue is the record; sessions are disposable

What went wrong. By Monday night 68 sessions sat sleeping, and an old session wakes on a PR comment, outside the issue flow. My question at midnight: "but how do we know when it's DONE?"

What we did. GitHub already knows: a closed issue with a DONE comment. In v5.1 every session archives its reviewers and then itself. Archiving never touches a PR.

What we learnt. Keep state where people already look.

Who made which mistake

WhoMistakes
MeLet Devin self-merge after Claude's warning. Gave the merge rule five positions in four days. Merged two PRs unreviewed. Made the sales lead a merger without thinking about speed. Approved bypasses for weeks. Assumed Fusion. Left the review rule too strict.
ClaudeShipped a printout fix without checking the deployed render. Recommended and used the bypass. Reported v3 saved. Read "Normal" three times without flagging it. Misread my "2. done", leaving a fix idle for nine hours. Restarted sessions in progress. Started doing Devin's work while grading it.
DevinSix merges in 30 seconds, each with a flaw. Read a stale copy of the playbook. Asked the sales lead to choose test data. Recorded an approval nobody could find. Made PR claims a re-run did not reproduce. To be fair, it stopped at questions instead of guessing, found older defects nobody had reported, and listed what it could not verify.

How it works now

As it runs from 6 October, on prompt v5.1.

The flow

  1. The sales lead opens an issue: screen, document number, screenshot. Nothing to tag.
  2. A Devin session claims it, or ends quietly if the issue is not for it.
  3. It asks, if it must: one headed comment, then it ends. A reply starts a fresh session.
  4. It fixes, sized SMALL or STANDARD, and breaks its own fix on purpose to test the tests.
  5. A reviewer child checks it before any PR. PASS or PASS WITH GAPS opens the PR. FIX FIRST means another round; after two, NEEDS JENSEN.
  6. A human merges and comments merged. Devin checks the change on the development site and posts test steps.
  7. The sales lead tests. works closes the issue with DONE, and Devin records the fix in the company brain. Each session ends by archiving its reviewers and itself.

What the sales lead does

To…The sales lead does thisExample
Report a problemOpens an issue: screen, document number, screenshot.an issue
Answer DevinReplies in a comment. Editing the issue text does not wake Devin.1a, 2b
Test the fixFollows the Ready to test in dev steps, then replies works or what they saw.works
Keep Devin off an issueComments devin stop or adds devin:skip.devin stop
Bring Devin to an old issueMentions @devin in a comment.@devin

What Devin posts on the issue

HeadingForContents
QUESTIONSales leadUp to five numbered questions with lettered options, no code terms.
NEEDS A DECISIONEither of usA business rule, price or data change, with options and a recommendation.
NEEDS OKEither of usThe risk, and the exact reply that approves it.
NEEDS JENSENMeProduction or UAT data, missing access, or two failed review rounds.
REVIEWBothPASS, PASS WITH GAPS or FIX FIRST, with labelled findings.
PR READY FOR REVIEWBothPR links, merge order, checks, and what Devin could not verify.
READY TO TEST IN DEVSales leadWhere to click, which test record, what they should see.
DONE / STOPPEDBothA one-line summary, or confirmation that Devin will stay out.

The reviewer

Guards and settings

What I could not confirm

Early on Saturday Devin merged six PRs in 30 seconds. Now it takes an issue from a sales lead, asks in plain English, fixes, has a second Devin review the change, and waits for a human. It still sends too much back to me, and it spent most of a week's quota showing me why. Both are fixable, and both are mine to fix. If you are building something similar, I would love to compare notes.

The systems this pilot sits on.