<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Serhii Troian</title>
    <description>The latest articles on DEV Community by Serhii Troian (@serhii_troian_getorigin).</description>
    <link>https://dev.to/serhii_troian_getorigin</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4032541%2F43351e0a-0cca-4592-883f-63c50d98f7a6.png</url>
      <title>DEV Community: Serhii Troian</title>
      <link>https://dev.to/serhii_troian_getorigin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/serhii_troian_getorigin"/>
    <language>en</language>
    <item>
      <title>Orchestrator: Agents Take the Next Issue While You Review</title>
      <dc:creator>Serhii Troian</dc:creator>
      <pubDate>Tue, 10 Nov 2026 17:34:14 +0000</pubDate>
      <link>https://dev.to/serhii_troian_getorigin/orchestrator-agents-take-the-next-issue-while-you-review-147l</link>
      <guid>https://dev.to/serhii_troian_getorigin/orchestrator-agents-take-the-next-issue-while-you-review-147l</guid>
      <description>&lt;p&gt;Last week, we added a Start with button to every issue in Origin.&lt;/p&gt;

&lt;p&gt;Pick an issue, choose Claude Code or Codex, press Start, and the agent runs headlessly on your machine. It gets its own Git worktree, works through the task, and opens a pull request when it is done.&lt;/p&gt;

&lt;p&gt;That workflow worked well, but it also made the next bottleneck obvious. Agents were ready to work, yet they still spent most of the day waiting for one of us to open the issue list, decide what should run next, choose an agent, and press the button.&lt;/p&gt;

&lt;p&gt;So we automated that part too.&lt;/p&gt;

&lt;p&gt;Origin's Orchestrator now watches the issue queue on a schedule. It finds work that is actually ready, takes issues by priority, assigns each one to the agent most likely to finish it, and starts the run automatically.&lt;br&gt;
Once a PR opens, reviewer agents take over. If they request changes, the coding agent gets another round on the same branch. When every required review passes, the run stops at Ready to merge.&lt;/p&gt;

&lt;p&gt;Final merge still belongs to a person.&lt;/p&gt;

&lt;p&gt;On the first live day in our own workspace, Orchestrator handled 43 runs and produced 21 PRs ready to merge.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo5g9yttxplqoeeetsgfb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo5g9yttxplqoeeetsgfb.jpg" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Orchestrator in our own workspace after its first live day: 43 runs and 21 PRs ready to merge.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How AI Agent Orchestration Picks the Next Issue&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By default, Origin checks selected repositories every 10 minutes instead of simply grabbing the first open issue.&lt;/p&gt;

&lt;p&gt;Before an issue enters the execution queue, several conditions have to be true. Nobody else can already own it, every dependency must be closed, and the issue has to match configured filters such as type, labels, and maximum priority.&lt;/p&gt;

&lt;p&gt;Work that clearly should not be handled by a coding agent gets skipped.&lt;br&gt;
We added that filtering after seeing what happened on our own issue list. During the first live day, Orchestrator picked up three issues starting with “Verify…” and another that said it “waits on the replay benchmark.” Each one occupied a slot for roughly 15 minutes before the agent reached the pre-start check and asked for clarification.&lt;/p&gt;

&lt;p&gt;Those were valid issues, just not actionable coding tasks.&lt;/p&gt;

&lt;p&gt;Origin now leaves them out, along with anything marked [Postponed].&lt;/p&gt;

&lt;p&gt;Once the ready queue is clean, Orchestrator fills available execution slots. You control how many AI agent runs can happen at once we use two  and can also set a daily budget or restrict automated execution to a specific window, such as overnight.&lt;/p&gt;

&lt;p&gt;One additional rule keeps the queue balanced: Origin will not start more than one new issue per agent during the same check. Otherwise, one high-performing agent could consume the whole queue before other available agents get a chance to run.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How Origin Chooses the Best Coding Agent&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Only agents that can actually run are considered.&lt;/p&gt;

&lt;p&gt;For local agents, the required CLI has to be installed and signed in on one of your machines. Cloud agents such as Copilot, Cursor, or Devin need the corresponding credentials.&lt;/p&gt;

&lt;p&gt;Once eligible agents are known, Origin scores each one against the issue.&lt;br&gt;
Three signals determine the assignment:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;60% historical completion rate. Origin looks at how often the agent has successfully finished the same kind of work, such as bug fixes, features, refactors, or chores. Task-specific performance is used once at least three relevant runs exist. Otherwise, Origin falls back to the overall rate. With fewer than three runs total, the agent gets a neutral score rather than a fabricated success rate.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;25% your agent order. Your own preference still influences the result. If one agent is ranked first in the workspace, Origin takes that into account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;15% billing model. An agent already covered by a subscription gets an advantage over one billed per token.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Origin also shows why it picked a particular agent. One of our bug-fix runs, for example, was assigned to Claude Code with this explanation:&lt;/p&gt;

&lt;p&gt;100% of 10 runs on bug fixes finished · #1 in your order · on a subscription (max) · on Artems-MacBook-Pro.local&lt;/p&gt;

&lt;p&gt;Completion rates come from the same run history already visible on the issue page. As Claude Code, Codex, or another agent completes or fails more tasks, future assignments use that updated history. In practice, routing improves as the workspace accumulates real run data instead of relying only on static preferences.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dry Run Before Automated Execution&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You do not have to hand the queue over to Orchestrator immediately.&lt;br&gt;
Dry run uses the same scheduling and agent-selection logic, then writes each planned assignment and its reason to the activity feed without starting anything.&lt;/p&gt;

&lt;p&gt;That makes it easy to watch several checks and compare Origin's choices with what you would have picked manually. If the routing looks sensible, switch to Live.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Happens When an AI Agent Run Starts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In Live mode, an issue assigned to a local agent is queued for one of your machines.&lt;/p&gt;

&lt;p&gt;Origin's existing review runner - origin review runner - claims the job and executes the same command behind the manual Start button:&lt;/p&gt;

&lt;p&gt;origin issue start  --agent claude --background --force&lt;br&gt;
Because Orchestrator uses the existing issue-runner path, all the same safeguards still apply.&lt;/p&gt;

&lt;p&gt;Every task gets its own Git worktree. Origin checks that the selected agent is signed in, runs a pre-start check to make sure the task is clear enough, applies a time limit, and expects the run to produce a pull request.&lt;/p&gt;

&lt;p&gt;Code stays on your machine and runs through your existing agent account.&lt;br&gt;
For supported cloud agents, Origin starts the task through the provider using the same prompt that the manual Start dialog would have sent.&lt;/p&gt;

&lt;p&gt;Queue handling also includes a couple of failure protections. If no runner picks up a queued run within 30 minutes, it expires. If a run starts but fails, Origin removes that issue from the orchestration plan for six hours instead of retrying the same broken launch every 10 minutes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Automated Pull Request Review and Fix Rounds&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Opening a PR does not end an orchestrated run.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzhpuc9srd960xu8h2eqv.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzhpuc9srd960xu8h2eqv.jpg" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;One of Orchestrator's PRs: Codex fixed a security alert, three reviewer agents approved it, then a person merged it.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Once the PR reaches Origin, the run moves to In review and every reviewer agent configured for that repository receives it.&lt;/p&gt;

&lt;p&gt;If all required reviewers approve the change, the run moves to Ready to merge and Origin sends a notification. Automation stops there; someone on the team still decides whether the code should actually be merged.&lt;/p&gt;

&lt;p&gt;When a reviewer asks for changes, Origin collects the findings into one fix issue and sends it back to the same coding agent on the same branch.&lt;br&gt;
After the agent pushes its fixes, the PR goes through review again. Only reviews against the new commit count, so approval from an older version of the code cannot carry over after the branch changes.&lt;/p&gt;

&lt;p&gt;You can also decide how many automated fix rounds an agent gets. Default is one, with a maximum of three.&lt;/p&gt;

&lt;p&gt;If reviewers still request changes after the final round, the fix fails, or reviewers do not finish, Origin moves the run to Needs you.&lt;br&gt;
Every run therefore ends at one of two useful human checkpoints:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Ready to merge - implementation is complete and reviewer agents approved the current commit.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Needs you - something in the execution or review loop needs a person to step in.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is the boundary we wanted to keep. Orchestrator handles issue execution, pull request review, and fix cycles without making the final shipping decision for you.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc6jjb22fpf15qqyqcu7n.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc6jjb22fpf15qqyqcu7n.jpg" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Activity feed and Orchestrator settings: fix rounds, two concurrent runs, a 10-minute check interval, and a $30 daily budget.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Happened on the First Live Day&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We switched our own workspace to Live on October 29. Setup was deliberately small: Claude Code and Codex on one MacBook, two simultaneous runs, and a $30 daily budget.&lt;/p&gt;

&lt;p&gt;By the evening, Orchestrator had started 43 runs. Claude Code handled 20, and Codex handled 23. Not every run worked, and that was probably the most useful part of the test.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;25 runs opened a PR. Twenty-one were approved by reviewer agents and waiting for merge. Two had already been merged, and we closed another two ourselves.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;14 runs ended without a commit. Agent inspected the issue but changed nothing. Some tasks had already been completed by an earlier PR. Others were too vague to act on, including one literally titled “change it - I don't know how.”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;4 runs stopped during the pre-start check. Those were the “Verify” and “waits on” issues mentioned earlier. Instead of guessing, agents asked for clarification. Those runs are also why the current filters exist.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Running Orchestrator on our own development work exposed product bugs too.&lt;br&gt;
One run finished before its PR reached Origin, which caused the review step to be skipped. Another problem involved an optional reviewer: three PRs remained in review for roughly an hour because the runner processed required reviewers first.&lt;/p&gt;

&lt;p&gt;Both issues were fixed the same day. More important, though, was what the experiment showed about the queue itself. Roughly a third of our issues were not real, actionable coding work.&lt;/p&gt;

&lt;p&gt;Some were outdated. Some had already been solved elsewhere. Others were too vague or blocked by work that had not happened yet.&lt;/p&gt;

&lt;p&gt;AI agent orchestration makes this visible quickly. Even a strong coding agent cannot do much with an issue that should not have entered the queue in the first place.&lt;/p&gt;

&lt;p&gt;Orchestrator works best when the issue list contains work that is actually ready to be done.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Orchestrator Will Not Automate&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Orchestrator has explicit boundaries. It will not merge a pull request. Runs stop at Ready to merge or Needs you.&lt;/p&gt;

&lt;p&gt;Local-agent code does not execute on Origin's servers. Local coding agents continue to run on your machine, while cloud agents execute through their own vendors.&lt;/p&gt;

&lt;p&gt;Configured limits are also hard boundaries. Orchestrator will not exceed the number of concurrent slots, go over the daily budget, or launch new work outside the execution window.&lt;/p&gt;

&lt;p&gt;Duplicate starts are blocked as well, including cases where two Origin workspaces share one repository.&lt;/p&gt;

&lt;p&gt;This is not meant to be an unrestricted autonomous coding loop. What makes sense to automate is the repetitive coordination between a ready issue and a reviewed pull request, while the team keeps control over what actually ships.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start With Dry Run&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You need three things to try Orchestrator:&lt;/p&gt;

&lt;p&gt;Origin CLI, at least one supported agent CLI signed in on your machine, and the Origin runner:&lt;/p&gt;

&lt;p&gt;origin review runner&lt;/p&gt;

&lt;p&gt;Open Orchestrator in the sidebar, select the repositories it should watch, choose the issue types it can pick up, order your agents, and configure concurrency, budget, and scheduling limits.&lt;br&gt;
Start in Dry run and watch a few checks in the activity feed.&lt;/p&gt;

&lt;p&gt;You will see which issues Origin would start, which agent it would assign to each one, and the reasoning behind every choice.&lt;/p&gt;

&lt;p&gt;If those assignments look right, switch to Live.&lt;/p&gt;

&lt;p&gt;From there, Origin keeps ready work moving through AI agent assignment, implementation, pull request review, and fix rounds while your team stays focused on decisions that still need human judgment.&lt;/p&gt;

&lt;p&gt;Try Origin and put Orchestrator to work on your issue queue.&lt;/p&gt;

</description>
      <category>ai</category>
    </item>
    <item>
      <title>HandRethinking the Pull Request for the Age of Coding Agents an issue to an agent and let it run on your machine</title>
      <dc:creator>Serhii Troian</dc:creator>
      <pubDate>Fri, 30 Oct 2026 10:01:12 +0000</pubDate>
      <link>https://dev.to/serhii_troian_getorigin/handrethinking-the-pull-request-for-the-age-of-coding-agents-an-issue-to-an-agent-and-let-it-run-on-401l</link>
      <guid>https://dev.to/serhii_troian_getorigin/handrethinking-the-pull-request-for-the-age-of-coding-agents-an-issue-to-an-agent-and-let-it-run-on-401l</guid>
      <description>&lt;p&gt;Code review rests on a fifty-year-old assumption: writing code is expensive and reading it is cheap. Coding agents turned that around. What a pull request has to become when machines write most of the code, the two ways the industry is starting to build it, and what we learned building one of them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open a pull request written by a coding agent and you get a strange feeling.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The description is perfect: neat headings, a summary, a test plan with every box checked. The diff is 1,200 lines across 31 files. The author's name is yours, because the agent ran on your laptop.&lt;/p&gt;

&lt;p&gt;And somewhere in the middle of the diff is a decision nobody made. The agent made it at 3 a.m. while you were asleep. Now it's waiting for a reviewer who'll scroll, see green checks, and type "LGTM".&lt;/p&gt;

&lt;p&gt;This isn't a story about bad agents. The agents are good, and that's the problem. They write code much faster than anyone can read it, and the pull request was never designed for that.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;This essay is about what the pull request has to become.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The deal code review was built on
&lt;/h2&gt;

&lt;p&gt;Formal code review is older than most of the languages we use. In 1976 Michael Fagan at IBM published a paper on &lt;em&gt;code inspections&lt;/em&gt;: a group of engineers in a room, a printout of the code, and a moderator reading it line by line. It was slow and expensive, and it worked.&lt;/p&gt;

&lt;p&gt;The next forty years made inspection cheaper without changing what it was. Patches went to mailing lists. Gerrit and Phabricator gave every change a review page. Around 2008 GitHub made the pull request a button, and review became the default way software gets built.&lt;/p&gt;

&lt;p&gt;Every form of it rested on the same deal:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Writing code is expensive.&lt;/strong&gt; A person spends hours or days on a change, so each change is worth a careful look.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reading code is cheap.&lt;/strong&gt; A reviewer spends minutes on what took the author hours.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The author is accountable.&lt;/strong&gt; Someone wrote every line, can explain it, and will remember why tomorrow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The conversation is the record.&lt;/strong&gt; Why something changed lives in the description and the review thread.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From that deal comes the pull request as we know it: a diff, a description, a comment thread, a green CI check, and an approval from someone who has read the change.&lt;/p&gt;




&lt;h2&gt;
  
  
  The deal is broken
&lt;/h2&gt;

&lt;p&gt;Coding agents reversed it.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Before agents&lt;/th&gt;
&lt;th&gt;With agents&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Writing&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The bottleneck&lt;/td&gt;
&lt;td&gt;Nearly free. One developer runs five or six agents, and each one ends in a PR.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Reading&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The cheap part&lt;/td&gt;
&lt;td&gt;The bottleneck. A person still reads at the speed of a person.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;The author&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Can explain the change&lt;/td&gt;
&lt;td&gt;A session that ended an hour ago&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;The description&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A record&lt;/td&gt;
&lt;td&gt;Written by the same model that wrote the code&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;On the repository we work in every day, 1,248 pull requests have been merged, and agents opened almost all of them. One person reviews them. Review stops being a quality gate and becomes a queue, and a queue that's too long gets skimmed.&lt;/p&gt;

&lt;p&gt;So teams drift into one of two failure modes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Review every line.&lt;/strong&gt; The agents spend most of their time waiting for a person.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stop reading and approve on vibes.&lt;/strong&gt; The team finds out what it merged in production.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Neither is a fix. The fix is a different idea of what a pull request is &lt;em&gt;for&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  What a pull request has to become
&lt;/h2&gt;

&lt;p&gt;Strip the PR down to its job:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Decide whether this change can land, and leave a record of why.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In 1976 the only way to do that job was a person reading the code. That's no longer true. Here is what the job looks like now, as six principles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Review intent, not lines.&lt;/strong&gt;&lt;br&gt;
The first question about agent code isn't "is this line right?" It's "what was the agent asked to do, and did it do that?" A thousand-line diff from five prompts is five things to check, not a thousand.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Machines review first, on every push.&lt;/strong&gt;&lt;br&gt;
Review agents with clear instructions (security, correctness, your team's rules) run on every new commit, and each review names the commit it reviewed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Many reviewers, one voice.&lt;/strong&gt;&lt;br&gt;
Three agents posting three comment threads is three times the reading. Their findings are merged: duplicates folded, agreement counted, disagreement shown.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. A finding starts a loop, not a thread.&lt;/strong&gt;&lt;br&gt;
A finding becomes a task, an agent pushes the fix to the same branch, and the reviewers run again. It's resolved when the next review doesn't raise it, not when someone ticks a box.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Merge conditions are rules, not habits.&lt;/strong&gt;&lt;br&gt;
"Someone looked at it" isn't a rule. "Every required reviewer approved this exact commit, nothing high-severity is open, CI is green" is one. A machine can check it the same way every time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Keep determinism where it matters.&lt;/strong&gt;&lt;br&gt;
A gate has to give the same answer twice, and an agent run doesn't. CI stays the source of pass/fail. Agents explain failures, trace them to their cause, and fix them.&lt;/p&gt;

&lt;p&gt;None of this is exotic. It's the same goal as Fagan's inspections, catching problems before they ship, rebuilt for code that arrives faster than anyone can read it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Two ways to build it
&lt;/h2&gt;

&lt;p&gt;Nobody has agreed on the shape yet, but two approaches are taking form.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Replace the host.&lt;/strong&gt; On 26 October &lt;a href="https://entire.com" rel="noopener noreferrer"&gt;Entire&lt;/a&gt; launched as a Git forge built around these ideas. Its &lt;a href="https://entire.com/features/trails" rel="noopener noreferrer"&gt;Trails&lt;/a&gt; replace the PR: review agents score every push, and gates combine approvals, CI and findings. Because it hosts the repo and the CI, it can redesign everything from scratch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build a layer on top.&lt;/strong&gt; Leave GitHub or GitLab where it is, with its branch protection and CI, and add an agent-aware layer above it. Nobody moves a repository, and everything also shows up on the host's own PR page. The price: you're limited by each host's API.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The pull request has become an audit log that only the agent reads."&lt;br&gt;
— Entire, &lt;a href="https://entire.com/blog/the-git-forge-for-agent-human-collaboration" rel="noopener noreferrer"&gt;launch post&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We took the second approach. For the past few months we've been building it into a tool called &lt;strong&gt;Origin&lt;/strong&gt;. It started as a way to record what coding agents do in a repository: the prompts, the diffs, the cost, and which agent wrote which line.&lt;/p&gt;

&lt;p&gt;That record turned out to be exactly what a pull request was missing. The rest of this essay walks through one PR's life with the six principles built in: the details that mattered, and what broke.&lt;/p&gt;




&lt;h2&gt;
  
  
  A pull request's life, rebuilt
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The queue
&lt;/h3&gt;

&lt;p&gt;It starts with the list of open pull requests. Each row shows how many agent sessions produced it and the live state of every review agent: queued, reviewing, approved, or changes requested.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6qwmk2ta5hh3vujuyti6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6qwmk2ta5hh3vujuyti6.jpg" alt="The pull request list: open PRs grouped by repository, each row with its agent sessions and the live state of every reviewer agent" width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Open pull requests, each with the live state of every review agent.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Principle 1 · Review intent, not lines
&lt;/h3&gt;

&lt;p&gt;Open a PR and you can read the diff grouped by &lt;strong&gt;prompt&lt;/strong&gt; instead of by file. Each card is one request: the agent, the model, the prompt, the decisions it recorded, then the code it wrote.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Restore&lt;/strong&gt; rolls the code back to before that prompt, if the prompt sent the agent the wrong way.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp9sdjzua73qw54nm4l6t.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp9sdjzua73qw54nm4l6t.jpg" alt="The diff grouped by prompt: a prompt card with its recorded intent and decisions above the code it wrote" width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;One card per prompt, then the code that prompt wrote.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Two details made this trustworthy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One line, one answer.&lt;/strong&gt; A line's commit comes from blame at the PR's head, and one function maps commit to session to prompt for every view: the diff, blame, CI failures and review comments. If two views could disagree about a line, you couldn't trust either.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The intent comes from the agent, while it works.&lt;/strong&gt; Agents write short markers as they go (an intent, a decision and its reason), and the hooks save them with the turn. A validator then checks each claim against what was captured, and flags "added tests" when no test file changed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo0gam1l1hug06u8ong0p.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo0gam1l1hug06u8ong0p.jpg" alt="The PR summary, then the recorded intent and key decisions with their reasons" width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;What the agent meant to do, and the decisions it made on the way.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Principle 2 · Machines review first, on every push
&lt;/h3&gt;

&lt;p&gt;A review agent is a job: what to look for, which repos it covers, which coding agent runs it, and when. It can run manually, when a PR opens, or on every push, and it can be marked &lt;strong&gt;required&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1n0519fzarf2prr4xvsj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1n0519fzarf2prr4xvsj.jpg" alt="Three review agents: API security and Correctness on every push, a third when a PR opens, two of them required" width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Three review agents, two of them required.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;One choice shaped everything else: &lt;strong&gt;review agents run on the developer's machine, not on our servers.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;People pay for Claude or ChatGPT subscriptions that sign in an agent on their laptop.&lt;/li&gt;
&lt;li&gt;The laptop already has the repo's toolchain.&lt;/li&gt;
&lt;li&gt;Running code from someone else's repo on our servers would be a security product of its own.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So the server keeps the queue and the results, and a small runner on the developer's machine does the work:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; a PR opens or gets a push. One review is queued per reviewer and commit, never two at once.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Laptop:&lt;/strong&gt; the runner, a background service, claims the oldest queued review for a repo it has checked out.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Laptop:&lt;/strong&gt; it checks out the PR's head in a separate worktree. Your own checkout is untouched.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Laptop:&lt;/strong&gt; it runs the agent read-only, e.g. &lt;code&gt;claude -p --permission-mode plan&lt;/code&gt;, with the prompt the server built.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Server:&lt;/strong&gt; the verdict and findings come back, go to GitHub, and update the status check.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The review is &lt;strong&gt;read-only by construction&lt;/strong&gt;: Claude runs in plan mode and Codex in its read-only sandbox, with no "skip permissions" flag. Each finding comes back with a file, line, severity, failure scenario and a confidence of &lt;code&gt;confirmed&lt;/code&gt; or &lt;code&gt;plausible&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The prompt is where this beats a generic review bot. A bot sees a diff. This reviewer also sees &lt;strong&gt;which agent, model and prompt wrote each file&lt;/strong&gt;, the decisions the authors recorded, and the open TODOs from the repo's history. It also gets these rules:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;From the reviewer's instructions&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Confirm a finding by reading the code it is about. Mark it "confirmed" only when you traced the failure.&lt;/li&gt;
&lt;li&gt;"High" means it breaks the change or exposes data in a reachable path. Style and preference are not findings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The authors' own notes are claims, not proof.&lt;/strong&gt; A stated verification you can't see in the diff is worth a finding.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;That last rule matters more than it looks. When the author is an agent, "I verified it" is something to check, not something to trust.&lt;/p&gt;

&lt;p&gt;Each review is recorded like any other agent session, so its cost sits on the PR next to the cost of writing the code. Ours take 2 to 20 minutes and cost about $0.70 to $1.10 each.&lt;/p&gt;

&lt;h3&gt;
  
  
  Principle 3 · Many reviewers, one voice
&lt;/h3&gt;

&lt;p&gt;Once two or more reviewers have finished, a &lt;strong&gt;judge&lt;/strong&gt; combines their findings into one list. Duplicates are folded together, each finding says who raised it, and disagreements stay visible.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F74a9pyh2dbmpg9bqjd9w.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F74a9pyh2dbmpg9bqjd9w.jpg" alt="The judge: one list of findings from three reviewers, grouped by file, each marked with who raised it" width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Three reviewers, one list.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Each reviewer's own run stays one click away, with its session and what it posted on GitHub.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuf5pmmvre1nm9bf4qkvp.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuf5pmmvre1nm9bf4qkvp.jpg" alt="Each reviewer's run with its verdict, finding count, session and links to its GitHub comments" width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Each reviewer's own run, and what it posted on GitHub.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Because this is a layer on top of the host, &lt;strong&gt;everything also lands on GitHub&lt;/strong&gt;, for people who never open the tool:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One summary comment per reviewer,&lt;/strong&gt; edited on later runs instead of repeated.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inline comments on changed lines.&lt;/strong&gt; GitHub rejects a whole review if one comment points outside the diff, without saying which, so every line is checked against the diff first.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No duplicates on re-runs.&lt;/strong&gt; Each inline comment carries a hidden marker (reviewer, file, line, title hash), so a re-run posts only what's new.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A status check&lt;/strong&gt; that branch protection can require.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Principle 4 · A finding starts a loop
&lt;/h3&gt;

&lt;p&gt;Every finding has a &lt;strong&gt;Fix&lt;/strong&gt; button, and the judge's list has &lt;strong&gt;Fix all&lt;/strong&gt;. Either one creates a task on &lt;em&gt;the PR's own branch&lt;/em&gt;, so the agent pushes to the same PR instead of opening a new one. The push is a new commit, so the reviewers run again:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Push → Reviewers → Judge → Findings → Fix task → Agent pushes the fix ↺&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Repeats on every push, &lt;strong&gt;until the merge rules hold on the current commit. Then it merges.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There's no "resolved" checkbox, on purpose. A ticked box proves nothing. A clean review of the commit that will merge proves a lot more.&lt;/p&gt;

&lt;h3&gt;
  
  
  Principle 5 · Merge conditions are rules
&lt;/h3&gt;

&lt;p&gt;This is the real replacement for "a person read it". A repository, or a whole workspace as a default, sets its &lt;strong&gt;merge rules&lt;/strong&gt;: required reviewers approve, no findings above a chosen severity, CI passes, a person approves.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnl1kdvsgbulewofyzijl.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnl1kdvsgbulewofyzijl.jpg" alt="Merge rules: a workspace default and a per-repo override with required reviewers, a finding threshold, approval and auto-merge" width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Merge rules, as a workspace default and per repository.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;One function checks the rules and returns a line per rule: met or not, and why. The Merge button, the PR page and auto-merge all read that same answer, so the button and its explanation never disagree.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Funrgykup22gti7a34k2c.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Funrgykup22gti7a34k2c.jpg" alt="An open PR: merge blocked, one of three rules met, each rule with the reason it's not met yet" width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;What stands between this PR and the merge, one line per rule.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The idea was simple. The details took most of the work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Everything is checked against the head commit.&lt;/strong&gt; An approval of commit &lt;code&gt;a1b2&lt;/code&gt; says nothing about &lt;code&gt;c3d4&lt;/code&gt;. A review of an older commit fails the rule, even if it found nothing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Head" means what the host thinks it is.&lt;/strong&gt; We once ordered a PR's commits differently from GitHub and posted the status on the wrong commit. Now every status post asks the host first.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auto-merge is stricter than the rules.&lt;/strong&gt; It lands code nobody clicked on, so it needs an explicit approve of exactly this commit from every required reviewer, and no check failing or still running.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auto-merge acts as a person.&lt;/strong&gt; It merges as whoever turned it on, re-checks their permission every time, and says so in the audit log.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It wakes on every event that could unblock a merge:&lt;/strong&gt; a review finishing, a person approving, CI completing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of this replaces the host. Branch protection still applies, and a merge on GitHub's own page follows GitHub's rules.&lt;/p&gt;

&lt;h3&gt;
  
  
  Principle 6 · Keep determinism where it matters
&lt;/h3&gt;

&lt;p&gt;CI stays the source of pass/fail. Agents work around it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Failures traced to prompts.&lt;/strong&gt; A failed check's &lt;code&gt;file:line&lt;/code&gt; goes through the same blame step, so "the type check failed" becomes "it failed on a line written by &lt;em&gt;this prompt&lt;/em&gt;".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix with an agent.&lt;/strong&gt; A failed check gets a button that creates a task on the PR's branch with the failure, the suspect commits and the end of the log. It ends with: "Don't change the check to make it pass."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local CI for repos without CI.&lt;/strong&gt; The same runner runs a fixed test command on every new commit. The command lives in the tool, not the repo, so no branch can decide what runs on your laptop.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The record
&lt;/h3&gt;

&lt;p&gt;The timeline shows everything GitHub's conversation tab shows, plus what only the agent layer knows: which sessions started, which prompt produced which commit, and the fixes agents were asked for.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxwkpi08rtpnnosq5t6ll.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxwkpi08rtpnnosq5t6ll.jpg" alt="The PR timeline: sessions, prompts, commits, a merge from main, a fix, merged" width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The pull request's story, with the sessions and prompts behind each commit.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What broke along the way
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Work queued with nobody to run it.&lt;/strong&gt; With a reviewer on every push, one repo queued more than twenty reviews a day, and nothing ran them without a runner. Now the runner installs as a background service, the card says "Waiting for a runner" with the command, and stale reviews expire.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Approvals of code that no longer existed.&lt;/strong&gt; Before every check was tied to the head commit, an approval from three pushes ago kept a PR green. The first version didn't have this rule. It's now the most important one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agents believed agents.&lt;/strong&gt; Before the "claims, not proof" rule, a reviewer would read "added tests" in the description and take it as true.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hosts set the limits.&lt;/strong&gt; Inline comments work on GitHub only for now, and RhodeCode has no CI event to react to. That's the trade-off of building on top, and the one Entire avoided by becoming the host.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What a pull request is now
&lt;/h2&gt;

&lt;p&gt;The pull request isn't dying. It's still the place where a change waits before it lands, on the same host, behind the same branch protection. What changes is the contract.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;The old contract&lt;/th&gt;
&lt;th&gt;The new contract&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A person read it, and CI is green.&lt;/td&gt;
&lt;td&gt;Every required reviewer approved this exact commit. Nothing above the bar is open. CI is green. A person signed off if the repo says one must. Every line can be traced to the request that produced it.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;When a person does look, they don't read a thousand lines. They read five requests and the decisions behind them, and decide whether those were the right things to ask for.&lt;/p&gt;

&lt;p&gt;That was always the point of review. Fagan's inspections were never about reading code for its own sake. They were about catching the wrong decision before it shipped.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Agents just took the reading off our hands.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Whether the future is a new forge or a layer on the forges we already have, the direction is the same: review on every push, mostly by machines, against rules anyone can read, with people spending their attention on decisions instead of diffs.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Origin, the layer described here, is at &lt;a href="https://getorigin.io" rel="noopener noreferrer"&gt;getorigin.io&lt;/a&gt;. It connects to GitHub, GitLab and RhodeCode and leaves your repositories where they are.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devtools</category>
      <category>git</category>
      <category>codereview</category>
    </item>
    <item>
      <title>Hand an issue to an agent and let it run on your machine</title>
      <dc:creator>Serhii Troian</dc:creator>
      <pubDate>Wed, 21 Oct 2026 14:14:27 +0000</pubDate>
      <link>https://dev.to/serhii_troian_getorigin/hand-an-issue-to-an-agent-and-let-it-run-on-your-machine-6pl</link>
      <guid>https://dev.to/serhii_troian_getorigin/hand-an-issue-to-an-agent-and-let-it-run-on-your-machine-6pl</guid>
      <description>&lt;p&gt;Most of our tickets end the same way now. Someone copies the issue text into Claude Code or Codex, adds “look at the memory notes first”, waits, pushes a branch, opens a PR and pastes the link back into the ticket. The work is done by the agent. The glue around it is done by hand, and nothing records which run produced which PR, what it cost, or why the first try failed.&lt;/p&gt;

&lt;p&gt;So we moved the glue into Origin. An issue now has a Start with button. It hands the issue to an agent that runs on your own machine, in its own worktree, and the run is recorded on the issue: who ran it, which agent and model, how long, what it cost, how many lines, and whether its PR was merged. This post shows how it looks and what it does. A separate write-up covers how we built it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One list, every source&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F45f13e90ekl9t6apuxqq.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F45f13e90ekl9t6apuxqq.jpg" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Issues come from five places and land in one list: GitHub and GitLab issues (two-way sync), Jira, issues created in Origin, security alerts from Dependabot and code scanning, and TODOs that agents left in the repo’s memory notes. The list sorts by priority and filters by repo, source and assignee. Each row shows the source, labels, priority and, once an agent has worked on it, the number of sessions and the AI cost.&lt;/p&gt;

&lt;p&gt;The host stays the owner of what it owns. Title, body, labels, assignees and open/closed come from GitHub or GitLab, and Origin writes assignees back. Origin owns the states the host does not have: in progress, in review and blocked.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5c1zi9rtpbjgw1ilsoya.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5c1zi9rtpbjgw1ilsoya.jpg" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start with an agent&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9nxrik03np9w4zxk7f2c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9nxrik03np9w4zxk7f2c.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The menu lists the agents Origin can launch headless: Claude Code, Codex, Gemini CLI, Cursor, Copilot CLI and Antigravity. Pick one and you get the Start dialog.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8iyymfrgk5sgppqeeh12.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8iyymfrgk5sgppqeeh12.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The prompt is built from the issue and the repo’s memory (here 4,418 characters, 10 lines of it memory), and you can edit it before you start. Below it is the exact command the button runs, so you can run the same thing from a terminal:&lt;/p&gt;

&lt;p&gt;origin issue start OR-44 --agent claude --background&lt;/p&gt;

&lt;p&gt;Without Run in the background, Origin opens a terminal in your checkout with the agent and the prompt in it, and you work as usual. With it, there is no terminal. The agent runs headless in a new worktree on branch issue/OR-44-…, so your own checkout can stay dirty. When the agent exits cleanly, Origin pushes the branch and opens a PR. It never merges and never force-pushes.&lt;/p&gt;

&lt;p&gt;The run happens on your machine, with your agent CLI and your agent’s account. Origin’s server never runs code. The button opens a getorigin:// link that carries only the repo and issue ids; the Origin CLI on your machine reads the issue with your own key and starts the agent. The full log stays in ~/.origin/agent-runs/. The server gets the status, the exit code and the last few log lines.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before it starts: is the agent signed in, and is the task clear?&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsleqwf3xl8l0t2i8p2af.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsleqwf3xl8l0t2i8p2af.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A signed-out Claude Code exits in a second with “Not logged in”, and for a while that run still looked completed. Now a background run first checks that the agent is signed in. If it is not, nothing starts, no worktree is made, and the issue shows a failed run with the reason. The Agents page shows the same check per machine; above, the last background Claude run on this MacBook could not sign in.&lt;/p&gt;

&lt;p&gt;The second check is about the task. A one-line issue leaves the agent guessing, and a background agent has nobody to ask. So before a background run, Claude or Codex reads the repo in a read-only mode, without hooks and without saving a session, and answers one question: is this clear enough to do? If yes, it writes a short brief (files and approach) into the prompt. If not, it asks up to three questions. They appear on the issue, nothing starts, and you answer on the page or with:&lt;/p&gt;

&lt;p&gt;origin issue answer OR-44 "Keep v1 readable; consumers must handle both"&lt;/p&gt;

&lt;p&gt;A run can also stop and ask halfway. When you answer, the next start resumes the same agent session (claude --resume, codex exec resume) if that session is on this computer, so the agent keeps what it already read. Otherwise it starts fresh with every answer in the prompt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Every attempt stays on the issue&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8bxsx1ecs74ydip2ozjt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8bxsx1ecs74ydip2ozjt.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This issue was not written by a person. Claude Code left it as a TODO in the repo’s memory during an earlier session (“the header’s tokens, cost and tools chips still come from the old session totals”), and Origin turned it into an issue. Antigravity took it twice. The first run failed and the table says so; before we recorded runs, a run that died before the agent’s first hook fired left no trace at all. The second run worked for 30 minutes and opened PR #2487 with +846 −70 lines in 9 files. The issue moved to In review on its own.&lt;/p&gt;

&lt;p&gt;Each row links to the captured session, so you can read every prompt, tool call and diff of that run. Status follows the work: start or claim → in progress, PR open → in review, PR merged → closed, PR closed unmerged → back to in progress. An agent can also end with a line like [Origin: Outcome] blocked — which schema version?, and the issue goes to blocked with that question on it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Race two agents on the same issue&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh3n18vpu146c04es23bx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh3n18vpu146c04es23bx.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are not sure which agent is best for a task, give it to two to four of them. Each runs in the background on its own branch from the same base, and each one that finishes cleanly opens its own PR. Merge the best one, and the issue closes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmri96fg32ykw232u6o9s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmri96fg32ykw232u6o9s.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This one was a Dependabot alert for source-map-js. Origin turned it into an issue with acceptance criteria (the lockfile no longer resolves a vulnerable version, tests pass). Claude’s PR was merged at $0.50. Codex’s PR was closed; it cost $0.96 and used about ten times the tokens. Over a few dozen issues, that table tells you which agent to give which kind of work. For closed issues the page also gives a origin benchmark replay-tasks command, so you can replay the issue on other agents later and grade them against the tests the merged PR added.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu5rcg1ux6cp9h8pzt6jh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu5rcg1ux6cp9h8pzt6jh.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agents that pick up work themselves&lt;/strong&gt;&lt;br&gt;
The Start button is one way in. The other is the queue. Origin’s MCP server gives agents list_tasks, take_task, finish_task and release_task. An agent in a session can take the next ready issue, and two agents can never take the same one: a claim is a single conditional database write, so exactly one of them wins and the others get “claimed”. A claim is a lease (30 minutes by default) renewed by the session’s heartbeat. If the agent dies, the lease runs out and the task is free again, without a cleanup job. Issues with open dependencies are not served.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it will not do&lt;/strong&gt;&lt;br&gt;
Run anything on Origin’s servers. The agent runs on your machine, with your installed CLI and your account.&lt;br&gt;
Use a blanket permission bypass. Each agent gets the narrowest unattended mode it has: Claude’s --permission-mode auto, Codex’s workspace-write sandbox, a per-run Antigravity project allowed only git and read-only commands with no network, a scoped .cursor/cli.json.&lt;br&gt;
Merge, or force-push. It opens a PR and stops.&lt;br&gt;
Run forever. Background runs stop after 120 minutes by default, together with every process the agent started.&lt;br&gt;
Send the whole log to the server. Only the status and the last lines.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk089jnimydm5rmdangqn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk089jnimydm5rmdangqn.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it&lt;/strong&gt;&lt;br&gt;
You need the Origin CLI and at least one agent CLI signed in. Run origin url-handler install once so the Start button can reach your machine, then open Issues and press Start with. From a terminal it is origin issue start  --agent codex --background, origin issue race  --agents claude,codex and origin issue runs to see what is running.&lt;/p&gt;

</description>
      <category>aicoding</category>
      <category>claudecode</category>
      <category>codex</category>
      <category>issues</category>
    </item>
    <item>
      <title>A repo page for code that agents wrote</title>
      <dc:creator>Serhii Troian</dc:creator>
      <pubDate>Wed, 07 Oct 2026 14:11:04 +0000</pubDate>
      <link>https://dev.to/serhii_troian_getorigin/a-repo-page-for-code-that-agents-wrote-5102</link>
      <guid>https://dev.to/serhii_troian_getorigin/a-repo-page-for-code-that-agents-wrote-5102</guid>
      <description>&lt;p&gt;Open any repo on GitHub and you see files, commits and people. That was the right picture when people wrote the code. In our own repo, 93.9% of the code was written by an agent. The person in the author column mostly typed a prompt and pressed enter.&lt;/p&gt;

&lt;p&gt;So the GitHub page is still correct, but it answers the wrong questions. It tells you who pushed. It does not tell you which agent wrote it, which model, from what prompt, what it cost, what the agent decided on the way, or what it left unfinished. Those are the questions you actually have now.&lt;/p&gt;

&lt;p&gt;We rebuilt the repository page in Origin around those questions. It looks like GitHub on purpose (same tabs, same file tree, same commit list), so there is nothing new to learn. Every view just carries the AI context on top.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd50xn0t6ogi8xl8ohg96.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd50xn0t6ogi8xl8ohg96.webp" alt="The Overview tab of opsworks-co/origin" width="800" height="519"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The bar at the top is the first thing GitHub cannot show: how the code splits between agents and people. Here it is Claude 93.9%, Cursor 3.8%, Codex 1.5%, human 0.8%. This is measured from capture of the actual sessions, not guessed from commit messages.&lt;/p&gt;

&lt;p&gt;The heatmap is the familiar contribution graph, but each square is coloured by which agent made the commits that day. You can see the day the team switched from writing code to directing agents.&lt;/p&gt;

&lt;p&gt;Below it is the agent scorecard. For each agent: commits, lines added, sessions, cost per commit, how much was later reverted, and how much was rejected in review. On this repo Claude made 3,821 commits at $5.18 each, Cursor 122 at $0.02, Codex 82 at $0.51. That is the table you want when someone asks whether the AI spend is worth it, or which agent to give the next task.&lt;/p&gt;

&lt;p&gt;The About panel on the right is not a static description. It is the repo’s continuation brief: what the last sessions worked on, what is in flight, and what is unfinished. More on that below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F14a8sr134ptmxezxcjxm.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F14a8sr134ptmxezxcjxm.jpg" alt="The Code tab. apps/ is 99% AI and cost $443.9 to write" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The file tree works like GitHub’s, but every folder shows how much of it AI wrote and what it cost, and every file shows the agent, the person who ran it, the cost and the age. You can find the parts of the codebase nobody on the team has really read, or the folder that ate the budget, in a few seconds.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fybgaesm73hnmr1jtq1f8.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fybgaesm73hnmr1jtq1f8.jpg" alt="Hovering a line shows who ran the agent, which prompt, and which commit" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;git blame tells you who committed a line. On an agent-written repo that is nearly useless, because it is the same person on every line. Origin’s blame groups lines by the prompt that wrote them. Each block says the agent and model (Claude, Opus 5), the person, and the prompt number. Hover a line and you get the prompt text itself, here “merge them, release the cli and deploy”, and the commit it landed in.&lt;/p&gt;

&lt;p&gt;The header says the file is 100% Claude across two models, written by two people, linked to PR #1977, and that 0 of 5 sessions behind it were reviewed. That last number is the one that matters in review: it tells you how much of this file a human actually looked at.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw5el6mvv9wdjpnyb5ac4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw5el6mvv9wdjpnyb5ac4.jpg" alt="Each commit carries its agent, model and the prompt that produced it" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Same commit list as GitHub, with the agent and model on every commit and the prompt right under the title. You can filter by agent, by model, or search the prompts themselves. “Find the commit where we asked it to change the sync interval” becomes a search, not an archaeology project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Memory: what the agents decided, and what they left open&lt;br&gt;
This is the part that has no GitHub equivalent at all.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every agent session starts from zero. It does not know what the last session tried, what it decided, or what it left half done. So it re-reads the code, re-makes the same decisions (sometimes the opposite ones), and re-discovers the same bugs. On a team with several agents and several people, this happens all day.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8w5atwm3583dx7nkn6wq.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8w5atwm3583dx7nkn6wq.jpg" alt="The continuation brief. It is read from the repo's own git notes" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Origin keeps a memory for each repo. After each session it writes down what was done, what was decided and why, and what is still open. It lives in the repo’s git notes (refs/notes/origin-memory), so it travels with the code and works offline. The next agent reads it before it starts, through the CLI or the MCP server, whichever agent it is. Claude can pick up where Codex stopped.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fodfnlc8vxwdgtftcci7n.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fodfnlc8vxwdgtftcci7n.jpg" alt="49 decisions from 30 sessions, each linked to the session that made it" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Memory tab shows that record to people. The decisions list is the useful bit: each one says what was chosen and why, and links to the session. When you wonder why the code does something odd, the answer is usually already there. The History tab shows how the memory changed over time, and you can read it as of any date.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Issues: the TODOs agents leave behind&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwdj5if7busrdcsbfsg6u.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwdj5if7busrdcsbfsg6u.jpg" alt="Open items from memory become Issues. 8 open, 34 closed on this repo" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agents leave a lot of loose ends: “this still needs a check on Windows”, “not deployed yet”, “the old data is still wrong”. Usually that text sits in a chat log nobody opens again.&lt;/p&gt;

&lt;p&gt;In Origin, those open items become Issues on the repo automatically. They have a priority, they show which session raised them, and they close when a later session finishes the work. The [Verify] ones are checks an agent said a human should do. So the backlog of agent work is visible, and the next agent sees the same list through memory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters now&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GitHub was built for a world where the author of a commit wrote it, remembered why, and could be asked. None of that holds when agents write most of the code:&lt;/p&gt;

&lt;p&gt;The author column lies by omission. One person can run four agents on six models in a day. Without attribution you can’t tell which agent writes code that sticks, which one gets reverted, or what any of it cost.&lt;br&gt;
The reason is lost. The prompt and the decisions are the real source of a change. They live in chat logs on one laptop and disappear. Origin keeps them next to the lines they produced.&lt;br&gt;
Review can’t keep up. Nobody reads every line an agent writes. Knowing which files are AI-written and which sessions nobody reviewed tells you where to spend the review time you have.&lt;br&gt;
Agents forget. Every new session pays to rediscover the repo. A shared memory and an open-issues list means the next agent starts from where the last one stopped, not from zero.&lt;br&gt;
For an engineering lead, this is the repo page that answers the questions you get asked now: how much is AI, which agent, what did it cost, did anyone review it, what is still open. For the agents, it is the context they need to not repeat each other.&lt;/p&gt;

&lt;p&gt;Connect a GitHub or GitLab repo at getorigin.io and install the CLI. The repo page fills in from your existing history, and every new session adds to it.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>AI Code Provenance: How to Track AI-Generated Code in Git</title>
      <dc:creator>Serhii Troian</dc:creator>
      <pubDate>Thu, 01 Oct 2026 16:56:14 +0000</pubDate>
      <link>https://dev.to/serhii_troian_getorigin/ai-code-provenance-how-to-track-ai-generated-code-in-git-5d6b</link>
      <guid>https://dev.to/serhii_troian_getorigin/ai-code-provenance-how-to-track-ai-generated-code-in-git-5d6b</guid>
      <description>&lt;p&gt;&lt;strong&gt;AI Code Provenance: How to Track AI-Generated Code in Git&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Pull request lands in your repository. Tests pass. Diff looks reasonable. Git shows which files changed, when the commit was created, and which developer pushed it. One important part of the story is still missing.&lt;br&gt;
Was this function written manually, generated by Claude Code, rewritten in Cursor, or produced during a Codex session? Which prompt triggered the change? What model was used? How many files did the agent touch before arriving at the final implementation?&lt;br&gt;
Once AI coding tools become part of everyday development, commit history alone stops being a complete record of how software was created. AI code provenance fills that gap. Instead of showing only what changed, provenance connects code back to the AI session, prompt, model, and development context that produced it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Git Records the Change, Not the AI Process Behind It&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Git answers familiar engineering questions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Who committed this change?&lt;/li&gt;
&lt;li&gt;When was it committed?&lt;/li&gt;
&lt;li&gt;What changed?&lt;/li&gt;
&lt;li&gt;Which commit introduced this line?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;AI-assisted development adds another layer before the commit exists. Imagine a developer asking Claude Code to refactor an authentication module. First response modifies six files. Developer requests a smaller implementation. Claude revises three files. Cursor is then used to fix a type error before everything is committed.&lt;br&gt;
Git sees the final state. What it does not naturally preserve is the sequence of AI coding sessions, prompts, models, or intermediate changes that shaped the implementation.&lt;br&gt;
Traditional git blame has the same limitation. It associates a line with a commit and an author, but that author may simply be the person who committed code largely generated by an AI agent. Human commit authorship and actual code generation are no longer always the same thing. That gap is where AI code attribution becomes important.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Is AI Code Provenance?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI code provenance is a record of how AI-assisted code was produced and how that activity connects to the resulting source code.&lt;br&gt;
Useful provenance should answer questions such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which AI agent and model produced a change?&lt;/li&gt;
&lt;li&gt;Which prompt resulted in a specific file or line?&lt;/li&gt;
&lt;li&gt;Which developer initiated the AI coding session?&lt;/li&gt;
&lt;li&gt;What files changed?&lt;/li&gt;
&lt;li&gt;How did the implementation evolve?&lt;/li&gt;
&lt;li&gt;What token usage or cost was associated with the work?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Provenance is different from AI code detection.&lt;br&gt;
Detection asks:&lt;br&gt;
“Does this code look like AI wrote it?”&lt;br&gt;
Provenance asks:&lt;br&gt;
“What recorded AI activity produced this code?”&lt;br&gt;
Second question is far more useful for engineering teams because it relies on captured development context rather than guessing after the fact. As organizations move from occasional AI suggestions to agent-driven workflows with Claude Code, Cursor, Codex, Gemini CLI, and similar tools, being able to track AI-generated code becomes increasingly practical.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why AI Code Attribution Matters&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Knowing which agent generated a line may sound like extra developer analytics. In practice, it affects several core engineering workflows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code Review&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Large AI-assisted pull requests are difficult to evaluate from a diff alone.&lt;br&gt;
Suppose an agent rewrites authorization logic. Reviewer can see the resulting code, but not what the developer originally asked for or which assumptions guided the agent. Access to the relevant prompt or session provides context Git cannot show.&lt;br&gt;
AI code attribution does not replace review. It helps reviewers understand both the output and the intent behind it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Debugging&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Consider a regression introduced three weeks ago.&lt;br&gt;
git blame points to a commit. Commit points to a developer. Yet that developer may no longer remember which AI tool produced the implementation or what prompt was used.&lt;br&gt;
With AI coding history connected to the code, investigation can continue beyond the commit. Engineers can trace affected code back to the relevant session or prompt and reconstruct how the implementation was produced.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security and Audit&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Coding agents can modify configuration files, authentication flows, infrastructure definitions, dependencies, and other sensitive parts of a codebase.&lt;br&gt;
AI code traceability provides a clearer path between developer, agent, model, prompt, affected files, and resulting code. Goal is not to treat AI-generated code as inherently risky. Goal is to make its origin inspectable.&lt;br&gt;
Same context also helps with auditability. If someone later asks how a specific implementation was produced, a commit hash may no longer be enough. AI code audit trail adds the missing development evidence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cost Control&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI coding costs are difficult to interpret when usage is disconnected from engineering output. Provider invoices may show total consumption, but not which repository, task, feature, or resulting code consumed that budget.&lt;br&gt;
Connecting AI coding sessions to actual development work makes cost data more useful.&lt;br&gt;
Instead of asking only:&lt;br&gt;
“How much did we spend on models?”&lt;br&gt;
teams can also ask:&lt;br&gt;
“What work did that spend support?”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Should AI Code Provenance Track?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Effective AI-generated code tracking does not require storing every action forever. It requires connecting relevant development context to the code that reaches the repository&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2h542z8zpglb3kw60v8l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2h542z8zpglb3kw60v8l.png" alt="What Should AI Code Provenance Track?" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Git remains the system of record for source code. AI code provenance extends that record with the context created before the commit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to Track AI Code in Git&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Teams could ask developers to mention AI usage in commit messages, store transcripts separately, add labels to pull requests, or export model usage into analytics tools. Problem is fragmentation. Prompts may live in one tool, costs in another, code in Git, and agent transcripts on individual machines. Reconstructing a change later becomes difficult.&lt;br&gt;
More useful approach is to capture AI interactions while development is happening and maintain a relationship between those interactions and the code they produce. That is the model behind Origin. Origin adds an AI coding history layer around the existing Git workflow instead of replacing it. It can capture prompt text, model information, files touched, diffs, tokens, cost, and session metadata while developers continue using their normal coding agents.&lt;br&gt;
Support includes workflows with Claude Code, Cursor, Codex, Gemini CLI, GitHub Copilot, and other AI development tools. Result is provenance connected to the repository rather than a separate history that needs to be matched back to Git later.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;From Git Blame to AI Git Blame&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Traditional git blame answers:&lt;br&gt;
Which commit last changed this line?&lt;br&gt;
AI-assisted development adds another useful question:&lt;br&gt;
Which AI interaction produced this line?&lt;br&gt;
Origin provides line-level AI attribution so developers can move from source code back to the prompt and session associated with it.&lt;br&gt;
For example:&lt;br&gt;
origin why src/auth.ts:42&lt;br&gt;
can expose the AI context related to a specific line, including the agent, model, and prompt behind the code.&lt;br&gt;
Debugging flow becomes:&lt;br&gt;
code → line → AI attribution → prompt → session&lt;br&gt;
That gives engineers more context than simply knowing which developer committed the file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foav9an25mnqicrscefhl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foav9an25mnqicrscefhl.png" alt="From Git Blame to AI Git Blame" width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reconstructing AI Coding Sessions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Line-level attribution works well when an engineer already knows which piece of code needs investigation.&lt;br&gt;
Sometimes the question is broader:&lt;br&gt;
What did the agent actually do during the task?&lt;br&gt;
AI coding sessions provide that wider view.&lt;br&gt;
Session history can show prompts, affected files, model information, intermediate changes, and the context behind the final result. With Origin, developers can inspect captured sessions instead of depending on memory or disconnected local chat histories.&lt;br&gt;
Value comes from maintaining the relationship between the session and the code that eventually reaches Git. Origin stores session information alongside the Git workflow using Git refs and notes, keeping AI coding history connected to the repository.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6ftkrs1e1vpjmpdfd5d1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6ftkrs1e1vpjmpdfd5d1.png" alt="Reconstructing AI Coding Sessions" width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Practical AI Code Provenance Workflow With Origin&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Using Origin does not require teams to replace their Git workflow. Think of it as an additional history layer around development.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Enable provenance tracking&lt;br&gt;
Install Origin and run:&lt;br&gt;
origin enable&lt;br&gt;
Origin integrates with the Git workflow and begins capturing supported AI coding activity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keep using existing coding agents&lt;br&gt;
Developers continue working with Claude Code, Cursor, Codex, Gemini CLI, or other supported tools. Prompts, sessions, changed files, model usage, and related metadata can be captured as the work happens.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Inspect context when needed&lt;br&gt;
Session history helps with reviewing an entire AI-assisted task. Line-level attribution helps when investigating specific code. Teams can move from a final line back to the prompt that produced it instead of stopping at the commit. Origin supports this workflow for both individuals and teams.&lt;br&gt;
Solo usage focuses on personal AI development history, including session replay, token and cost tracking, repositories, sessions, and local CLI workflows.&lt;br&gt;
Origin Team adds centralized visibility, policies, GitHub and GitLab pull-request checks, budget controls, and audit logs.&lt;br&gt;
For one developer, provenance may answer:&lt;br&gt;
“What did my agent change yesterday?”&lt;br&gt;
For an engineering organization, the same data can support review, security, governance, cost visibility, and auditing across multiple repositories.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Provenance Should Add Context, Not More Process&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Governance becomes ineffective when developers spend more time documenting work than doing it. Manually recording every AI interaction, copying prompts into pull requests, labeling generated files, and reconciling model usage afterward is difficult to sustain. Automatic capture with selective inspection is more practical.&lt;br&gt;
Developers keep working in Git and their preferred coding agents. Reviewers, engineering leads, and security teams retrieve deeper context only when they need it. That becomes increasingly important as agent usage grows faster than any manual documentation process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Git History Is Still Essential. It Is Just No Longer the Whole Story&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI coding agents do not make Git less important. They make surrounding context more important.&lt;br&gt;
Commits still record durable repository changes. Pull requests remain a primary review surface. git blame still helps engineers understand when code changed.&lt;br&gt;
Another history now exists before the commit: prompts, models, AI coding sessions, intermediate changes, agent decisions, and usage data.&lt;br&gt;
AI code provenance connects those two histories. Engineering teams can track AI-generated code without abandoning Git or forcing developers into a completely new workflow.&lt;br&gt;
When a reviewer, developer, security engineer, or auditor asks:&lt;br&gt;
“Where did this code come from?”&lt;br&gt;
answer no longer needs to stop at a username and commit hash.&lt;br&gt;
It can lead back to the AI session that created it.&lt;br&gt;
Explore Origin to capture AI coding history alongside Git and add traceability to AI-assisted development.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>git</category>
      <category>devops</category>
    </item>
    <item>
      <title>Switching AI Agents Without Starting Over</title>
      <dc:creator>Serhii Troian</dc:creator>
      <pubDate>Mon, 31 Aug 2026 18:51:51 +0000</pubDate>
      <link>https://dev.to/serhii_troian_getorigin/switching-ai-agents-without-starting-over-2e59</link>
      <guid>https://dev.to/serhii_troian_getorigin/switching-ai-agents-without-starting-over-2e59</guid>
      <description>&lt;p&gt;A note the last session leaves in your repo, so the next one — any vendor — knows where the work stood&lt;/p&gt;

&lt;p&gt;We build Origin, an MIT-licensed CLI that runs alongside AI coding agents and records each session into the repository itself. This is how one part of it works.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. The note the last session left&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI coding agents — Claude Code, Cursor, Codex and the rest — work in sessions. You open one, you work, you close it, and everything it understood about the task is gone. The next session starts blank. If you switch to a different agent it starts blanker still, because none of them can read each other’s history.&lt;/p&gt;

&lt;p&gt;Here is the exception. This was sitting in an agent’s context window one morning, before anyone typed anything:&lt;/p&gt;

&lt;p&gt;Previous session context (claude-code, 18h ago):&lt;br&gt;
Summary: Diagnosis is solid. It's not Origin's code — it's CPU&lt;br&gt;
  starvation from the host.&lt;br&gt;
Last prompt: "Origin is slow again, debug what's the issue"&lt;br&gt;
Changes: +6774 -308 lines&lt;/p&gt;

&lt;p&gt;Nobody pasted that in. Nobody asked for it. The session that produced it had ended eighteen hours earlier and wrote it to a file on the way out. When the next session started, that file was read and rendered into its prompt before the first instruction arrived.&lt;/p&gt;

&lt;p&gt;So the agent opened already knowing where things stood — which branch, which files were unfinished, what the last instruction had actually been. That is the entire feature. The rest of this article is about why the block is that short.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. What it is like without one&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You spent Friday afternoon on something nasty. Three files half-rewritten, a branch you named in a hurry, a fix that worked but needed one more case handled. You closed the laptop.&lt;/p&gt;

&lt;p&gt;Monday you open your agent and type “ok let’s finish this.”&lt;/p&gt;

&lt;p&gt;It has no idea what “this” is. So the first ten minutes go to reconstruction: which branch, which files are dirty, what the goal was as opposed to the last thing you typed, what you already tried and rejected. You are briefing a new hire who was in the room on Friday and remembers none of it.&lt;/p&gt;

&lt;p&gt;Then make it worse in the way that is now normal — on Monday you open a different agent. Friday was Claude Code; today you want Cursor, or Codex, or whatever shipped a better model last week. Each keeps its history in its own directory in its own format, and none of them read each other’s. There is no shared storage even in principle.&lt;/p&gt;

&lt;p&gt;This is not an edge case. People pick an agent per task, not per project, and the switching cost is paid in re-explanation every single time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Seeing it&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The note lives at .git/origin-handoff.json. You can read exactly what is stored and exactly what the next agent will be given:&lt;/p&gt;

&lt;p&gt;$ origin handoff show&lt;/p&gt;

&lt;p&gt;Cross-Agent Handoff Context&lt;/p&gt;

&lt;p&gt;Agent:    claude-code&lt;br&gt;
  Model:    claude-opus-5&lt;br&gt;
  Session:  7f3776c8&lt;br&gt;
  Ended:    18h ago&lt;br&gt;
  Branch:   fix/prompt-capture-window&lt;/p&gt;

&lt;p&gt;Last prompt:&lt;br&gt;
  "the turn count is still wrong on merge commits"&lt;/p&gt;

&lt;p&gt;Files in progress (3):&lt;br&gt;
    packages/cli/src/git-capture.ts&lt;br&gt;
    packages/cli/src/session-state.ts&lt;br&gt;
    packages/cli/src/commands/hooks.ts&lt;/p&gt;

&lt;p&gt;Changes: +212 -47 lines&lt;/p&gt;

&lt;p&gt;Open TODOs:&lt;br&gt;
    - handle the squash-merge case in the same pass&lt;/p&gt;

&lt;p&gt;Context that will be injected into next agent session:&lt;br&gt;
  ──────────────────────────────────────────────────&lt;br&gt;
  ...&lt;br&gt;
  ──────────────────────────────────────────────────&lt;/p&gt;

&lt;p&gt;origin handoff clear throws it away if you would rather start clean.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. What gets carried&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every field earns its place by answering a question you would otherwise have to answer yourself.&lt;/p&gt;

&lt;p&gt;Two properties matter more than the schema.&lt;/p&gt;

&lt;p&gt;It is written at the end of every turn, not at session end — so an agent that crashes, is killed, or is closed without ceremony still leaves a current note behind.&lt;/p&gt;

&lt;p&gt;And agentSlug is written by one agent and read by another. That is what makes it cross-vendor: a Cursor session’s note is read by a Claude Code session, and says plainly that it came from Cursor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. The hard part is what it refuses to carry&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is where a feature like this is won or lost. Each rule below exists to prevent a specific bad experience, and each costs the feature something on purpose.&lt;/p&gt;

&lt;p&gt;Not the transcript. There is a permanent temptation to make the note bigger — the whole conversation, every file read, all the reasoning. Every version of that makes it worse. The value is that the next agent reads it completely before starting work. A 40,000-token history does not get read, it gets skimmed, and skimmed context is how an agent confidently resumes the wrong task.&lt;/p&gt;

&lt;p&gt;Not a session where you only talked. Ask your agent a question — “what’s in this repo’s history?” — and it answers. No files changed, nothing written. If that session overwrote the note, Friday’s real work-in-progress would be replaced by Monday’s idle question, and the next agent would open oriented around nothing. So a session that touched no files and changed no lines never replaces one that did.&lt;/p&gt;

&lt;p&gt;Not its own output, fed back. Origin already injects context at session start. Ask an agent about that context and its answer is a recap of the injection. Store the recap as the session summary and the next session injects it, the agent after that recaps the recap, and within days the note is a description of a description of something that was once actual work. So the feature recognises text that is its own prior output and refuses it — on read as well as on write, which means a repo that already picked one up heals itself the next time it is read.&lt;/p&gt;

&lt;p&gt;Not everything you say, as a commitment. Open TODOs are the highest-leverage field and the most dangerous, because a TODO is injected into every future session until it is resolved.&lt;/p&gt;

&lt;p&gt;“We should refactor the retry logic” is a commitment. “We need to switch the gh user, but switch it back after” is an instruction for right now.&lt;/p&gt;

&lt;p&gt;If the extractor cannot tell those apart, you get an agent that keeps trying to switch your GitHub user next week, for reasons nobody remembers. So extraction is anchored to actual development verbs (fix, add, refactor, migrate, handle…) and rejects hedged phrasing (I think, maybe, for now, never mind). Both rules deliberately match less.&lt;/p&gt;

&lt;p&gt;That inversion is the most transferable idea here. In an ordinary data pipeline you tune an extractor toward recall, because a false positive is just a bad row somebody filters later. When the consumer is a language model, a false positive is an instruction that a capable system will act on, repeatedly, until a human notices. The cost is unbounded and nearly undetectable, because a plausible-looking TODO is indistinguishable from a real one.&lt;/p&gt;

&lt;p&gt;Not stale state. A note older than 24 hours is not injected at all. In-progress state decays fast: a day-old list of “files in flight” probably describes files since committed, reverted, or rewritten by someone else. Confidently wrong context is worse than none, because the agent has no way to know it should distrust what it was handed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. It lives in .git, and that is a decision about you&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;.git/origin-handoff.json is not a committed file. It never appears in a diff, never shows up in a pull request, never lands in a teammate’s clone. It is scoped to your checkout, the way .git/HEAD is. Three consequences worth knowing before turning it on:&lt;/p&gt;

&lt;p&gt;Nothing leaks into review. Your last prompt — however you phrased it at 7pm on a Friday — is not going in front of your team.&lt;br&gt;
It does not sync. A colleague pulling your branch gets your code, not your note. Origin has a separate mechanism for metadata meant to travel between machines; this deliberately is not it.&lt;br&gt;
You can inspect and delete it with ordinary tools. It is JSON on disk. cat it, rm it, or use origin handoff show and origin handoff clear.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. What it cannot do&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It cannot arbitrate between simultaneous sessions. It records the last one to finish, so in a checkout where three agents run at once the note reflects whichever stopped most recently. The honest fix there is a worktree per session, not a smarter merge.&lt;/p&gt;

&lt;p&gt;It cannot reconstruct reasoning it was never given. If a session’s approach lived entirely in the model’s head and never touched a file, a note about files will not recover it.&lt;/p&gt;

&lt;p&gt;And it is only as good as the last session’s summary. It is a bookmark, not a substitute for writing things down.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. Why it belongs next to the code&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Agents are becoming interchangeable faster than anyone expected. Which one is best for a given task changes month to month, and people switch accordingly, often mid-task.&lt;/p&gt;

&lt;p&gt;The thing that should not be interchangeable is your place in the work. That state does not belong in a vendor’s session store, because you will not be in that vendor’s session tomorrow. It belongs next to the code — in a format anything can read, small enough that the next agent, whatever it turns out to be, can absorb it in one pass before touching anything.&lt;/p&gt;

&lt;p&gt;The whole feature is a JSON file in .git. Most of the engineering went into deciding what to leave out of it.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Implemented in the Origin CLI (MIT, getorigin.io): handoff.ts holds the payload, the carry-forward rules and TODO extraction; context-injection.ts assembles and deduplicates the blocks injected at session start. origin handoff show prints the current note and exactly what the next agent will receive.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>devtools</category>
      <category>webdev</category>
    </item>
    <item>
      <title>ORIGIN</title>
      <dc:creator>Serhii Troian</dc:creator>
      <pubDate>Fri, 07 Aug 2026 13:05:01 +0000</pubDate>
      <link>https://dev.to/serhii_troian_getorigin/origin-f3o</link>
      <guid>https://dev.to/serhii_troian_getorigin/origin-f3o</guid>
      <description>&lt;h2&gt;
  
  
  Ground Truth for AI-Written Code
&lt;/h2&gt;

&lt;p&gt;Session capture, per-line attribution, and selection-bias-free agent benchmarks - on top of the Git host you already use.&lt;/p&gt;

&lt;p&gt;A technical overview for engineers and engineering leaders evaluating how much of their codebase is now written by AI agents - and who is accountable for it.&lt;/p&gt;

&lt;p&gt;Contents&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The problem: git blame no longer tells the truth&lt;/li&gt;
&lt;li&gt;How Origin captures an agent session&lt;/li&gt;
&lt;li&gt;Attribution: first-author-wins, with Git as the source of truth&lt;/li&gt;
&lt;li&gt;Prompt-level time travel&lt;/li&gt;
&lt;li&gt;Honest benchmarking: the agent scorecard&lt;/li&gt;
&lt;li&gt;Bake-offs: the selection-bias-free comparison&lt;/li&gt;
&lt;li&gt;For teams: governance without a second source of truth&lt;/li&gt;
&lt;li&gt;Architecture, privacy, and getting started&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  1. The problem: git blame no longer tells the truth
&lt;/h2&gt;

&lt;p&gt;On most teams, AI agents now write a large share of new code. But the tools that record who wrote what were built for humans. When an agent edits files in your working tree and you commit them, git blame attributes every one of those lines to you. The prompt that produced them, the model that ran, the cost, the number of turns, and whether the code survived the next sprint - none of it is recorded anywhere.&lt;/p&gt;

&lt;p&gt;That gap has real consequences:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Provenance - no answer to “which agent, from which prompt, wrote this line?” during review or an incident.&lt;/li&gt;
&lt;li&gt;Cost &amp;amp; efficiency - no ground truth on what a feature cost in tokens and dollars, or which agent got there in fewer turns.&lt;/li&gt;
&lt;li&gt;Quality - no measure of whether agent-written code survives, or gets reworked and reverted days later.&lt;/li&gt;
&lt;li&gt;Comparison - “which agent is better for us?” answered by vibes, because every naive comparison is poisoned by selection bias (the hard tasks go to the agent you already trust).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Origin closes that gap. It captures the full agent session - prompt, diff, tokens, cost, tools, duration - attributes every surviving line back to an agent and a prompt using Git as the source of truth, and turns that data into honest, selection-bias-free comparisons between agents. It runs on top of GitHub or GitLab; there is nothing to migrate.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. How Origin captures an agent session
&lt;/h2&gt;

&lt;p&gt;Capture is deliberately boring and durable. A one-time origin enable registers the machine, auto-detects installed agents (Claude Code, Codex, Cursor, GitHub Copilot, Gemini, Aider, Devin, Antigravity, and more), and installs two kinds of listeners:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Agent hooks - Origin hooks fire on the agent’s lifecycle events (session start, each user prompt, each tool/file edit, and stop/end). They record the prompt text, the per-turn file diff, token and cost counters, tool calls, and the model.&lt;/li&gt;
&lt;li&gt;Transcript watchers - for agents that keep a durable on-disk transcript (e.g. Codex’s rollout logs, Devin’s local session DB), Origin reads that record directly instead of depending on hooks. The principle: if there is an authoritative transcript, read it; hooks are for context and policy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Capture is resilient by design. It writes locally first, retries on a durable queue when the network is down, resolves session end from heartbeat liveness rather than a fragile inactivity timer, and is aware of git worktrees so parallel sessions don’t collide. Sessions that never produced real work are swept so counts reflect reality.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2weps2gdjdduuar12yxx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2weps2gdjdduuar12yxx.png" alt="Figure 1. Every AI coding session Origin captured - agent, model, cost, tokens, branch, and review status. This is the raw material everything else is built on." width="800" height="415"&gt;&lt;/a&gt;&lt;br&gt;
Figure 1. Every AI coding session Origin captured - agent, model, cost, tokens, branch, and review status. This is the raw material everything else is built on.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Attribution: first-author-wins, with Git as the source of truth
&lt;/h2&gt;

&lt;p&gt;Recording a session is easy; attributing lines correctly is the hard part, and it is where Origin is opinionated. The model is first-author-wins: a line is credited to whoever introduced it, and later edits never re-claim it. For pushed commits, Git is the ground truth - Origin reconciles its capture against the committed diff rather than trusting a possibly-lossy hook stream.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frkl0b83wjrfv0m2glz6f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frkl0b83wjrfv0m2glz6f.png" alt="Figure 2. One session, decomposed: each prompt and its diff (committed vs uncommitted), the linked commit, and a 100%-AI verdict - the ground truth per-line blame is built from. The AI Blame tab drills to the line level." width="800" height="415"&gt;&lt;/a&gt;&lt;br&gt;
Figure 2. One session, decomposed: each prompt and its diff (committed vs uncommitted), the linked commit, and a 100%-AI verdict - the ground truth per-line blame is built from. The AI Blame tab drills to the line level.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Prompt-level time travel
&lt;/h2&gt;

&lt;p&gt;Because Origin records the state before every prompt, each prompt becomes a restore point. You can undo an agent’s changes - the files revert - without rewriting or losing your commits.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Honest benchmarking: the agent scorecard
&lt;/h2&gt;

&lt;p&gt;Once sessions are captured and attributed, Origin computes a per-agent scorecard - efficiency, outcome, and survival - over your real work. The point of difference is honesty: the scorecard refuses to draw conclusions the data can’t support.&lt;/p&gt;

&lt;p&gt;The guardrails matter as much as the metrics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Minimum sample size - agents aren’t ranked on a handful of sessions; below a threshold, a metric is shown as “not enough data,” not a misleading average.&lt;/li&gt;
&lt;li&gt;Confidence intervals - ratio metrics (e.g. tokens-per-line) carry a CI, so a noisy small sample can’t masquerade as a clear winner.&lt;/li&gt;
&lt;li&gt;Estimated tokens excluded - sessions whose token counts were estimated rather than reported are flagged and kept out of the money math.&lt;/li&gt;
&lt;li&gt;Line-weighted authorship - the AI-vs-human percentage is weighted by lines, not session count, so one giant human commit doesn’t get outvoted by many tiny agent ones.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbsooutyxhbbqwle6wj9q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbsooutyxhbbqwle6wj9q.png" alt="Figure 3. The agent scorecard - cost, tokens-per-line, median turns, approval, and survival per agent, with sample-size and confidence guardrails." width="800" height="415"&gt;&lt;/a&gt;&lt;br&gt;
Figure 3. The agent scorecard - cost, tokens-per-line, median turns, approval, and survival per agent, with sample-size and confidence guardrails.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Bake-offs: the selection-bias-free comparison
&lt;/h2&gt;

&lt;p&gt;The scorecard measures agents on the work you happened to give them - and you give the hard tasks to the agent you trust, which skews every comparison. A bake-off removes that bias by construction: it runs the same prompt through N agents, each in its own isolated Git worktree, and lets you compare the results side by side. Every arm gets identical work.&lt;/p&gt;

&lt;p&gt;Architecture: the server schedules, your machine executes&lt;/p&gt;

&lt;p&gt;Coding agents run on your machine, with your keys - Origin’s cloud can never run them. So a bake-off is split cleanly in two: the server owns the queue and the schedule; a local runner daemon owns execution.&lt;br&gt;
Each arm branches from HEAD into bakeoff//, the agent works autonomously and commits, and Origin correlates the result back to the branch via normal session capture - nothing extra to wire up. The list nests each arm’s session inline (cost, tokens, lines, status), filters by status/repo/agent, pages ten at a time, and rolls up a head-to-head agent comparison across every bake-off you’ve run.&lt;/p&gt;

&lt;p&gt;Deliberately, Origin does not auto-declare a winner. It tints the cheapest and fewest-turns arms to help you scan, but “cheapest” and “best” are not the same thing - only a human reading the diff can decide. You pick the winner.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fohw16pzr8g7af1fbaelq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fohw16pzr8g7af1fbaelq.png" alt="Figure 4. Composing a bake-off - the same prompt, two or more agents, each running autonomously in its own git worktree. Results stream back as sessions and roll up into a head-to-head comparison." width="800" height="415"&gt;&lt;/a&gt;&lt;br&gt;
Figure 4. Composing a bake-off - the same prompt, two or more agents, each running autonomously in its own git worktree. Results stream back as sessions and roll up into a head-to-head comparison.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. For teams: governance without a second source of truth
&lt;/h2&gt;

&lt;p&gt;Everything above is per-developer value that also aggregates for a team. On top of it, Origin adds an org layer: typed policies enforced across review, PR checks, and CI; AI auto-review of agent sessions; secret and PII scanning on captured diffs; budgets and cost controls with per-agent visibility; role-based access; and an organization dashboard that shows what share of the codebase is AI-authored, by whom, at what cost - line-weighted, not guessed.&lt;/p&gt;

&lt;p&gt;Because attribution is per line and travels with the repo (prompts are carried in Git notes, and a dedicated sessions branch makes context portable across clones), the governance view is derived from the same ground truth developers see - not a parallel system that drifts.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Architecture, privacy, and getting started
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Local-first capture - session data is recorded on your machine first. A fully standalone mode keeps everything in the repo with no account at all.&lt;/li&gt;
&lt;li&gt;Sits on your host - GitHub and GitLab, multiple connected accounts, native Windows/macOS/Linux CLI. No repo migration.&lt;/li&gt;
&lt;li&gt;Portable provenance - prompts live in Git notes; the origin-sessions branch is a zero-tooling vehicle so a fresh clone still has the history.&lt;/li&gt;
&lt;li&gt;CLI-native - the CLI is a single Node binary distributed via signed GitHub releases; the platform API runs on a small, boring stack (Express + Prisma).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Origin turns the invisible half of your codebase - the half an agent wrote - into something you can read, attribute, price, and compare. Solo, it’s your provenance and undo button. For a team, it’s the ground truth under every AI-code decision.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>AI coding at team scale: sessions, budgets, and policies</title>
      <dc:creator>Serhii Troian</dc:creator>
      <pubDate>Thu, 16 Jul 2026 17:28:22 +0000</pubDate>
      <link>https://dev.to/serhii_troian_getorigin/ai-coding-at-team-scale-sessions-budgets-and-policies-i0d</link>
      <guid>https://dev.to/serhii_troian_getorigin/ai-coding-at-team-scale-sessions-budgets-and-policies-i0d</guid>
      <description>&lt;h2&gt;
  
  
  What it takes to see every session, control the spend, and enforce policy when several agents are writing your code.
&lt;/h2&gt;

&lt;p&gt;A pull request lands. Four hundred lines, six files, tidy commits. Which agent produced it? Which prompts? What did it cost? Did it touch anything it shouldn’t have? Has anyone actually looked at it?&lt;/p&gt;

&lt;p&gt;For most engineering organizations, the honest answer to all five is: no idea. Your team adopted Claude Code, Cursor, Codex and Gemini in about six months. Your tooling still assumes a human typed every line.&lt;/p&gt;

&lt;p&gt;Three things have to be true before any of that becomes answerable at team scale. You need a record of what the agents actually did — the sessions. You need to know what it cost, and be able to stop it before it hurts — the budgets. And you need your standards to be something that runs, not something on a wiki — the policies.&lt;/p&gt;

&lt;p&gt;That’s the shape of the rest of this piece. The examples below are how we built it in Origin Team, but the three problems are the same whatever you use.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhaxz4v4824tbysrpa50c.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhaxz4v4824tbysrpa50c.webp" alt="One screen: how many sessions ran, what they cost, and how much of the team is actually using AI" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Sessions: what your agents actually did
&lt;/h2&gt;

&lt;p&gt;Everything else is built on one thing: the session. If you can’t reconstruct what an agent did, you can’t cost it, review it, or govern it. So that’s where it starts.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The capture&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Your engineers install a CLI, log in to your organization, and run one command inside their repo. From then on, capture is automatic. No per-tool setup, no changed workflow, and it works the same across every agent they use.&lt;/p&gt;

&lt;p&gt;npm i -g &lt;a href="https://getorigin.io/cli/origin-cli-latest.tgz" rel="noopener noreferrer"&gt;https://getorigin.io/cli/origin-cli-latest.tgz&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;origin enable&lt;/p&gt;

&lt;p&gt;The Sessions view then lists every session anyone on the team runs, with the name, model, repository, branch, and the engineer who ran it. Open one and you get the full timeline: each prompt, the agent’s output, and the exact changes that prompt produced, down to the files it touched and the lines it wrote.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx9ruz0vayi5zcc5ymx45.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx9ruz0vayi5zcc5ymx45.webp" alt="Every session your team runs, across every agent, in one list" width="799" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fentg50uos1l4iqonjhay.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fentg50uos1l4iqonjhay.webp" alt="nside a session: each prompt, and exactly what it changed" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That record is the raw material for everything that follows.&lt;/p&gt;

&lt;h2&gt;
  
  
  The dashboard: your organization at a glance
&lt;/h2&gt;

&lt;p&gt;The dashboard answers what a lead actually asks on a Monday: sessions per agent, token usage this month broken out by agent, cost by model, and AI adoption, meaning how many of your engineers are genuinely coding with AI rather than just licensed for it.&lt;/p&gt;

&lt;p&gt;Four tabs go deeper:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Activity — sessions per day, top agents, top repositories, and lines written this month. Team adoption breaks it down per engineer: how many sessions they ran, and how much code they actually produced.&lt;/li&gt;
&lt;li&gt;Cost &amp;amp; efficiency — which agent is genuinely more productive: cost per session, cost per commit, cost per line.&lt;/li&gt;
&lt;li&gt;Quality — reviewed PRs, approved PRs, and policy compliance.&lt;/li&gt;
&lt;li&gt;Prompts — every prompt your engineers ran, searchable. Find a specific session or prompt for debugging, review, or reference.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Repositories: every change, attributed&lt;/p&gt;

&lt;p&gt;Connect your GitHub or GitLab repos and every change made to them is tracked. Click into a repository and you see each commit by user, the familiar Git line-by-line view, and, on captured work, the prompt behind each change plus the agent and model that made it. You can also see which sessions ran inside that repo, and by whom.&lt;/p&gt;

&lt;p&gt;It answers “what changed, who changed it, which agent, and what were they asking for” in one place, per repository.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1luiw4n0njkga64dcv11.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1luiw4n0njkga64dcv11.webp" alt="A commit, the agent that wrote it, and the prompts behind it" width="800" height="329"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Insights: the numbers you’ve been guessing at
&lt;/h2&gt;

&lt;p&gt;Insights turns the session record into the view you actually wanted: AI authorship as a share of the lines written, lines changed over time, cost over time, cost by model, sessions and cost per repository, and model adoption, meaning which models your team leans on most.&lt;/p&gt;

&lt;p&gt;It’s the difference between “we use AI a lot” and a number you can take into a budget meeting.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjgp5vy9bz33lf7mm5o6e.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjgp5vy9bz33lf7mm5o6e.webp" alt="AI authorship, cost by model, and model adoption over time" width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Budgets: what it costs, and stopping it before it hurts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once you have the sessions, cost stops being a monthly surprise. Spend is tracked across the organization so you can project it, monitor it, and cap it: how much went to a specific engineer, agent, or model, alongside a monthly projection based on recent usage. Token utilization is tracked the same way, not just dollars.&lt;/p&gt;

&lt;p&gt;Then you set the guardrails. Limits come at two levels:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A soft limit warns the engineer but lets them keep coding.&lt;/li&gt;
&lt;li&gt;A hard limit stops the agent from writing code and tells the user they have exceeded their budget.
Set them daily, weekly, or monthly, and scope them per organization, per engineer, per agent, per model, or even per repository.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the difference between finding out about a $600 Thursday on next month’s invoice and not having a $600 Thursday.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Policies: your rules, actually enforced&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most teams already have standards for AI use. They live in a Notion page nobody opens. Policies make them something that runs inside the coding session: rules that allow, restrict, or prohibit specific actions, for the whole org or for specific users.&lt;/p&gt;

&lt;p&gt;Agents: what your team is allowed to run&lt;/p&gt;

&lt;p&gt;First you decide the surface: which agents exist, which are allowed, and what rules ride along with each. Per agent, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set a system prompt that is shown to every engineer who launches it.&lt;/li&gt;
&lt;li&gt;Set session limits, meaning how many tokens or how much cost a single session may consume.&lt;/li&gt;
&lt;li&gt;Attach policies, org-wide or specific to that agent.&lt;/li&gt;
&lt;li&gt;Review versions. Every configuration change is versioned, and you can roll back.&lt;/li&gt;
&lt;li&gt;Control access, so you can see exactly who can use each agent.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhji53ddnq2g713xiarq0.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhji53ddnq2g713xiarq0.webp" alt="Which agents your team may run, and the rules attached to each" width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The rules&lt;/p&gt;

&lt;p&gt;The built-in rule types cover most of what teams need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;File restriction, to keep agents out of .env files, secrets, and prod configs.&lt;/li&gt;
&lt;li&gt;Model allow-list, to ban specific models from being used for coding.&lt;/li&gt;
&lt;li&gt;Content filter, to block specific words, phrases, or patterns.&lt;/li&gt;
&lt;li&gt;Cost limits, required review, commit-message rules, and session limits.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When the presets don’t cover it, you describe the rule in plain English and the policy is generated for you, then injected into your agents: all of them, or only the ones you choose. Those rules reach each engineer through their CLI, and when someone crosses a line it shows up under Violations.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhp62aii34xmyhafzjjnk.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhp62aii34xmyhafzjjnk.webp" alt="Rules that run in the session, not on a wiki page" width="800" height="318"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pull request checks: the gate&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A rule with no teeth is a suggestion. This is where it bites. Origin builds its review directly into GitHub pull requests and GitLab merge requests. When an engineer finishes a session and pushes, you get a PR check, and the pull request stays frozen until someone reviews what produced it: the sessions, the cost, the prompts, and the changes. Approve, and only then is it allowed to merge.&lt;/p&gt;

&lt;p&gt;No new process for your team to adopt. The gate sits on the workflow you already have.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F53245gaf3b739ocarqbz.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F53245gaf3b739ocarqbz.webp" alt="The pull request stays blocked until someone reviews what the agent actually did" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The rest of it&lt;/p&gt;

&lt;p&gt;Snapshots let an engineer roll back to a specific prompt. Ten prompts deep and you want to return to prompt five? Digging through git history for that is miserable. Instead, pick the snapshot for that prompt, press restore, and the source is back to that point.&lt;/p&gt;

&lt;p&gt;Security runs a built-in analyzer over captured work and flags what slipped in: credentials, API keys, emails, and other secrets that ended up in the source. Because every change carries the prompt behind it, tracing how something got there is a click, not an investigation.&lt;/p&gt;

&lt;p&gt;Infrastructure shows the users and machines running Origin, a live picture of who and what is doing AI-tracked work.&lt;/p&gt;

&lt;p&gt;IAM is where you define access levels to agents and repositories, and invite members with exactly the permissions you intend.&lt;/p&gt;

&lt;p&gt;Settings holds general configuration, your coding plan (set per agent), API keys, and integrations: GitHub, GitLab, Slack, email reports, and an AI provider (recommended, so PR summaries and review checks work). Alongside it: notifications, a full audit log of everything reported, and a compliance tab for reporting.&lt;/p&gt;

&lt;p&gt;One design decision underneath all of it&lt;/p&gt;

&lt;p&gt;None of this works as a dashboard watching from the outside. The prompt, the model, the diff, and the cost are written into the Git repository itself, next to the commits they produced.&lt;/p&gt;

&lt;p&gt;That has consequences worth caring about. The history travels with a clone: new laptop, new teammate, new agent, it comes along. It is vendor-neutral, so work recorded by Claude Code is readable by Codex. And there is no lock-in on your own project’s history.&lt;/p&gt;

&lt;p&gt;Getting started&lt;/p&gt;

&lt;p&gt;Setting up the organization takes a few minutes: create the account, pick the agents your team uses, set your billing policy, connect your repositories, and invite your teammates. Each engineer then installs the CLI and runs origin enable once. Their sessions roll up into your dashboard from that point on.&lt;/p&gt;

&lt;p&gt;Origin Team is $29 per user per month, with a 14-day free trial. Solo developers use it free, forever.&lt;/p&gt;

&lt;p&gt;Watch the full platform tour:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/XMwH7j9Ij5k" rel="noopener noreferrer"&gt;https://youtu.be/XMwH7j9Ij5k&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
