<?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: Jonny</title>
    <description>The latest articles on DEV Community by Jonny (@cbjonny).</description>
    <link>https://dev.to/cbjonny</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%2F4166045%2F7d307208-0252-4621-8da4-34e11534e693.png</url>
      <title>DEV Community: Jonny</title>
      <link>https://dev.to/cbjonny</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cbjonny"/>
    <language>en</language>
    <item>
      <title>AgentSCM - Catch agent merge conflicts at edit time, not merge time.</title>
      <dc:creator>Jonny</dc:creator>
      <pubDate>Sat, 17 Oct 2026 21:06:18 +0000</pubDate>
      <link>https://dev.to/cbjonny/agentscm-catch-agent-merge-conflicts-at-edit-time-not-merge-time-4h77</link>
      <guid>https://dev.to/cbjonny/agentscm-catch-agent-merge-conflicts-at-edit-time-not-merge-time-4h77</guid>
      <description>&lt;p&gt;Today we're soft-launching the alpha version of &lt;a href="https://agentscm.dev" rel="noopener noreferrer"&gt;AgentSCM&lt;/a&gt; for preview and testing.&lt;/p&gt;

&lt;p&gt;Sub-agents and other team mates contributing to the same source git repo can cause issues not seen until merge or PR time. &lt;/p&gt;

&lt;p&gt;There are still questions on whether the usual git workflow survives automated agentic coding long-term, but in the interim we are building AgentSCM to build a community of builders looking to work together, as native as possible embedded in their daily workspace(s), to catch conflicts between sub-agents and other contributors' agents in real-time.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;At the edit&lt;/strong&gt;: before an agent edits a file, its hook asks a local hub who else holds it. The first overlapping edit isn't applied, and the agent is told who holds the file and their task. It can work elsewhere, ask for a handover, ask you, or repeat the edit, and the repeat always goes through.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Before merge&lt;/strong&gt;: agentscm collisions checks your branches and worktrees and asks git merge-tree which merges would actually conflict. Read-only.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No migration&lt;/strong&gt;: the biggest AI labs are already rethinking source control for agents, which is great to see. You don’t have to make that call yet: keep Git, and two-way Git sync already exists as experimental.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Future state&lt;/strong&gt;: full bi-directional git sync to help you decide when, or if, an agent source code manager should replace your git under scaling pressure. And more workflow tools focused on hundreds or thousands of agent edits, not just human commits/merges/PRs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you don't want to install but are curious to see it in action: &lt;a href="https://agentscm.dev/demo/" rel="noopener noreferrer"&gt;https://agentscm.dev/demo/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To set it up for real: &lt;code&gt;npx agentscm&lt;/code&gt; (guided, asks before each change; agentscm uninstall removes it).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FAQ&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Isn't this just worktrees?&lt;/em&gt;&lt;br&gt;
Worktrees isolate agents. They don't tell them about each other, so you still find out at merge.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Won't the agent just retry?&lt;/em&gt;&lt;br&gt;
Yes, on purpose. A wrong refusal costs one retry, not a stuck agent. The point is the agent learns who's on the file and why, at the moment of the edit.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What agents work now?&lt;/em&gt;&lt;br&gt;
Claude Code, Codex and Copilot, through hooks. Cursor gets a note right after an edit instead of a block. Any MCP-capable editor can connect to the hub to see who holds which files and announce its own work.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Is it a file lock?&lt;/em&gt;&lt;br&gt;
No. Nothing is locked, and if the hub is down or slow the edit proceeds.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Telemetry?&lt;/em&gt;&lt;br&gt;
None in the alpha yet. We plan anonymous usage stats soon with an opt-out during both the self-install process and in the settings / cli flag.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;License?&lt;/em&gt;&lt;br&gt;
FSL-1.1-ALv2&lt;/p&gt;

</description>
      <category>git</category>
      <category>agents</category>
      <category>devtools</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Catch unintended authz changes</title>
      <dc:creator>Jonny</dc:creator>
      <pubDate>Tue, 06 Oct 2026 10:45:13 +0000</pubDate>
      <link>https://dev.to/cbjonny/catch-unintended-authz-changes-421b</link>
      <guid>https://dev.to/cbjonny/catch-unintended-authz-changes-421b</guid>
      <description>&lt;p&gt;Hi all,&lt;/p&gt;

&lt;p&gt;I'm co-founder of &lt;a href="https://counterbranch.com" rel="noopener noreferrer"&gt;counterbranch&lt;/a&gt;, and we're on a mission to help developers catch unintended access control change.&lt;/p&gt;

&lt;p&gt;For each pull request in your repository, the action creates one comment and updates it on every run. It states the result first, links the source at both revisions, and attaches the full report as a ZIP you can manually inspect as the reviewer, or hand to your coding agent.&lt;/p&gt;

&lt;p&gt;We've just &lt;a href="https://github.com/marketplace/actions/counterbranch-access-control-change-review" rel="noopener noreferrer"&gt;released on GitHub Marketplace an alpha-version GitHub action&lt;/a&gt; you can put in your current workflow to help identify changes to authz schema. &lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/counterbranch" rel="noopener noreferrer"&gt;
        counterbranch
      &lt;/a&gt; / &lt;a href="https://github.com/counterbranch/action" rel="noopener noreferrer"&gt;
        action
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      GitHub Action for reviewing authorization changes.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Counterbranch scanner Action&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Compare static authorization coverage between two Git revisions and review the
result in your pull request. The scanner examines source without executing your
application. Findings are advisory; they do not prove runtime enforcement.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What it checks&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Counterbranch compares recognized authorization-related source evidence between
the pull request's merge base and head.&lt;/p&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Change or situation&lt;/th&gt;
&lt;th&gt;What the report tells you&lt;/th&gt;
&lt;th&gt;Why it matters&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A recognized guard or authentication check is added, removed, or changed&lt;/td&gt;
&lt;td&gt;The affected operation's before-and-after static evidence&lt;/td&gt;
&lt;td&gt;Review whether the change matches the intended access rules.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A role, permission declaration, or captured authorization hint changes&lt;/td&gt;
&lt;td&gt;The declaration or evidence recorded by the scanner that changed, where recognized&lt;/td&gt;
&lt;td&gt;Access-related code can change while the endpoint list stays the same.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;An endpoint is added or removed&lt;/td&gt;
&lt;td&gt;The added or removed operation, with revision-specific source links&lt;/td&gt;
&lt;td&gt;Review access expectations alongside changes to the API.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;An endpoint’s method, path, or&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/counterbranch/action" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Right now it supports the popular frameworks / libraries: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Policy Engines (OPA, Cedar, OpenFGA)&lt;/li&gt;
&lt;li&gt;Custom AuthZ (Express, NestJS, Django, Django REST framework, FastAPI, Flask, and Spring MVC).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;"But don't policy engines include native test runners?"&lt;br&gt;
Yes, but it's complementary / runs alongside.  We're looking for changes to authz in application code, sometimes when the policy hasn't changed.&lt;/p&gt;

&lt;p&gt;We appreciate any and all feedback while we alpha test this tool and further expand! You can also join the list for updates &lt;a href="https://counterbranch.com/#updates" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>security</category>
      <category>testing</category>
      <category>showdev</category>
      <category>githubactions</category>
    </item>
  </channel>
</rss>
