<?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: Kiran Naragund</title>
    <description>The latest articles on DEV Community by Kiran Naragund (@dev_kiran).</description>
    <link>https://dev.to/dev_kiran</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%2F1204850%2F1873cf6a-e8a7-4d43-9af8-296ac0506b3a.jpg</url>
      <title>DEV Community: Kiran Naragund</title>
      <link>https://dev.to/dev_kiran</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dev_kiran"/>
    <language>en</language>
    <item>
      <title>Cross-Repo Context in AI Code Review: Can Your Coding Agent Understand the Whole System?</title>
      <dc:creator>Kiran Naragund</dc:creator>
      <pubDate>Sun, 25 Oct 2026 15:52:51 +0000</pubDate>
      <link>https://dev.to/dev_kiran/cross-repo-context-in-ai-code-review-can-your-coding-agent-understand-the-whole-system-4nd5</link>
      <guid>https://dev.to/dev_kiran/cross-repo-context-in-ai-code-review-can-your-coding-agent-understand-the-whole-system-4nd5</guid>
      <description>&lt;p&gt;Hello Devs 👋&lt;/p&gt;

&lt;p&gt;If you use an AI coding agent like Claude Code, Cursor, or Codex, you have probably seen it make changes across several files, run tests, and prepare an implementation in a few minutes. For everyday tasks, that can work really well.&lt;/p&gt;

&lt;p&gt;The problem is that most real applications are not contained in one repository. A backend service might depend on a shared library, a frontend might rely on a particular API response, and another service might use the same database schema. A change can look perfectly fine in the repository being edited and still break something downstream.&lt;/p&gt;

&lt;p&gt;This raises a question I think more developers should be asking: &lt;strong&gt;Can I give my coding agent context from other repositories, so it understands the impact of a change before it starts coding?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The answer is yes, but the tools approach the problem differently. Some focus on giving coding agents better context while they work. Others primarily bring cross-repository understanding into pull request review. That difference matters when choosing a tool.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why does cross-repo context matter?
&lt;/h2&gt;

&lt;p&gt;Imagine your team has three repositories:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;checkout-web
     |
     v
customer-api
     |
     v
payments-service
     |
     v
shared-payment-client
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;A developer asks an AI agent to rename a field in &lt;code&gt;shared-payment-client&lt;/code&gt;. The agent opens the repository, updates the type, and runs the tests. Everything passes.&lt;/p&gt;

&lt;p&gt;But &lt;code&gt;payments-service&lt;/code&gt; might still use the old field name. The customer API could transform the value before returning it, and the checkout application might have its own interface definition.&lt;/p&gt;

&lt;p&gt;The agent has completed the requested change, but it hasn't necessarily completed the engineering task.&lt;/p&gt;

&lt;p&gt;This is where local code search reaches its limits. Finding every reference to a symbol inside one repository is useful, but it doesn't tell you which other services depend on that symbol, why a particular API contract exists, or whether a previous pull request introduced a compatibility requirement.&lt;/p&gt;

&lt;p&gt;Developers often know these details because they've worked on the system for years. An AI agent may need to discover them from source code, repository relationships, specifications, and engineering history.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cross-repo context helps an agent understand not just where the code lives, but what depends on it.&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  What should you look for in a cross-repo tool?
&lt;/h2&gt;

&lt;p&gt;I would separate the problem into two questions.&lt;/p&gt;

&lt;p&gt;First, can the coding agent use cross-repository context &lt;em&gt;before and during implementation&lt;/em&gt;? For example, can it discover downstream consumers, check API contracts, and find the history behind an existing implementation?&lt;/p&gt;

&lt;p&gt;Second, can the review process inspect the completed change across repository boundaries? This is important because even an agent that receives good context can still miss something.&lt;/p&gt;

&lt;p&gt;Ideally, you want both. The coding agent should have enough information to make a sensible change, and a separate review step should check whether the resulting code introduces problems elsewhere.&lt;/p&gt;

&lt;p&gt;With that in mind, let's look at four tools: Qodo, Augment, Greptile, and CodeRabbit.&lt;/p&gt;


&lt;h2&gt;
  
  
  1. &lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt;: Cross-repo context inside the coding agent and review workflow
&lt;/h2&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%2Ftux11ulwvh9x33q8gn3j.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%2Ftux11ulwvh9x33q8gn3j.png" alt="Qodo" width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt; is particularly interesting if you want cross-repository understanding to be part of the coding workflow, rather than something you only discover after opening a pull request.&lt;/p&gt;

&lt;p&gt;Its &lt;a href="https://www.qodo.ai/features/qodo-agentic-toolbox/" rel="noopener noreferrer"&gt;Agentic Toolbox&lt;/a&gt;, launched in September 2026, brings Qodo's Context Engine, code review, and organizational standards directly into coding-agent workflows. Through the &lt;code&gt;qodo-codebase-wisdom&lt;/code&gt; skill, an agent can investigate repository relationships, pull request history, specifications, and live Git state before deciding how to implement a change.&lt;/p&gt;

&lt;p&gt;For example, imagine you ask Claude Code or Codex to change retry handling in a payment service. Before editing the code, the agent can investigate which repositories depend on the affected interface and look for an earlier pull request that explains why certain payment failures must not be retried. That information can influence the implementation plan instead of being discovered after the change has already been written.&lt;/p&gt;

&lt;p&gt;The other important part is review. Qodo's &lt;code&gt;qodo-review&lt;/code&gt; skill lets the agent request an independent review of committed or uncommitted local changes before opening a pull request. If the review finds a problem, the agent can investigate the finding, make a correction, and request another review during the same workflow.&lt;/p&gt;

&lt;p&gt;That gives Qodo two roles: helping the agent understand the system before implementation, and providing a separate quality check after the code is written.&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;a href="https://www.qodo.ai/blog/introducing-qodo-3-0/" rel="noopener noreferrer"&gt;What Qodo 3.0 adds&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Qodo 3.0, announced in October 2026, extends this idea beyond the individual coding session. Its Software Map helps teams see how repositories and services relate to each other, making it easier to understand the potential impact of changes across the wider system.&lt;/p&gt;

&lt;p&gt;Qodo 3.0 also introduces PR Triage, which organizes pull request work into related work packages and gives reviewers a way to understand the broader scope and blast radius of changes. For deeper review, Qodo can generate a brief for a coding agent that includes repository relationships, potential impact, and review order.&lt;/p&gt;

&lt;p&gt;Another important part is that the standards used by the organization can be brought into the coding agent's workflow through the Agentic Toolbox. This connects the context used during implementation with the standards and review process used later.&lt;/p&gt;

&lt;p&gt;For teams working across many repositories, this broader workflow is the main distinction. The goal is not just to find related code. It is to connect system understanding, coding standards, implementation, and independent review.&lt;/p&gt;

&lt;p&gt;Qodo 3.0 also adds full on-premises and air-gapped deployment options for organizations that need the platform and its codebase context to remain within their own environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt; is worth considering when you want cross-repo context available to coding agents and connected to an organizational code-quality and governance workflow.&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  2. &lt;a href="https://www.augmentcode.com/" rel="noopener noreferrer"&gt;Augment&lt;/a&gt;: Give coding agents deeper codebase context
&lt;/h2&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%2Fzm9q4munaup47mkegdco.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%2Fzm9q4munaup47mkegdco.png" alt="Augment" width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Augment approaches the problem from the context-retrieval side.&lt;/p&gt;

&lt;p&gt;Its Context Engine builds an understanding of code across repositories, services, and engineering history. Instead of relying only on an agent to search through files and decide which ones matter, it retrieves relevant context for the task.&lt;/p&gt;

&lt;p&gt;Augment also offers its Context Engine through MCP, which allows compatible coding agents to access its context capabilities. Its hosted MCP mode is designed to provide context across repositories, making it useful for teams that want to keep using their existing coding agent while improving the information available to it.&lt;/p&gt;

&lt;p&gt;Consider a request to investigate a checkout timeout. The relevant implementation might span a frontend, an API, a payment service, and webhook handlers. Augment's approach is to retrieve the relevant pieces and relationships so the agent can investigate the full request path without manually searching every repository from scratch.&lt;/p&gt;

&lt;p&gt;The distinction here is that Augment focuses strongly on helping the coding agent find and use relevant codebase context efficiently. It is not simply a pull request reviewer that comments on a diff.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.augmentcode.com/" rel="noopener noreferrer"&gt;Augment&lt;/a&gt; is worth considering when your main problem is helping coding agents navigate large, connected codebases and retrieve the right context during implementation.&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  3. &lt;a href="https://www.greptile.com/" rel="noopener noreferrer"&gt;Greptile&lt;/a&gt;: Cross-repo context for pull request review
&lt;/h2&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%2F15vd5cyvm06y6vtwqtfe.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%2F15vd5cyvm06y6vtwqtfe.png" alt="Greptile" width="800" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Greptile is primarily known for AI code review, and its cross-repository capabilities help it review changes with a broader understanding of the codebase.&lt;/p&gt;

&lt;p&gt;Its Repo Clusters feature lets teams group related repositories so Greptile can use them as read-only context when reviewing a pull request. Teams can also configure repositories explicitly as additional review context.&lt;/p&gt;

&lt;p&gt;Suppose a pull request changes a shared SDK. A review limited to the SDK repository might not catch that another service relies on the previous behavior. With the related repository available as context, Greptile can investigate how the change affects consumers and raise relevant findings during review.&lt;/p&gt;

&lt;p&gt;This makes it useful for teams whose main concern is catching cross-repository issues before merging. Greptile also supports sending review findings to coding agents, so developers can use those findings to guide fixes.&lt;/p&gt;

&lt;p&gt;The key distinction is the workflow: Greptile's cross-repo context is especially relevant to reviewing pull requests, while Qodo's Agentic Toolbox explicitly brings cross-repository investigation into the coding session before implementation as well as independent local review.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.greptile.com/" rel="noopener noreferrer"&gt;Greptile&lt;/a&gt; is worth considering when you want AI pull request reviews to account for related repositories instead of treating every change in isolation.&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  4. &lt;a href="https://www.coderabbit.ai/" rel="noopener noreferrer"&gt;CodeRabbit&lt;/a&gt;: Automatically discover related repositories for review
&lt;/h2&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%2F9bdd0kgtqyntk2h3zdf0.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%2F9bdd0kgtqyntk2h3zdf0.png" alt="CodeRabbit" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;CodeRabbit has also expanded beyond single-repository review. Its Multi-Repo Analysis feature lets reviews use context from related repositories, and its Automatic Repository Linking feature can discover relationships across an organization using signals such as imports, dependency manifests, and shared code patterns.&lt;/p&gt;

&lt;p&gt;This addresses a practical problem: manually maintaining a list of related repositories can become difficult as a system grows. Services change, new packages are introduced, and repository relationships evolve over time.&lt;/p&gt;

&lt;p&gt;When a pull request changes an API contract, shared type, or database schema, CodeRabbit can explore linked repositories to investigate downstream effects. Its goal is to surface problems that would be easy to miss when reviewing only the repository where the change originated.&lt;/p&gt;

&lt;p&gt;That makes CodeRabbit a relevant option for teams that want cross-repository context integrated into their existing pull request review process, particularly when automatic discovery of related repositories is useful.&lt;/p&gt;

&lt;p&gt;As with Greptile, the important distinction is to check where the context is available in your workflow. Cross-repository context during PR review is not automatically the same thing as giving your coding agent that context before it starts implementing a task.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.coderabbit.ai/" rel="noopener noreferrer"&gt;CodeRabbit&lt;/a&gt; is worth considering when you want related repositories discovered and considered automatically during code review.&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Quick comparison: Which tool fits your workflow?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Main strength&lt;/th&gt;
&lt;th&gt;A good fit when&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Qodo&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cross-repo context, agentic review, organizational standards, and system-level visibility&lt;/td&gt;
&lt;td&gt;You want context before coding and independent review before the PR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Augment&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Context retrieval across codebases, services, and history&lt;/td&gt;
&lt;td&gt;Your coding agent struggles to find the right information in a large system&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Greptile&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI pull request review with related-repository context&lt;/td&gt;
&lt;td&gt;You want reviewers to catch downstream impact before merging&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CodeRabbit&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Multi-repo review with automatic repository linking&lt;/td&gt;
&lt;td&gt;You want related repositories discovered and included in PR review&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These tools overlap, but they are not interchangeable in every workflow. The best choice depends on whether you primarily need better context during implementation, better cross-repository review, or a more complete system that connects both.&lt;/p&gt;
&lt;h2&gt;
  
  
  Can I get cross-repo context in my coding agent today?
&lt;/h2&gt;

&lt;p&gt;Yes. You don't necessarily need to replace Claude Code, Cursor, or Codex to do it. The important question is whether the context tool can provide information from repositories outside the agent's current working directory and whether the agent can access that information when planning a change.&lt;/p&gt;

&lt;p&gt;For example, with &lt;a href="https://www.qodo.ai/features/qodo-agentic-toolbox/" rel="noopener noreferrer"&gt;Qodo's Agentic Toolbox&lt;/a&gt;, you can ask your coding agent to investigate the system before implementing a task. A useful prompt might be:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Before changing this API:

1. Identify repositories and services that depend on it.
2. Find relevant API contracts and specifications.
3. Check pull request history for previous compatibility decisions.
4. Explain the likely impact of the proposed change.
5. Then suggest an implementation plan.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The point is not to make the agent read every repository. It is to help it identify the repositories and historical context that matter for the task.&lt;/p&gt;

&lt;p&gt;You should still verify the results. Repository access, indexing, permissions, and the quality of dependency information all affect what a tool can discover. A cross-repo context system can help surface relationships, but it cannot guarantee that every downstream risk will be found.&lt;/p&gt;
&lt;h2&gt;
  
  
  How I would evaluate these tools
&lt;/h2&gt;

&lt;p&gt;I wouldn't judge cross-repo context using a small coding task that only touches one service. Most tools can appear effective when the answer is already visible in the current repository.&lt;/p&gt;

&lt;p&gt;Instead, I would choose a real change that crosses a service boundary, such as renaming a shared API field, changing a timeout, or modifying a common library.&lt;/p&gt;

&lt;p&gt;Ask each tool to identify downstream consumers before implementation. Check whether it finds the relevant repositories, explains why they are connected, and retrieves useful history rather than just returning matching file names.&lt;/p&gt;

&lt;p&gt;Then see what happens after the change is written. Does the review identify a compatibility issue? Does it point to the affected code in another repository? Can the coding agent use that finding to fix the problem? And can your team understand why the tool raised the issue?&lt;/p&gt;

&lt;p&gt;I'd also test setup and access requirements. Some tools need related repositories configured explicitly, while others offer automatic repository discovery. Your organization's hosting setup, security requirements, and preferred coding agents may narrow the choices further.&lt;/p&gt;

&lt;p&gt;The most useful tool is not necessarily the one that returns the most context. It is the one that consistently returns the context that changes the engineering decision.&lt;/p&gt;


&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;Cross-repo context is becoming an important part of AI-assisted development because real software changes rarely stop at repository boundaries. A change to a shared library can affect multiple services, and a passing test suite in one repository doesn't prove that all its consumers will continue to work.&lt;/p&gt;

&lt;p&gt;Augment, Greptile, and CodeRabbit each address parts of this problem through codebase context or cross-repository review. Qodo's approach is particularly interesting if you want to bring that understanding into the coding session itself and connect it with independent review, organizational standards, and the wider system view in Qodo 3.0.&lt;/p&gt;

&lt;p&gt;For me, the most important distinction is this: &lt;strong&gt;Does the tool help the agent understand the impact of a change before it writes the code, or does it mainly help reviewers discover the impact afterward?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A mature workflow needs both. Give the agent relevant system context before implementation, review the actual changes independently, and keep humans responsible for decisions that require engineering judgment.&lt;/p&gt;

&lt;p&gt;That's how cross-repo context becomes more than a search feature. It becomes part of how your team builds and reviews software.&lt;/p&gt;


&lt;h3&gt;
  
  
  👨‍💻 TL;DR
&lt;/h3&gt;

&lt;p&gt;If you're looking for cross-repo context, start by deciding where you need it most.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt;:&lt;/strong&gt; Connects cross-repo understanding with coding-agent workflows, independent review, organizational rules, and Qodo 3.0's Software Map and PR Triage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.augmentcode.com/" rel="noopener noreferrer"&gt;Augment&lt;/a&gt;:&lt;/strong&gt; Focuses on supplying coding agents with relevant context across large codebases and repositories.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.greptile.com/" rel="noopener noreferrer"&gt;Greptile&lt;/a&gt;:&lt;/strong&gt; Brings related repositories into AI pull request review.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.coderabbit.ai/" rel="noopener noreferrer"&gt;CodeRabbit&lt;/a&gt;:&lt;/strong&gt; Uses linked and automatically discovered repositories to investigate downstream impact during review.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want your coding agent to understand the wider system &lt;em&gt;before&lt;/em&gt; it starts changing code, Qodo's Agentic Toolbox is a strong option to evaluate first. If your main goal is to strengthen pull request review across related repositories, compare Greptile and CodeRabbit closely as well.&lt;/p&gt;


&lt;h2&gt;
  
  
  Thank You!!🙏
&lt;/h2&gt;

&lt;p&gt;Thank you for reading this far. If you find this article useful, please like and share this article. Someone could find it useful too.💖&lt;/p&gt;

&lt;p&gt;Connect with me on &lt;a href="https://x.com/kiran__a__n" rel="noopener noreferrer"&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://github.com/Kiran1689" rel="noopener noreferrer"&gt;&lt;strong&gt;GitHub&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/kiran-a-n" rel="noopener noreferrer"&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag__user ltag__user__id__1204850"&gt;
    &lt;a href="/dev_kiran" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=150,height=150,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1204850%2F1873cf6a-e8a7-4d43-9af8-296ac0506b3a.jpg" alt="dev_kiran image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/dev_kiran"&gt;Kiran Naragund&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/dev_kiran"&gt;Tech Writer and Moderator @DEV ✦ Senior Software Engineer ✦ Open-Source Contributor ✦ Email for Collabs :)&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;



</description>
      <category>aie</category>
      <category>github</category>
      <category>agents</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Your AI Agent Changed One Repo. Did It Check What Breaks Outside It?</title>
      <dc:creator>Kiran Naragund</dc:creator>
      <pubDate>Mon, 28 Sep 2026 09:30:00 +0000</pubDate>
      <link>https://dev.to/dev_kiran/your-ai-agent-changed-one-repo-did-it-check-what-breaks-outside-it-2llo</link>
      <guid>https://dev.to/dev_kiran/your-ai-agent-changed-one-repo-did-it-check-what-breaks-outside-it-2llo</guid>
      <description>&lt;p&gt;Hello Devs 👋&lt;/p&gt;

&lt;p&gt;One thing I have noticed with AI coding agents is that they are very good at working inside the repository you give them.&lt;/p&gt;

&lt;p&gt;You ask the agent to change an API, update a database model, add a field, modify a service, or change some business logic. It searches the code, finds the relevant files, makes the changes, runs some tests, and gives you a result.&lt;/p&gt;

&lt;p&gt;For a small application, that might be enough. But real systems are rarely that isolated.&lt;/p&gt;

&lt;p&gt;A change in one repository can affect another service, a shared API contract, a frontend application, an SDK, a background worker, or some internal tool that lives somewhere else. The code you are looking at might only be one part of the actual change.&lt;/p&gt;

&lt;p&gt;This is where I think AI coding agents still have an interesting problem to solve.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Understanding the repository is not always the same as understanding the system.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The repository in front of the agent is only part of the picture
&lt;/h2&gt;

&lt;p&gt;Imagine you have three repositories.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payments-service
customer-api
checkout-web
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The checkout application calls &lt;code&gt;customer-api&lt;/code&gt;, and &lt;code&gt;customer-api&lt;/code&gt; communicates with &lt;code&gt;payments-service&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Now someone asks an AI coding agent:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Update the payment response to include the transaction status.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;The agent opens &lt;code&gt;payments-service&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;It finds the response model.&lt;/li&gt;
&lt;li&gt;It adds the field.&lt;/li&gt;
&lt;li&gt;The tests pass.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;At first glance, everything looks fine.&lt;/p&gt;

&lt;p&gt;But what if another repository depends on the exact shape of that response?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Maybe &lt;code&gt;customer-api&lt;/code&gt; transforms the response before sending it to the frontend.&lt;/li&gt;
&lt;li&gt;Maybe &lt;code&gt;checkout-web&lt;/code&gt; has its own TypeScript interface.&lt;/li&gt;
&lt;li&gt;Maybe an internal reporting service expects a particular field to have a specific value.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The change might still be perfectly valid inside &lt;code&gt;payments-service&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The problem is that the agent may not know what happens outside that repository.&lt;/p&gt;

&lt;p&gt;This is one of those things that is easy for a developer who has worked on the system for a few years. You remember that the payment service is connected to another service. You remember an old migration that changed the API contract. You might even remember the pull request where the current behavior was introduced.&lt;/p&gt;

&lt;p&gt;An AI agent does not automatically have that memory.&lt;/p&gt;


&lt;h2&gt;
  
  
  Searching the code is not the same as understanding dependencies
&lt;/h2&gt;

&lt;p&gt;This is why I don't think simply giving an agent a better search tool completely solves the problem.&lt;/p&gt;

&lt;p&gt;The agent can search for:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;TransactionStatus
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;It can find references in the current repository.&lt;/li&gt;
&lt;li&gt;It can search for API routes.&lt;/li&gt;
&lt;li&gt;It can inspect imports.&lt;/li&gt;
&lt;li&gt;It can look through tests.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of that is useful.&lt;/p&gt;

&lt;p&gt;But there is a difference between asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Where is this function used?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What systems depend on the behavior I'm about to change?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The second question requires more context.&lt;/p&gt;

&lt;p&gt;Sometimes that context is spread across repositories. Sometimes it is in pull request history. Sometimes it is in specifications or documentation. Sometimes the reason behind a strange piece of code is buried in an old engineering decision.&lt;/p&gt;

&lt;p&gt;That history matters more than we sometimes realize.&lt;/p&gt;


&lt;h2&gt;
  
  
  The weird code might have a reason
&lt;/h2&gt;

&lt;p&gt;I've seen this happen many times in normal development.&lt;/p&gt;

&lt;p&gt;You open a piece of code and think:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Why are we doing this?
This looks unnecessary.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Then someone points you to an old pull request.&lt;/p&gt;

&lt;p&gt;And suddenly the code makes sense.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Maybe the service used to return a different value.&lt;/li&gt;
&lt;li&gt;Maybe another system had a compatibility problem.&lt;/li&gt;
&lt;li&gt;Maybe a customer integration depended on the current behavior.&lt;/li&gt;
&lt;li&gt;Maybe someone intentionally avoided a seemingly cleaner implementation because it caused a production issue.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without that history, an AI coding agent can make a change that looks better locally but removes an important compatibility decision.&lt;/p&gt;

&lt;p&gt;This is one reason codebase context should include more than the current files.&lt;/p&gt;

&lt;p&gt;The history of the code can be part of the context too.&lt;/p&gt;
&lt;h2&gt;
  
  
  This becomes more important with AI-generated changes
&lt;/h2&gt;

&lt;p&gt;Before AI coding agents became common, a developer usually had to spend some time understanding the change before making it.&lt;/p&gt;

&lt;p&gt;That did not make developers perfect. We still missed dependencies and introduced bugs.&lt;/p&gt;

&lt;p&gt;But there was a natural amount of friction in the process.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You had to find the repository.&lt;/li&gt;
&lt;li&gt;You had to understand the service.&lt;/li&gt;
&lt;li&gt;You had to search for usages.&lt;/li&gt;
&lt;li&gt;You had to talk to another developer.&lt;/li&gt;
&lt;li&gt;You might look through old pull requests.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now an AI agent can make a surprisingly large change in a short amount of time.&lt;/p&gt;

&lt;p&gt;That is useful.&lt;/p&gt;

&lt;p&gt;But it also means the cost of skipping context can become easier to overlook.&lt;/p&gt;

&lt;p&gt;If an agent can modify 20 files in a few minutes, we need better ways to answer a simple question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What else could this change affect?&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  This is where cross-repository context becomes useful
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt; has been working on this problem through its Context Engine.&lt;/p&gt;

&lt;p&gt;The idea is not just to search the repository where the agent is currently working. &lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt;'s tooling can use repository relationships, pull request history, specifications, and live Git state to help understand how a change fits into the wider system. Its Agentic Toolbox brings that capability directly into coding-agent workflows.&lt;/p&gt;

&lt;p&gt;For example, imagine the developer asks:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Change the customer ID format in the payments service.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Instead of immediately editing the model, a context-aware workflow could first investigate questions such as:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Which repositories consume this value?

Where is the API contract defined?

Are there related pull requests?

Does another service transform this ID?

Are there tests in another repository?

Has this field caused compatibility issues before?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Those questions are much closer to how an experienced engineer would approach the change.&lt;/p&gt;

&lt;p&gt;The important part is that the developer doesn't have to manually discover every connection first.&lt;/p&gt;
&lt;h2&gt;
  
  
  A practical example
&lt;/h2&gt;

&lt;p&gt;Let's say your company has this setup:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;checkout-web
      ↓
order-api
      ↓
payment-service
      ↓
payment-provider
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;You ask your coding agent to change the payment timeout from 10 seconds to 30 seconds.&lt;/p&gt;

&lt;p&gt;Inside &lt;code&gt;payment-service&lt;/code&gt;, the change is tiny.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;10 seconds → 30 seconds
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The tests pass. But there might be a timeout in &lt;code&gt;order-api&lt;/code&gt; that is still set to 15 seconds.&lt;/p&gt;

&lt;p&gt;So the payment service can wait for 30 seconds, but the API sitting in front of it will give up after 15.&lt;/p&gt;

&lt;p&gt;The code change is correct inside one repository. The system behavior is still wrong.&lt;/p&gt;

&lt;p&gt;This is the kind of problem that is difficult to catch if your review only looks at the changed repository.&lt;/p&gt;

&lt;p&gt;A cross-repository view can surface the mismatch before the change reaches production.&lt;/p&gt;


&lt;h2&gt;
  
  
  AI agents need context before they start coding
&lt;/h2&gt;

&lt;p&gt;There is another part of this that I find important.&lt;/p&gt;

&lt;p&gt;We often think about AI review as something that happens after the code is written.&lt;/p&gt;

&lt;p&gt;The agent generates the code. Then another tool reviews it.That is useful, but there is also value in giving the agent better context before implementation starts.&lt;/p&gt;

&lt;p&gt;Suppose the agent discovers:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;The timeout in payment-service is 30 seconds,
but order-api currently has a 15 second timeout.

The existing timeout was introduced in PR #482
because requests longer than 15 seconds were considered failed
by the checkout workflow.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;That changes the implementation conversation.&lt;/p&gt;

&lt;p&gt;The agent might now ask whether the upstream timeout should also change instead of blindly modifying one number.&lt;/p&gt;

&lt;p&gt;That is a much better use of AI than simply asking it to generate code faster.&lt;/p&gt;

&lt;p&gt;The agent is helping you understand the system before changing it.&lt;/p&gt;


&lt;h2&gt;
  
  
  This is also where independent review helps
&lt;/h2&gt;

&lt;p&gt;Even with good context, I wouldn't assume the coding agent will always make the right decision.&lt;/p&gt;

&lt;p&gt;The same agent that writes the code is still working toward the requested task.&lt;/p&gt;

&lt;p&gt;Having an independent review step gives you another perspective.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.qodo.ai/agentic-toolbox/agentic-toolbox-overview" rel="noopener noreferrer"&gt;Qodo's Agentic Toolbox&lt;/a&gt; includes a &lt;code&gt;qodo-review&lt;/code&gt; skill that can review committed and uncommitted local changes before a pull request is opened. The review can be run inside the coding-agent workflow rather than waiting until the PR already exists.&lt;/p&gt;

&lt;p&gt;So the workflow can become something like:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Developer describes the change
        ↓
Agent investigates the wider system
        ↓
Agent checks related history and dependencies
        ↓
Agent implements the change
        ↓
Tests run
        ↓
Independent review
        ↓
Agent investigates findings
        ↓
Developer reviews the remaining decisions
        ↓
Pull request
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;I like this workflow because it doesn't try to remove the developer from the process.&lt;/p&gt;

&lt;p&gt;The agent handles more of the investigation and implementation work, while the developer still makes the decisions that require actual system knowledge.&lt;/p&gt;


&lt;h2&gt;
  
  
  The biggest change is not faster coding
&lt;/h2&gt;

&lt;p&gt;It is tempting to measure AI coding agents by how quickly they produce code.&lt;/p&gt;

&lt;p&gt;How many files can they modify?&lt;/p&gt;

&lt;p&gt;How quickly can they finish a task?&lt;/p&gt;

&lt;p&gt;How many tests can they generate?&lt;/p&gt;

&lt;p&gt;Those are useful measurements, but they don't tell the whole story.&lt;/p&gt;

&lt;p&gt;If the agent changes one repository in five minutes but misses an important dependency in another repository, the speed doesn't really help.&lt;/p&gt;

&lt;p&gt;The more useful question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can the agent understand enough of the system to make a safe change?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That changes how I think about AI coding tools.&lt;/p&gt;

&lt;p&gt;The goal isn't simply to give an agent access to more code.&lt;/p&gt;

&lt;p&gt;The goal is to give it the &lt;strong&gt;right context for the change it is making&lt;/strong&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  You don't need every repository connected to everything
&lt;/h2&gt;

&lt;p&gt;There is also a practical limit here.&lt;/p&gt;

&lt;p&gt;I don't think the answer is to dump your entire company's source code into every AI coding session.&lt;/p&gt;

&lt;p&gt;That would create its own problems.&lt;/p&gt;

&lt;p&gt;Most tasks only need a relevant slice of the system.&lt;/p&gt;

&lt;p&gt;If you're changing the payment API, you probably need the services that consume that API, the relevant specifications, related tests, and some history around the behavior.&lt;/p&gt;

&lt;p&gt;You probably don't need every unrelated repository in the organization.&lt;/p&gt;

&lt;p&gt;That is why dependency mapping and contextual retrieval are interesting. The useful question is not:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Give the agent all our code.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Show the agent the parts of the system that matter for this change.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is a much more practical approach.&lt;/p&gt;
&lt;h2&gt;
  
  
  What I would check before trusting an AI agent with cross-repo changes
&lt;/h2&gt;

&lt;p&gt;If your team is starting to use AI agents for larger changes, I would test this with a few real tasks rather than judging the tool from a simple CRUD example.&lt;/p&gt;

&lt;p&gt;Give the agent a change that crosses a service boundary.&lt;/p&gt;

&lt;p&gt;Ask it to identify affected repositories before writing code.&lt;/p&gt;

&lt;p&gt;See whether it finds the relevant API consumers.&lt;/p&gt;

&lt;p&gt;Check whether it can find previous decisions from pull request history.&lt;/p&gt;

&lt;p&gt;Then intentionally give it a task where changing one repository without changing another would create a problem.&lt;/p&gt;

&lt;p&gt;That will tell you much more about the quality of its context than a simple code-generation benchmark.&lt;/p&gt;

&lt;p&gt;I would also check whether the tool clearly explains &lt;em&gt;why&lt;/em&gt; it thinks another repository is affected. Developers need to be able to verify the reasoning instead of simply trusting a list of files produced by an agent.&lt;/p&gt;


&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;AI coding agents are getting very good at working inside a repository.&lt;/p&gt;

&lt;p&gt;The next problem is understanding what that repository is connected to.&lt;/p&gt;

&lt;p&gt;A small change can cross service boundaries, API contracts, shared libraries, databases, and old compatibility decisions. Those relationships are often not obvious from the files that the developer has open.&lt;/p&gt;

&lt;p&gt;That's why I think context is becoming just as important as code generation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.qodo.ai/agentic-toolbox/agentic-toolbox-overview" rel="noopener noreferrer"&gt;Qodo's current Agentic Toolbox&lt;/a&gt; is an example of this direction. It brings cross-repository context, pull request history, specifications, organizational rules, and independent review into the coding-agent workflow.&lt;/p&gt;

&lt;p&gt;For me, the interesting question is no longer only:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Can the AI write this code?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Does the AI understand enough of the system to know what this change might break?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is a much harder problem, and probably a more important one as coding agents start handling larger engineering tasks.&lt;/p&gt;
&lt;h3&gt;
  
  
  👨‍💻 TL;DR
&lt;/h3&gt;

&lt;p&gt;AI coding agents can understand the repository they're working in, but real applications often span multiple repositories and services.&lt;/p&gt;

&lt;p&gt;A safe agentic workflow needs more than file search. It needs relevant dependencies, API relationships, previous decisions, specifications, and the ability to review the actual change before it reaches a pull request.&lt;/p&gt;

&lt;p&gt;The direction is moving from:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"AI writes code."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;to:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"AI understands the system, writes the change, checks the impact, and gets another review before we merge it."&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Thank You!!🙏
&lt;/h2&gt;

&lt;p&gt;Thank you for reading this far. If you find this article useful, please like and share this article. Someone could find it useful too.💖&lt;/p&gt;

&lt;p&gt;Connect with me on &lt;a href="https://x.com/kiran__a__n" rel="noopener noreferrer"&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://github.com/Kiran1689" rel="noopener noreferrer"&gt;&lt;strong&gt;GitHub&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/kiran-a-n" rel="noopener noreferrer"&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag__user ltag__user__id__1204850"&gt;
    &lt;a href="/dev_kiran" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=150,height=150,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1204850%2F1873cf6a-e8a7-4d43-9af8-296ac0506b3a.jpg" alt="dev_kiran image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/dev_kiran"&gt;Kiran Naragund&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/dev_kiran"&gt;Tech Writer and Moderator @DEV ✦ Senior Software Engineer ✦ Open-Source Contributor ✦ Email for Collabs :)&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;



</description>
      <category>ai</category>
      <category>opensource</category>
      <category>productivity</category>
      <category>devops</category>
    </item>
    <item>
      <title>Can Claude Code and Cursor actually enforce your org rules and coding standards?</title>
      <dc:creator>Kiran Naragund</dc:creator>
      <pubDate>Sun, 27 Sep 2026 13:44:59 +0000</pubDate>
      <link>https://dev.to/dev_kiran/can-claude-code-and-cursor-actually-enforce-your-org-rules-and-coding-standards-1e44</link>
      <guid>https://dev.to/dev_kiran/can-claude-code-and-cursor-actually-enforce-your-org-rules-and-coding-standards-1e44</guid>
      <description>&lt;p&gt;Hello Devs 👋&lt;/p&gt;

&lt;p&gt;One of the first things many teams do after adopting an AI coding agent is create a rules file.&lt;/p&gt;

&lt;p&gt;If you're using Claude Code, you might have a &lt;code&gt;CLAUDE.md&lt;/code&gt; file. If you're using Cursor, you might have &lt;code&gt;.cursor/rules&lt;/code&gt;. You put things in there like naming conventions, architecture guidelines, security requirements, testing expectations, and things the agent should avoid.&lt;/p&gt;

&lt;p&gt;That sounds like a good way to keep AI-generated code consistent with the way your team works.&lt;/p&gt;

&lt;p&gt;But after using these tools for a while, there is a question that becomes more important:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are these rules actually being enforced, or are we simply giving the AI another set of instructions to read?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That difference matters a lot when you have multiple developers, multiple repositories, and multiple AI coding tools being used across the same organization.&lt;/p&gt;




&lt;h2&gt;
  
  
  Rules files are useful, but they are still instructions
&lt;/h2&gt;

&lt;p&gt;Claude Code and Cursor both give developers ways to provide persistent instructions to the coding agent.&lt;/p&gt;

&lt;p&gt;Claude Code uses &lt;code&gt;CLAUDE.md&lt;/code&gt; for things like project conventions, architecture notes, coding standards, and common workflows. Cursor has Project Rules under &lt;code&gt;.cursor/rules&lt;/code&gt;, where teams can keep rules that are applied to the agent based on the configured scope and conditions.&lt;/p&gt;

&lt;p&gt;For a small project, this can work really well.&lt;/p&gt;

&lt;p&gt;Imagine your team has a rule like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- All API calls must have an explicit timeout.

- Never log access tokens, passwords, or personal customer data.

- Database mutations must be idempotent.

- Run the relevant tests before opening a pull request.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;You give these rules to Claude Code or Cursor, and the agent can use them while working on the code.&lt;/p&gt;

&lt;p&gt;The problem starts when you ask a slightly different question: what happens when the agent doesn't follow one of them?&lt;/p&gt;

&lt;p&gt;The rules file itself doesn't necessarily stop the code from being written. It doesn't behave like a compiler error or a CI check. The model can misunderstand a rule, forget part of it, or simply produce code that violates it.&lt;/p&gt;

&lt;p&gt;That doesn't make &lt;code&gt;CLAUDE.md&lt;/code&gt; or Cursor Rules useless. They are actually very useful for giving the agent the context it needs. But there is a difference between &lt;strong&gt;guiding an agent&lt;/strong&gt; and &lt;strong&gt;proving that the resulting code follows the standard&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That distinction becomes much more important as a team grows.&lt;/p&gt;


&lt;h2&gt;
  
  
  The problem gets bigger across repositories
&lt;/h2&gt;

&lt;p&gt;Let's say your organization has 40 repositories.&lt;/p&gt;

&lt;p&gt;The payment service has one set of rules. The frontend has another. The internal platform has another. Some rules are shared, while others only apply to certain services.&lt;/p&gt;

&lt;p&gt;Now imagine your security team introduces a new requirement:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Do not write sensitive customer information to application logs.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Someone has to make sure that requirement reaches the repositories where it matters.&lt;/p&gt;

&lt;p&gt;Maybe you update &lt;code&gt;CLAUDE.md&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Maybe someone updates Cursor Rules.&lt;/p&gt;

&lt;p&gt;Maybe another team has a different instruction file.&lt;/p&gt;

&lt;p&gt;And six months later, you have slightly different versions of the same rule spread across different repositories.&lt;/p&gt;

&lt;p&gt;This is one of the problems with treating Markdown instruction files as the complete governance system. They are great for giving an agent local context, but they don't automatically give an organization a central place to define, manage, update, and check its standards.&lt;/p&gt;

&lt;p&gt;This is also where different AI coding agents can make the problem more complicated. Your developers might use Claude Code, Cursor, Codex, or another agent depending on the project and their personal workflow.&lt;/p&gt;

&lt;p&gt;You don't really want your engineering standard to depend on which AI tool happened to write the code.&lt;/p&gt;


&lt;h2&gt;
  
  
  So what does "enforcement" actually mean?
&lt;/h2&gt;

&lt;p&gt;I think this is where the terminology gets confusing.&lt;/p&gt;

&lt;p&gt;There are several different levels of enforcement.&lt;/p&gt;

&lt;p&gt;At the first level, you have &lt;strong&gt;instructions&lt;/strong&gt;. You tell the coding agent what your organization expects through files such as &lt;code&gt;CLAUDE.md&lt;/code&gt; or &lt;code&gt;.cursor/rules&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;At the next level, you can have &lt;strong&gt;automated checks&lt;/strong&gt;. Linters, tests, SAST tools, type checkers, and other CI checks can catch specific classes of violations.&lt;/p&gt;

&lt;p&gt;Then you have &lt;strong&gt;review and policy checks&lt;/strong&gt;, where a system examines the actual change and checks it against broader engineering standards.&lt;/p&gt;

&lt;p&gt;Finally, you can have &lt;strong&gt;hard merge gates&lt;/strong&gt;, where a pull request cannot merge until required checks pass.&lt;/p&gt;

&lt;p&gt;These things are related, but they aren't interchangeable.&lt;/p&gt;

&lt;p&gt;A rule inside a Markdown file doesn't automatically become a hard policy gate.&lt;/p&gt;

&lt;p&gt;That's an important point when talking about AI coding agents because it's easy to say that an agent "enforces" a rule when what it really does is receive that rule as context.&lt;/p&gt;


&lt;h2&gt;
  
  
  Where Claude Code and Cursor fit
&lt;/h2&gt;

&lt;p&gt;I wouldn't look at Claude Code or Cursor rules as a replacement for your engineering governance system.&lt;/p&gt;

&lt;p&gt;Their main job is to make the coding agent understand how you want it to work.&lt;/p&gt;

&lt;p&gt;For example, if your project prefers a particular service structure, error-handling pattern, testing approach, or naming convention, putting that information where the agent can consistently access it is useful.&lt;/p&gt;

&lt;p&gt;Instead of repeatedly telling the agent:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Don't create a new database abstraction.
Use the existing repository pattern.
Add tests for the service layer.
Never log request headers.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;you can put those expectations into the project's rules.&lt;/p&gt;

&lt;p&gt;That saves a lot of repetition and gives the agent more context before it starts making changes.&lt;/p&gt;

&lt;p&gt;Cursor's current rules system also supports different ways of applying rules, including rules that are always applied, automatically attached based on context, requested by the agent, or manually invoked. Claude Code similarly loads project-level &lt;code&gt;CLAUDE.md&lt;/code&gt; instructions into its working context.&lt;/p&gt;

&lt;p&gt;So yes, these tools can make an agent much more consistent.&lt;/p&gt;

&lt;p&gt;But consistency is not the same thing as independent verification.&lt;/p&gt;


&lt;h2&gt;
  
  
  What happens when the agent writes the wrong code?
&lt;/h2&gt;

&lt;p&gt;Consider a fairly normal task.&lt;/p&gt;

&lt;p&gt;You ask the agent:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Add retry handling to the payment API.

Retry transient failures up to three times with exponential backoff.
Do not retry permanent failures.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Your organization has a few additional standards:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Payment operations must be idempotent.

External requests require explicit timeouts.

Sensitive payment information must not appear in logs.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Claude Code or Cursor can receive those rules and use them while implementing the change.&lt;/p&gt;

&lt;p&gt;The agent might even write a very good implementation.&lt;/p&gt;

&lt;p&gt;But what if it accidentally forgets the idempotency requirement?&lt;/p&gt;

&lt;p&gt;Or it adds retries around an operation that isn't safe to repeat?&lt;/p&gt;

&lt;p&gt;Or it logs the response body while debugging an error?&lt;/p&gt;

&lt;p&gt;The agent may not catch its own mistake.&lt;/p&gt;

&lt;p&gt;This is one reason I think it's useful to separate the &lt;strong&gt;coding agent&lt;/strong&gt; from the &lt;strong&gt;reviewer&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The coding agent is responsible for getting the task done. Another system can then look at the resulting change and ask whether it actually follows the standards.&lt;/p&gt;

&lt;p&gt;That gives you a workflow closer to:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Developer request
       ↓
Coding agent
       ↓
Code + tests
       ↓
Independent review
       ↓
Fix findings
       ↓
Pull request
       ↓
Human review / CI
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;rather than expecting the same generation step to be both the writer and the final judge.&lt;/p&gt;


&lt;h2&gt;
  
  
  This is where &lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt;'s Agentic Toolbox becomes interesting
&lt;/h2&gt;

&lt;p&gt;Qodo launched its &lt;a href="https://docs.qodo.ai/agentic-toolbox/agentic-toolbox-overview" rel="noopener noreferrer"&gt;Agentic Toolbox&lt;/a&gt; recently, and one of the pieces that caught my attention is the way it connects organizational rules with coding agents.&lt;/p&gt;

&lt;p&gt;Instead of keeping your standards only inside the configuration of a particular coding tool, Qodo can provide applicable organizational rules to the agent through its &lt;code&gt;get-qodo-rules&lt;/code&gt; skill. It also has &lt;code&gt;qodo-manage-standards&lt;/code&gt; for managing rules, while &lt;code&gt;qodo-review&lt;/code&gt; can independently review local committed or uncommitted changes before a pull request is opened.&lt;/p&gt;

&lt;p&gt;That gives you two different parts of the workflow.&lt;/p&gt;

&lt;p&gt;First, the agent gets the standards before it starts implementing the change.&lt;/p&gt;

&lt;p&gt;Then, after the code has been written, Qodo can review the actual changes against those standards.&lt;/p&gt;

&lt;p&gt;For example, the workflow could look something like this:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Developer:
"Add retry handling to the payment service."

        ↓

Agent gets applicable organization rules

        ↓

Agent checks the existing codebase
and implements the change

        ↓

Tests run

        ↓

Qodo reviews the local changes

        ↓

Findings are returned to the coding session

        ↓

Agent fixes safe issues

        ↓

Developer reviews the remaining decisions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;That is a different approach from simply adding more instructions to &lt;code&gt;CLAUDE.md&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The goal isn't to replace &lt;code&gt;CLAUDE.md&lt;/code&gt; or Cursor Rules. Those files are still useful. The idea is to have organizational standards that can be shared with the agent and then checked independently against the code that was produced.&lt;/p&gt;

&lt;p&gt;Qodo's current rules system is designed around that broader lifecycle, including managing rules, their scope, severity, and activation rather than treating them as plain text sitting in a repository.&lt;/p&gt;


&lt;h2&gt;
  
  
  But this still doesn't mean every rule becomes a hard gate
&lt;/h2&gt;

&lt;p&gt;This is an important distinction.&lt;/p&gt;

&lt;p&gt;If your organization has a rule saying:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;All production database migrations require approval
from the database team.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;an AI review tool can identify a migration and flag the requirement.&lt;/p&gt;

&lt;p&gt;But that doesn't necessarily mean the AI tool itself should be the final authority that blocks the merge.&lt;/p&gt;

&lt;p&gt;For some requirements, you want CI or repository permissions to be the final gate.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;No secrets in source code
        ↓
Secret scanner
        ↓
CI failure
        ↓
Merge blocked
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;For other requirements, automated review is more appropriate:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Avoid unnecessary database calls
        ↓
AI code review
        ↓
Finding + explanation
        ↓
Developer decides how to fix it
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;And some things are still better handled by a human:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Should this architectural change
be made at all?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;An AI agent can provide useful context, but that doesn't mean it should make the organizational decision.&lt;/p&gt;

&lt;p&gt;So when I say "enforce coding standards," I would be careful about what that means. For me, a good engineering setup combines agent instructions, automated checks, AI review, CI gates, and human review rather than expecting one Markdown file or one AI tool to handle everything.&lt;/p&gt;


&lt;h2&gt;
  
  
  How I would test this in a real team
&lt;/h2&gt;

&lt;p&gt;If you're already using Claude Code or Cursor, you don't need to immediately replace anything.&lt;/p&gt;

&lt;p&gt;I'd start with a small experiment.&lt;/p&gt;

&lt;p&gt;Pick five rules that actually matter to your team. Don't choose 50 rules just because you can. Pick things where violations have caused real problems before.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Every external HTTP request needs a timeout.
2. Payment mutations must be idempotent.
3. Never log authentication tokens.
4. New service methods require unit tests.
5. Do not introduce a new dependency without approval.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Put those rules into your existing agent configuration.&lt;/p&gt;

&lt;p&gt;Then give the agent a few tasks where those rules matter.&lt;/p&gt;

&lt;p&gt;Don't just check whether the generated code looks good. Intentionally create scenarios where it could violate one of the rules.&lt;/p&gt;

&lt;p&gt;Then ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Did the agent see the rule?&lt;/li&gt;
&lt;li&gt;Did it understand the rule correctly?&lt;/li&gt;
&lt;li&gt;Did it actually follow the rule?&lt;/li&gt;
&lt;li&gt;Could another developer use a different coding agent and get the same standards?&lt;/li&gt;
&lt;li&gt;Can you detect a violation after the code is generated?&lt;/li&gt;
&lt;li&gt;Can you tell which rule was violated and why?&lt;/li&gt;
&lt;li&gt;Can CI or another policy check block serious violations?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those answers tell you much more about your organization's AI governance than simply having a &lt;code&gt;CLAUDE.md&lt;/code&gt; or &lt;code&gt;.cursor/rules&lt;/code&gt; directory.&lt;/p&gt;


&lt;h2&gt;
  
  
  The real goal is not more rules
&lt;/h2&gt;

&lt;p&gt;I think teams can easily fall into the trap of creating huge rule files.&lt;/p&gt;

&lt;p&gt;Every time an AI agent makes a mistake, someone adds another sentence to &lt;code&gt;CLAUDE.md&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;After a few months, you end up with hundreds of lines explaining every mistake an agent has ever made.&lt;/p&gt;

&lt;p&gt;That doesn't necessarily make the system better.&lt;/p&gt;

&lt;p&gt;The better question is whether the standards are clear, relevant, discoverable, and actually checked when they matter.&lt;/p&gt;

&lt;p&gt;Your coding agent should know the rules before it writes code.&lt;/p&gt;

&lt;p&gt;Your review system should be able to check the resulting change.&lt;/p&gt;

&lt;p&gt;And your CI or repository controls should handle the things that genuinely need a hard gate.&lt;/p&gt;

&lt;p&gt;That combination is much more useful than simply giving an AI agent a very long instruction file and hoping it remembers everything.&lt;/p&gt;


&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;So, can Claude Code and Cursor enforce your organization's coding standards?&lt;/p&gt;

&lt;p&gt;They can &lt;strong&gt;apply and follow rules very effectively as part of the coding workflow&lt;/strong&gt;, but their rule files should not be confused with a complete organizational enforcement system.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; and Cursor Rules are useful because they put your team's knowledge directly in front of the coding agent. The next step is making those standards consistent across repositories and coding tools, and then independently checking the code that comes out of the process.&lt;/p&gt;

&lt;p&gt;That's the part I find more interesting about Qodo's current Agentic Toolbox. It connects organizational standards with the coding agent before implementation and adds an independent review step after the code is written.&lt;/p&gt;

&lt;p&gt;For teams adopting AI coding agents seriously, I think that's the direction worth looking at: &lt;strong&gt;don't just teach the agent your rules. Build a workflow where those rules can also be checked.&lt;/strong&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  👨‍💻 TL;DR
&lt;/h3&gt;

&lt;p&gt;Claude Code and Cursor both give you good ways to provide coding standards to AI agents through files such as &lt;code&gt;CLAUDE.md&lt;/code&gt; and &lt;code&gt;.cursor/rules&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That's useful, but an instruction is not automatically a hard enforcement mechanism.&lt;/p&gt;

&lt;p&gt;A more complete setup looks like this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rules → Agent → Code → Independent Review → CI/Policy Gates → Human Review&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt;'s &lt;a href="https://docs.qodo.ai/agentic-toolbox/agentic-toolbox-overview" rel="noopener noreferrer"&gt;Agentic Toolbox&lt;/a&gt; fits into that workflow by bringing organizational rules into the coding session and allowing Qodo to independently review local changes before the pull request.&lt;/p&gt;


&lt;h2&gt;
  
  
  Thank You!!🙏
&lt;/h2&gt;

&lt;p&gt;Thank you for reading this far. If you find this article useful, please like and share this article. Someone could find it useful too.💖&lt;/p&gt;

&lt;p&gt;Connect with me on &lt;a href="https://x.com/kiran__a__n" rel="noopener noreferrer"&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://github.com/Kiran1689" rel="noopener noreferrer"&gt;&lt;strong&gt;GitHub&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/kiran-a-n" rel="noopener noreferrer"&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag__user ltag__user__id__1204850"&gt;
    &lt;a href="/dev_kiran" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=150,height=150,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1204850%2F1873cf6a-e8a7-4d43-9af8-296ac0506b3a.jpg" alt="dev_kiran image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/dev_kiran"&gt;Kiran Naragund&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/dev_kiran"&gt;Tech Writer and Moderator @DEV ✦ Senior Software Engineer ✦ Open-Source Contributor ✦ Email for Collabs :)&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;



</description>
      <category>ai</category>
      <category>devops</category>
      <category>productivity</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Shift Left Code Review: How Qodo Turns Your Coding Agent Into Its Own First Reviewer</title>
      <dc:creator>Kiran Naragund</dc:creator>
      <pubDate>Mon, 14 Sep 2026 05:32:40 +0000</pubDate>
      <link>https://dev.to/dev_kiran/shift-left-code-review-how-qodo-turns-your-coding-agent-into-its-own-first-reviewer-58fc</link>
      <guid>https://dev.to/dev_kiran/shift-left-code-review-how-qodo-turns-your-coding-agent-into-its-own-first-reviewer-58fc</guid>
      <description>&lt;p&gt;Hello Devs 👋&lt;/p&gt;

&lt;p&gt;I have been thinking about something that has changed quite a bit with AI coding agents.&lt;/p&gt;

&lt;p&gt;A developer can now give a task to Claude Code, Codex, Cursor, or another coding agent and get a working implementation back without writing every line manually.&lt;/p&gt;

&lt;p&gt;That's great for productivity.&lt;/p&gt;

&lt;p&gt;But there is a small problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who reviews the code before the PR?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The usual workflow still looks something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Developer gives task to AI agent
        ↓
Agent writes code
        ↓
Agent runs tests
        ↓
Pull request is created
        ↓
AI reviews PR
        ↓
Human reviews PR
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The review is still happening after most of the work is already done.&lt;/p&gt;

&lt;p&gt;This is where the idea of &lt;strong&gt;shift-left code review&lt;/strong&gt; becomes interesting.&lt;/p&gt;

&lt;p&gt;Instead of waiting for the PR, what if the coding agent could get its changes reviewed while it is still working?&lt;/p&gt;

&lt;p&gt;That's the idea behind &lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt;'s new &lt;a href="https://docs.qodo.ai/agentic-toolbox/agentic-toolbox-overview" rel="noopener noreferrer"&gt;&lt;strong&gt;Agentic Toolbox&lt;/strong&gt;&lt;/a&gt;, launched on September 9.&lt;/p&gt;

&lt;p&gt;The toolbox lets coding agents use Qodo for codebase context, team rules, independent code review, and finding resolution directly from the coding session. Qodo's review can run against committed and uncommitted local changes before a PR exists.&lt;/p&gt;

&lt;p&gt;And I think there is an important detail here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Qodo isn't trying to be the agent that writes the code. It can act as the reviewer for the agent that does.&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  What Does “Shift Left” Mean Here?
&lt;/h2&gt;

&lt;p&gt;We've been hearing "shift left" in software development for years.&lt;/p&gt;

&lt;p&gt;The basic idea is simple.&lt;/p&gt;

&lt;p&gt;Find problems earlier.&lt;/p&gt;

&lt;p&gt;Instead of finding a bug in production, find it during testing.&lt;/p&gt;

&lt;p&gt;Instead of finding a security issue during release, find it during development.&lt;/p&gt;

&lt;p&gt;Instead of finding a problem during a code review, find it before the PR is opened.&lt;/p&gt;

&lt;p&gt;With AI coding agents, that last part becomes more important.&lt;/p&gt;

&lt;p&gt;An agent can make a lot of changes very quickly.&lt;/p&gt;

&lt;p&gt;If we let it write code for 20 minutes and only then send everything to a reviewer, we are still using an old review workflow with a new type of developer.&lt;/p&gt;

&lt;p&gt;That's why I think the more interesting question is not:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Can AI review AI-generated code?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Can we put an independent review step directly into the coding agent's workflow?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  The Problem With Letting the Same Agent Review Its Own Code
&lt;/h2&gt;

&lt;p&gt;There is an obvious question here.&lt;/p&gt;

&lt;p&gt;If Claude Code writes the code, can't we simply ask Claude Code to review it?&lt;/p&gt;

&lt;p&gt;Yes, we can.&lt;/p&gt;

&lt;p&gt;And sometimes that's useful.&lt;/p&gt;

&lt;p&gt;But there is a difference between asking the same agent:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Now review what you just wrote."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and sending the change to a separate review system.&lt;/p&gt;

&lt;p&gt;The agent that wrote the code already has a certain approach in mind.&lt;/p&gt;

&lt;p&gt;It may think:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I implemented the requirement, the tests pass, so we're good."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;An independent reviewer starts from a different position.&lt;/p&gt;

&lt;p&gt;It can look at the change and ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What could break?&lt;/li&gt;
&lt;li&gt;What requirement was missed?&lt;/li&gt;
&lt;li&gt;Is there a security problem?&lt;/li&gt;
&lt;li&gt;Does this follow the team's rules?&lt;/li&gt;
&lt;li&gt;Are there edge cases?&lt;/li&gt;
&lt;li&gt;Did this change affect something outside the files being edited?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Qodo describes this as an &lt;strong&gt;independent review&lt;/strong&gt;, where the coding agent builds while Qodo acts as a separate quality counterpart.&lt;/p&gt;

&lt;p&gt;That's the part I find useful.&lt;/p&gt;

&lt;p&gt;The goal isn't to make the coding agent smarter at everything.&lt;/p&gt;

&lt;p&gt;It's to give it a second pair of eyes before the work gets to the PR.&lt;/p&gt;


&lt;h2&gt;
  
  
  What the New Qodo Workflow Looks Like
&lt;/h2&gt;

&lt;p&gt;With the &lt;em&gt;Agentic Toolbox&lt;/em&gt;, Qodo provides a set of skills that coding agents can call when they need them.&lt;/p&gt;

&lt;p&gt;Some of the important ones are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;qodo-codebase-wisdom&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;get-qodo-rules&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;qodo-review&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;qodo-review-resolver&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These cover different parts of the workflow, from understanding the codebase to loading rules and reviewing local changes.&lt;/p&gt;

&lt;p&gt;So a coding task can become something like this:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Understand the codebase
        ↓
Check the relevant rules
        ↓
Implement the change
        ↓
Run tests
        ↓
Qodo reviews the local changes
        ↓
Agent gets findings
        ↓
Agent fixes safe issues
        ↓
Review again
        ↓
Open PR
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This is a much tighter feedback loop.&lt;/p&gt;

&lt;p&gt;And importantly, the PR doesn't have to be the starting point for code review anymore.&lt;/p&gt;


&lt;h2&gt;
  
  
  Let's Take a Simple Example
&lt;/h2&gt;

&lt;p&gt;Imagine I ask a coding agent:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Update the payment service so temporary failures retry up to three times."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A normal coding agent might search for the retry logic, change the implementation, run the tests, and tell me it's ready.&lt;/p&gt;

&lt;p&gt;But there may be more to the change.&lt;/p&gt;

&lt;p&gt;Maybe another service uses the same interface.&lt;/p&gt;

&lt;p&gt;Maybe the payment service has a rule that every outbound request needs a timeout.&lt;/p&gt;

&lt;p&gt;Maybe retries need an idempotency key.&lt;/p&gt;

&lt;p&gt;Maybe the team already decided in an older PR that certain payment failures must never be retried.&lt;/p&gt;

&lt;p&gt;This is the kind of context that isn't always obvious from the task description.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.qodo.ai/agentic-toolbox/agentic-toolbox-overview" rel="noopener noreferrer"&gt;Qodo's Agentic Toolbox&lt;/a&gt; can let the coding agent investigate related repositories, PR history, specifications, and live Git state before it changes the code.&lt;/p&gt;

&lt;p&gt;So the agent can first ask questions such as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Which services depend on this interface?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;or:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Have we changed this retry behavior before?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That gives the agent a better starting point.&lt;/p&gt;


&lt;h2&gt;
  
  
  Rules Should Come Before the Code
&lt;/h2&gt;

&lt;p&gt;There is another part of this that I think is easy to overlook.&lt;/p&gt;

&lt;p&gt;Most companies already have coding rules.&lt;/p&gt;

&lt;p&gt;They might be documented in:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AGENTS.md
CLAUDE.md
README.md
CONTRIBUTING.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;or somewhere in an internal engineering wiki.&lt;/p&gt;

&lt;p&gt;The problem is that developers don't always remember all of them, and AI agents definitely don't automatically know your organization's internal rules.&lt;/p&gt;

&lt;p&gt;With &lt;a href="https://docs.qodo.ai/agentic-toolbox/agentic-toolbox-overview" rel="noopener noreferrer"&gt;Qodo's Agentic Toolbox&lt;/a&gt;, the agent can retrieve relevant global, workspace, and repository rules before implementation begins.&lt;/p&gt;

&lt;p&gt;For example, imagine your team has rules like:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Payment APIs must use idempotency keys.

External requests must have explicit timeouts.

Sensitive customer data must never be logged.

Changes to shared interfaces require compatibility checks.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Instead of discovering these rules during PR review, the agent can get them before writing the first version of the code.&lt;/p&gt;

&lt;p&gt;That's a much better place to enforce them.&lt;/p&gt;


&lt;h2&gt;
  
  
  Then Comes the Interesting Part: Review the Local Changes
&lt;/h2&gt;

&lt;p&gt;Once the agent has finished the implementation, it doesn't necessarily need to open the PR immediately.&lt;/p&gt;

&lt;p&gt;It can ask Qodo to review the changes that currently exist in the local workspace.&lt;/p&gt;

&lt;p&gt;That can include committed and uncommitted changes. Qodo's review engine returns structured findings back into the coding session.&lt;/p&gt;

&lt;p&gt;For example, the agent might get:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Finding 1
The retry loop can continue indefinitely
Severity: High

Finding 2
The payment request does not include an idempotency key
Severity: High

Finding 3
This error is being written to logs with customer data
Severity: Medium
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Now the agent has something concrete to work with.&lt;/p&gt;

&lt;p&gt;Instead of me copying comments from a PR back into the coding session, the findings are already available to the agent.&lt;/p&gt;

&lt;p&gt;I can tell it:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Fix anything you can resolve safely. Leave anything that needs a product or architecture decision for me."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The agent can make the safe fixes and leave the decisions that need a human.&lt;/p&gt;

&lt;p&gt;That's the part of this workflow that I like.&lt;/p&gt;

&lt;p&gt;It doesn't try to remove the developer from the process.&lt;/p&gt;

&lt;p&gt;It tries to reduce the amount of basic cleanup the developer has to do.&lt;/p&gt;


&lt;h2&gt;
  
  
  Why Independent Review Matters
&lt;/h2&gt;

&lt;p&gt;One thing I wouldn't lose in all of this is the word &lt;strong&gt;independent&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If the same coding agent writes the code and decides whether the code is good, we haven't really created a second review step.&lt;/p&gt;

&lt;p&gt;We've just added another prompt.&lt;/p&gt;

&lt;p&gt;An independent reviewer gives us a different check.&lt;/p&gt;

&lt;p&gt;Think about a human developer.&lt;/p&gt;

&lt;p&gt;If I write a feature, I might look at my own code and think:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"This makes sense."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then another developer looks at it and asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Why are we doing this here?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;or:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What happens when this value is null?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;or:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Doesn't another service depend on this?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's why code review exists in the first place.&lt;/p&gt;

&lt;p&gt;The goal isn't only to catch syntax errors.&lt;/p&gt;

&lt;p&gt;It's to catch things the original author didn't think about.&lt;/p&gt;

&lt;p&gt;The same idea makes sense with AI-generated code.&lt;/p&gt;


&lt;h2&gt;
  
  
  What Happens When the Review Finds Something?
&lt;/h2&gt;

&lt;p&gt;This is where the workflow becomes different from a traditional PR review.&lt;/p&gt;

&lt;p&gt;Normally:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AI reviewer
     ↓
PR comment
     ↓
Developer reads comment
     ↓
Developer goes back to IDE
     ↓
Developer changes code
     ↓
Push again
     ↓
Reviewer checks again
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;With the &lt;a href="https://docs.qodo.ai/agentic-toolbox/agentic-toolbox-overview" rel="noopener noreferrer"&gt;Agentic Toolbox&lt;/a&gt;, the coding agent can receive the Qodo findings directly in its session.&lt;/p&gt;

&lt;p&gt;So the loop can be:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent writes code
     ↓
Qodo reviews local changes
     ↓
Finding comes back
     ↓
Agent investigates
     ↓
Agent fixes it
     ↓
Qodo reviews again
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Qodo calls this a way to bring review earlier into the coding workflow. The same review engine can run before the PR and then continue into the normal PR review process.&lt;/p&gt;

&lt;p&gt;That means the review isn't a separate activity bolted onto the end.&lt;/p&gt;

&lt;p&gt;It becomes part of the development loop.&lt;/p&gt;


&lt;h2&gt;
  
  
  This Doesn't Mean Humans Stop Reviewing PRs
&lt;/h2&gt;

&lt;p&gt;I don't think shift-left review means:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Let the AI review everything and don't bother looking at the PR."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's not the point.&lt;/p&gt;

&lt;p&gt;There are still decisions that an AI agent shouldn't make on its own.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Should we change the architecture?&lt;/li&gt;
&lt;li&gt;Is this behavior acceptable for customers?&lt;/li&gt;
&lt;li&gt;Should this migration happen now?&lt;/li&gt;
&lt;li&gt;Is this security tradeoff okay?&lt;/li&gt;
&lt;li&gt;Does this design fit the product?&lt;/li&gt;
&lt;li&gt;Is this technical debt worth taking on?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those are different from:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"You forgot to add the required timeout."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;or:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"This retry loop has no upper limit."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The idea is to let the agent handle more of the obvious engineering feedback while humans focus on the parts that actually require judgment.&lt;/p&gt;

&lt;p&gt;Qodo describes this as moving toward human oversight rather than asking people to inspect every line of every AI-generated change.&lt;/p&gt;


&lt;h2&gt;
  
  
  What About Cursor and Claude Code?
&lt;/h2&gt;

&lt;p&gt;This workflow isn't really about replacing the coding agent.&lt;/p&gt;

&lt;p&gt;That's important.&lt;/p&gt;

&lt;p&gt;If you're already comfortable with Claude Code, Codex, Kiro, or another MCP-compatible coding agent, the idea is to let that agent call Qodo when it needs codebase context, rules, review, or issue resolution.&lt;/p&gt;

&lt;p&gt;For example, with Codex, Qodo announced a plugin on the same September 9 launch date that connects Codex to Qodo's codebase intelligence, organizational rules, and review capabilities. Codex can ask Qodo to review local changes and receive findings in the same session.&lt;/p&gt;

&lt;p&gt;So you don't have to think of this as:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Qodo vs Claude Code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;or:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Qodo vs Codex
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;It's closer to:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Claude Code / Codex / Kiro
             +
           Qodo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The coding agent does the implementation.&lt;/p&gt;

&lt;p&gt;Qodo provides the context, rules, and independent quality check.&lt;/p&gt;


&lt;h2&gt;
  
  
  Where This Gets Really Useful
&lt;/h2&gt;

&lt;p&gt;I think this becomes much more useful when the repository gets bigger.&lt;/p&gt;

&lt;p&gt;If I'm working on a small personal project, I can probably understand the whole thing myself.&lt;/p&gt;

&lt;p&gt;But in a large organization, an agent might be changing one service inside a system with dozens or hundreds of repositories.&lt;/p&gt;

&lt;p&gt;The changed code may have consumers somewhere else.&lt;/p&gt;

&lt;p&gt;There may be an old PR explaining why something was implemented in a strange way.&lt;/p&gt;

&lt;p&gt;There may be an organization-wide rule that doesn't exist in the repository.&lt;/p&gt;

&lt;p&gt;This is where Qodo's Context Engine becomes part of the workflow.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://docs.qodo.ai/agentic-toolbox/agentic-toolbox-overview" rel="noopener noreferrer"&gt;Agentic Toolbox&lt;/a&gt; can bring repository relationships, PR history, specifications, and live Git state into the coding session.&lt;/p&gt;

&lt;p&gt;So before making a change, the agent can ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What else could this break?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's a much better question than simply:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Does this file compile?"&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  The Real Shift Is Bigger Than Code Review
&lt;/h2&gt;

&lt;p&gt;When people talk about AI coding agents, most conversations focus on how quickly they can generate code.&lt;/p&gt;

&lt;p&gt;I'm more interested in what happens after that.&lt;/p&gt;

&lt;p&gt;If agents are going to write more of our code, then the engineering process around those agents needs to change too.&lt;/p&gt;

&lt;p&gt;We probably don't want this:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AI generates a lot of code
        ↓
Human reads everything
        ↓
Human finds obvious problems
        ↓
AI fixes them
        ↓
Human reviews again
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;That doesn't scale very well.&lt;/p&gt;

&lt;p&gt;A better workflow could be:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent understands the system
        ↓
Agent loads the relevant rules
        ↓
Agent writes the code
        ↓
Independent reviewer checks it
        ↓
Agent fixes safe issues
        ↓
Human reviews important decisions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;That's what I understand as the real idea behind &lt;strong&gt;shift-left code review for coding agents&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It's not simply moving the review button somewhere else.&lt;/p&gt;

&lt;p&gt;It's making quality part of the coding process instead of something that starts after the coding process is finished.&lt;/p&gt;


&lt;h2&gt;
  
  
  How I'd Try This in a Real Project
&lt;/h2&gt;

&lt;p&gt;I wouldn't turn this on for every repository on day one.&lt;/p&gt;

&lt;p&gt;I'd start with one project where developers are already using coding agents.&lt;/p&gt;

&lt;p&gt;Give the agent a real task.&lt;/p&gt;

&lt;p&gt;Something that touches enough of the codebase to make context useful.&lt;/p&gt;

&lt;p&gt;Then try a workflow like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Understand the affected services and dependencies first."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Check the rules that apply to this repository."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Implement the change."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And before opening the PR:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Review my local changes and fix anything you can safely resolve."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The important thing is to see what happens in practice.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does the agent find useful issues?&lt;/li&gt;
&lt;li&gt;Does it understand the repository?&lt;/li&gt;
&lt;li&gt;Does it follow the team's rules?&lt;/li&gt;
&lt;li&gt;Does it avoid wasting time fixing low-value comments?&lt;/li&gt;
&lt;li&gt;Does it know when to stop and ask the developer?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those answers will tell you much more than a feature list.&lt;/p&gt;


&lt;h2&gt;
  
  
  A Small Change in Where We Think About Review
&lt;/h2&gt;

&lt;p&gt;For a long time, the pull request has been the natural place where code review happens.&lt;/p&gt;

&lt;p&gt;That's not going away.&lt;/p&gt;

&lt;p&gt;But with coding agents writing more code, I don't think the PR should be the &lt;strong&gt;first&lt;/strong&gt; quality check anymore.&lt;/p&gt;

&lt;p&gt;The agent has already made the change by that point.&lt;/p&gt;

&lt;p&gt;If we can check the local changes first, fix the obvious problems, and then send a cleaner PR to the team, everyone benefits.&lt;/p&gt;

&lt;p&gt;The developer gets faster feedback.&lt;/p&gt;

&lt;p&gt;The reviewer gets a cleaner change.&lt;/p&gt;

&lt;p&gt;The team gets fewer repeated comments.&lt;/p&gt;

&lt;p&gt;And the coding agent gets a feedback loop instead of just generating code and hoping it passes review.&lt;/p&gt;

&lt;p&gt;That's the part of &lt;a href="https://docs.qodo.ai/agentic-toolbox/agentic-toolbox-overview" rel="noopener noreferrer"&gt;Qodo's Agentic Toolbox&lt;/a&gt; that I find most interesting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The coding agent writes the code. Qodo gets a chance to review it before the rest of the team ever sees the PR.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is a pretty practical version of shift-left code review.&lt;/p&gt;


&lt;h2&gt;
  
  
  📚 Want to Read More?
&lt;/h2&gt;

&lt;p&gt;If you're experimenting with coding agents, &lt;a href="https://docs.qodo.ai/agentic-toolbox/agentic-toolbox-overview" rel="noopener noreferrer"&gt;Qodo's Agentic Toolbox &lt;/a&gt;documentation is a good place to start. The current workflow covers codebase questions, team rules, local review, and resolving findings from an open PR.&lt;/p&gt;

&lt;p&gt;Qodo has also published its Codex integration details, which is useful if you're already using Codex and want to see how the review step fits into the same coding session.&lt;/p&gt;
&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;AI coding agents have made writing code much faster.&lt;/p&gt;

&lt;p&gt;Now I think we're starting to see the next problem: &lt;strong&gt;how do we make sure the code is good before it gets pushed into the normal review process?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's where shifting code review left makes sense.&lt;/p&gt;

&lt;p&gt;Instead of waiting for the PR, give the agent access to the right context, the team's rules, and an independent reviewer.&lt;/p&gt;

&lt;p&gt;Let it catch and fix the things it can.&lt;/p&gt;

&lt;p&gt;Then let humans spend their time on the things that actually need human judgment.&lt;/p&gt;

&lt;p&gt;The PR still matters.&lt;/p&gt;

&lt;p&gt;It's just no longer the first place where quality should happen.&lt;/p&gt;


&lt;h2&gt;
  
  
  Thank You!!🙏
&lt;/h2&gt;

&lt;p&gt;Thank you for reading this far. If you find this article useful, please like and share this article. Someone could find it useful too.💖&lt;/p&gt;

&lt;p&gt;Connect with me on &lt;a href="https://x.com/kiran__a__n" rel="noopener noreferrer"&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://github.com/Kiran1689" rel="noopener noreferrer"&gt;&lt;strong&gt;GitHub&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/kiran-a-n" rel="noopener noreferrer"&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag__user ltag__user__id__1204850"&gt;
    &lt;a href="/dev_kiran" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=150,height=150,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1204850%2F1873cf6a-e8a7-4d43-9af8-296ac0506b3a.jpg" alt="dev_kiran image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/dev_kiran"&gt;Kiran Naragund&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/dev_kiran"&gt;Tech Writer and Moderator @DEV ✦ Senior Software Engineer ✦ Open-Source Contributor ✦ Email for Collabs :)&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;



</description>
      <category>ai</category>
      <category>productivity</category>
      <category>devops</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Self-Hosted and On-Prem AI Code Review: What Actually Works for Enterprise Teams?</title>
      <dc:creator>Kiran Naragund</dc:creator>
      <pubDate>Sun, 13 Sep 2026 11:24:49 +0000</pubDate>
      <link>https://dev.to/dev_kiran/self-hosted-and-on-prem-ai-code-review-what-actually-works-for-enterprise-teams-12mb</link>
      <guid>https://dev.to/dev_kiran/self-hosted-and-on-prem-ai-code-review-what-actually-works-for-enterprise-teams-12mb</guid>
      <description>&lt;p&gt;Hello Devs 👋&lt;/p&gt;

&lt;p&gt;AI code review is getting pretty normal these days. You open a PR, an AI reviewer looks at the changes, and a few seconds later you have comments about bugs, security issues, missing tests, or things that could break.&lt;/p&gt;

&lt;p&gt;But this gets more complicated when you work in an enterprise environment.&lt;/p&gt;

&lt;p&gt;Your code may be sitting in a private GitHub Enterprise, GitLab, or Bitbucket setup. Your security team may not allow source code to leave your network. You may have strict data residency rules, internal model requirements, or even an air-gapped environment.&lt;/p&gt;

&lt;p&gt;So the question isn't just:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Which AI code review tool is the best?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It becomes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Which one can actually work inside our environment without making the setup painful?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I started looking at this from that angle, especially with &lt;strong&gt;&lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt;, &lt;a href="https://www.greptile.com/" rel="noopener noreferrer"&gt;Greptile&lt;/a&gt;, and &lt;a href="https://www.coderabbit.ai/" rel="noopener noreferrer"&gt;CodeRabbit&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;There is also a good reason to look at this now.&lt;/p&gt;

&lt;p&gt;On &lt;a href="https://www.qodo.ai/blog/introducing-qodos-agentic-toolbox/" rel="noopener noreferrer"&gt;&lt;strong&gt;September 9, Qodo launched its Agentic Toolbox&lt;/strong&gt;&lt;/a&gt;, which brings codebase context, organizational rules, and Qodo's review capabilities directly into coding agents such as Claude Code, Codex, Kiro, and other agent-based tools.&lt;/p&gt;

&lt;p&gt;That caught my attention because AI code review is slowly moving beyond the PR.&lt;/p&gt;

&lt;p&gt;The coding agent is now writing a lot of the code. So why should we wait until the PR is created before checking it?&lt;/p&gt;

&lt;p&gt;Let's get into it.&lt;/p&gt;




&lt;h2&gt;
  
  
  First, What Does Self-Hosted Actually Mean?
&lt;/h2&gt;

&lt;p&gt;This sounds like a simple question, but it isn't.&lt;/p&gt;

&lt;p&gt;When a vendor says "self-hosted," I don't think we should immediately assume that everything runs inside our network.&lt;/p&gt;

&lt;p&gt;There are a few different things to check.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where does the review service run?&lt;/li&gt;
&lt;li&gt;Where is the code indexed?&lt;/li&gt;
&lt;li&gt;Where are prompts and findings stored?&lt;/li&gt;
&lt;li&gt;Where does the AI model run?&lt;/li&gt;
&lt;li&gt;Does the system need access to an external model API?&lt;/li&gt;
&lt;li&gt;Does it need outbound internet access?&lt;/li&gt;
&lt;li&gt;Can it work in an air-gapped environment?&lt;/li&gt;
&lt;li&gt;Who manages upgrades?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These questions matter a lot more than the "&lt;em&gt;self-hosted&lt;/em&gt;" label on the website.&lt;/p&gt;

&lt;p&gt;For example, &lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt;'s current on-prem architecture runs its services inside the customer's infrastructure using Kubernetes. It also has a Context Engine that can provide deeper codebase information.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.greptile.com/" rel="noopener noreferrer"&gt;Greptile&lt;/a&gt; has a self-hosted setup based around Docker and also documents support for air-gapped environments and custom LLM configurations.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.coderabbit.ai/" rel="noopener noreferrer"&gt;CodeRabbit&lt;/a&gt; also offers self-hosting for enterprise customers.&lt;/p&gt;

&lt;p&gt;So yes, all three can fit into the enterprise self-hosted conversation.&lt;/p&gt;

&lt;p&gt;But the interesting part starts after that.&lt;/p&gt;




&lt;h2&gt;
  
  
  Qodo vs Greptile vs CodeRabbit
&lt;/h2&gt;

&lt;p&gt;I don't want to turn this into one of those comparison tables where every tool gets a green checkmark.&lt;/p&gt;

&lt;p&gt;In my experience, enterprise teams usually have a few very different problems.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Team might mainly care about keeping source code inside its network.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Another might care more about understanding dependencies across hundreds of repositories.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Another might already have a strong PR workflow and simply want an AI reviewer that can fit into it.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So let's look at these tools from that point of view.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Qodo's enterprise story goes beyond just running an AI reviewer inside your infrastructure.&lt;/p&gt;

&lt;p&gt;Its on-prem deployment supports running Qodo components inside the customer's environment, with GitHub, GitLab, and Bitbucket integrations. Qodo also supports different model setups, including external model providers and self-hosted models.&lt;/p&gt;

&lt;p&gt;The part I find more interesting is the &lt;strong&gt;context&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In a large company, a PR is rarely just about the files changed in that PR.&lt;/p&gt;

&lt;p&gt;Let's say I change a shared API. The actual flow might look something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;Service&lt;/span&gt; &lt;span class="nt"&gt;A&lt;/span&gt;
   &lt;span class="err"&gt;↓&lt;/span&gt;
&lt;span class="nt"&gt;Shared&lt;/span&gt; &lt;span class="nt"&gt;API&lt;/span&gt;
   &lt;span class="err"&gt;↓&lt;/span&gt;
&lt;span class="nt"&gt;Service&lt;/span&gt; &lt;span class="nt"&gt;B&lt;/span&gt;
   &lt;span class="err"&gt;↓&lt;/span&gt;
&lt;span class="nt"&gt;Service&lt;/span&gt; &lt;span class="nt"&gt;C&lt;/span&gt;
   &lt;span class="err"&gt;↓&lt;/span&gt;
&lt;span class="nt"&gt;Database&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;My PR might only change Service A. But Service B and Service C might depend on the same API. This is where repository context becomes useful.&lt;/p&gt;

&lt;p&gt;Qodo's Context Engine is designed to work with things like repository relationships, dependencies, PR history, specs, and live Git state. The goal is to give the reviewer more information than just the current diff.&lt;/p&gt;

&lt;p&gt;Another thing worth mentioning is rules.&lt;/p&gt;

&lt;p&gt;Most teams already have rules for how code should be written. Some are in documentation. Some are in repository files. Some are just things senior developers know after working on the project for a few years.&lt;/p&gt;

&lt;p&gt;Keeping those rules in one place and making them available to both developers and AI tools is becoming more important.&lt;/p&gt;

&lt;p&gt;And this is where the new &lt;a href="https://docs.qodo.ai/agentic-toolbox/agentic-toolbox-overview" rel="noopener noreferrer"&gt;&lt;strong&gt;Agentic Toolbox&lt;/strong&gt;&lt;/a&gt; launch makes Qodo more interesting.&lt;/p&gt;

&lt;p&gt;With the toolbox, coding agents can ask Qodo for codebase information, retrieve team rules, review their own local changes, and work through findings before creating a PR.&lt;/p&gt;

&lt;p&gt;So instead of:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent writes code
      ↓
Agent opens PR
      ↓
AI reviews PR
      ↓
Developer fixes issues
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;You can get closer to:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent understands codebase
      ↓
Agent gets team rules
      ↓
Agent writes code
      ↓
Qodo reviews the changes
      ↓
Agent fixes findings
      ↓
PR is opened
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;For teams using coding agents heavily, that is a pretty useful shift.&lt;/p&gt;


&lt;h2&gt;
  
  
  &lt;a href="https://www.greptile.com/" rel="noopener noreferrer"&gt;Greptile&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Greptile is another interesting option if your main requirement is an AI reviewer that understands the wider codebase and can run in your own environment.&lt;/p&gt;

&lt;p&gt;Greptile offers self-hosted deployment and documents support for air-gapped environments. It also supports custom LLM configurations, which can be useful when your company already has an approved model setup.&lt;/p&gt;

&lt;p&gt;One thing Greptile focuses on is building a knowledge graph of the codebase.&lt;/p&gt;

&lt;p&gt;The idea is that the reviewer should understand relationships between files, functions, classes, and other parts of the repository instead of looking at every PR as a completely separate piece of code.&lt;/p&gt;

&lt;p&gt;It can also use existing instruction files such as &lt;code&gt;CLAUDE.md&lt;/code&gt;, &lt;code&gt;AGENTS.md&lt;/code&gt;, and Cursor rules.&lt;/p&gt;

&lt;p&gt;I like this approach because most development teams already have some of these files.&lt;/p&gt;

&lt;p&gt;If your repository has something like:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AGENTS.md
CLAUDE.md
.cursor/
docs/
.github/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;those files already contain useful information about how developers are expected to work.&lt;/p&gt;

&lt;p&gt;So during an evaluation, I would definitely test how well the tool uses that existing context.&lt;/p&gt;

&lt;p&gt;Greptile makes a lot of sense if your main use case is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"We want an AI code reviewer that understands our codebase and can run in our environment."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's a pretty reasonable requirement.&lt;/p&gt;


&lt;h2&gt;
  
  
  &lt;a href="https://www.coderabbit.ai/" rel="noopener noreferrer"&gt;CodeRabbit&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;CodeRabbit is probably the most familiar model for teams that think about AI code review mainly in terms of pull requests.&lt;/p&gt;

&lt;p&gt;The workflow is easy to understand:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Developer creates PR
       ↓
CodeRabbit reviews it
       ↓
Comments and findings appear
       ↓
Developer fixes them
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;For a lot of teams, that's exactly what they need.&lt;/p&gt;

&lt;p&gt;CodeRabbit also has an Enterprise offering with self-hosting, RBAC, SSO, audit logging, API access, and other enterprise features.&lt;/p&gt;

&lt;p&gt;The self-hosted option is useful for companies that don't want their source code and review data going through a shared SaaS environment.&lt;/p&gt;

&lt;p&gt;So if your team already has a PR-based development process and doesn't want to change much, CodeRabbit is definitely worth evaluating.&lt;/p&gt;

&lt;p&gt;But there is another question I would ask today:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What happens before the PR?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's becoming more important because coding agents are now creating a lot more code.&lt;/p&gt;

&lt;p&gt;If Claude Code, Cursor, Codex, or another agent writes the implementation, waiting until the PR is opened to start reviewing it may be a little late.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Part Most Enterprise Teams Miss
&lt;/h2&gt;

&lt;p&gt;When I hear "we need self-hosted AI code review," I would not start by asking which product has the best AI.&lt;/p&gt;

&lt;p&gt;I'd start with the infrastructure team.&lt;/p&gt;

&lt;p&gt;Ask them what actually needs to stay inside the network.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Source code
Repository index
PR data
Review findings
Logs
Embeddings
LLM requests
Model inference
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;These don't necessarily live in the same place.&lt;/p&gt;

&lt;p&gt;You might have the review application running inside your VPC while still sending model requests to an external provider.&lt;/p&gt;

&lt;p&gt;That may be perfectly fine for one company.&lt;/p&gt;

&lt;p&gt;It may be completely unacceptable for another.&lt;/p&gt;

&lt;p&gt;Qodo's documentation, for example, describes support for external providers such as OpenAI, Anthropic, Vertex AI, and AWS Bedrock, as well as self-hosted LLM options.&lt;/p&gt;

&lt;p&gt;Greptile also documents custom LLM configuration for self-hosted deployments.&lt;/p&gt;

&lt;p&gt;This is why I would always ask:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where does the code live?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;and separately:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where does the model see the code?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Those are two different questions.&lt;/p&gt;


&lt;h2&gt;
  
  
  Self-Hosted Also Means More Work
&lt;/h2&gt;

&lt;p&gt;There is another thing worth remembering.&lt;/p&gt;

&lt;p&gt;Self-hosting gives you more control, but it also gives you more responsibility.&lt;/p&gt;

&lt;p&gt;If you deploy one of these systems yourself, someone has to manage the infrastructure.&lt;/p&gt;

&lt;p&gt;That can include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kubernetes or containers&lt;/li&gt;
&lt;li&gt;Networking&lt;/li&gt;
&lt;li&gt;Secrets&lt;/li&gt;
&lt;li&gt;Certificates&lt;/li&gt;
&lt;li&gt;Storage&lt;/li&gt;
&lt;li&gt;Git authentication&lt;/li&gt;
&lt;li&gt;Model access&lt;/li&gt;
&lt;li&gt;Monitoring&lt;/li&gt;
&lt;li&gt;Upgrades&lt;/li&gt;
&lt;li&gt;Backups&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, Qodo's on-prem documentation has Kubernetes and infrastructure requirements that a platform team needs to plan for.&lt;/p&gt;

&lt;p&gt;That's not necessarily a problem.&lt;/p&gt;

&lt;p&gt;If you're a large organization, you may already have all of this infrastructure.&lt;/p&gt;

&lt;p&gt;But if your team is expecting:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Let's self-host this and forget about it."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's probably not how it will work.&lt;/p&gt;

&lt;p&gt;I would actually include the deployment effort as part of the POC.&lt;/p&gt;

&lt;p&gt;Don't just ask the vendor to show you a demo.&lt;/p&gt;

&lt;p&gt;Have your own platform team install it.&lt;/p&gt;

&lt;p&gt;That's when you'll find the real problems.&lt;/p&gt;


&lt;h2&gt;
  
  
  Test Codebase Context, Not Just Bug Finding
&lt;/h2&gt;

&lt;p&gt;Another mistake I've seen with AI code review evaluations is testing with very simple PRs.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Then someone changes it to:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;and asks three tools which one finds the problem.&lt;/p&gt;

&lt;p&gt;That's not a very useful enterprise test.&lt;/p&gt;

&lt;p&gt;Instead, give the tools something that looks like a real change in your organization.&lt;/p&gt;

&lt;p&gt;For example, change a shared API contract.&lt;/p&gt;

&lt;p&gt;Then check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does it find the callers?&lt;/li&gt;
&lt;li&gt;Does it understand the dependency?&lt;/li&gt;
&lt;li&gt;Does it notice compatibility issues?&lt;/li&gt;
&lt;li&gt;Does it use the repository's rules?&lt;/li&gt;
&lt;li&gt;Does it understand previous changes?&lt;/li&gt;
&lt;li&gt;Does it explain why the change could be risky?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This tells you much more about the tool.&lt;/p&gt;

&lt;p&gt;Qodo and Greptile both put significant emphasis on broader repository context, although they approach it differently.&lt;/p&gt;


&lt;h2&gt;
  
  
  What About Coding Agents?
&lt;/h2&gt;

&lt;p&gt;This is probably the biggest reason I wanted to write this article now.&lt;/p&gt;

&lt;p&gt;The way we write software is changing.&lt;/p&gt;

&lt;p&gt;A few years ago, the normal flow was:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Developer
   ↓
Writes code
   ↓
Opens PR
   ↓
AI reviews PR
   ↓
Human reviews PR
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Now we increasingly have:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Developer
   ↓
Gives task to coding agent
   ↓
Agent explores code
   ↓
Agent writes code
   ↓
Agent runs tests
   ↓
Agent opens PR
   ↓
AI reviews PR
   ↓
Human reviews PR
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The agent is doing more of the actual implementation.&lt;/p&gt;

&lt;p&gt;So I think code review also needs to move earlier.&lt;/p&gt;

&lt;p&gt;This is the idea behind &lt;a href="https://docs.qodo.ai/agentic-toolbox/agentic-toolbox-overview" rel="noopener noreferrer"&gt;Qodo's Agentic Toolbox&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The toolbox gives coding agents access to Qodo's codebase context, rules, review capabilities, and finding resolution. The agent can review committed or uncommitted changes before the PR exists and fix issues during the same session.&lt;/p&gt;

&lt;p&gt;For example, instead of telling your agent:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Implement this feature."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;you can have a workflow closer to:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Understand the service, check our rules, implement the change, review your local changes, and fix any issues you find."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's a very different workflow from simply adding an AI bot to the PR.&lt;/p&gt;

&lt;p&gt;And I think this is where enterprise code review is heading.&lt;/p&gt;


&lt;h2&gt;
  
  
  So Which One Would I Pick?
&lt;/h2&gt;

&lt;p&gt;Honestly, it depends on what problem you're trying to solve.&lt;/p&gt;

&lt;p&gt;If the main requirement is &lt;strong&gt;self-hosted AI code review&lt;/strong&gt;, all three are worth putting through a real POC.&lt;/p&gt;

&lt;p&gt;If you want a strong &lt;strong&gt;codebase-aware review experience with enterprise deployment&lt;/strong&gt;, Greptile is worth looking at.&lt;/p&gt;

&lt;p&gt;If you already have a strong &lt;strong&gt;PR-focused workflow&lt;/strong&gt; and want to add AI review without changing the process too much, CodeRabbit makes sense to evaluate.&lt;/p&gt;

&lt;p&gt;If you're looking at the bigger picture, where &lt;strong&gt;code review, repository context, engineering rules, governance, and coding agents&lt;/strong&gt; all need to work together, I'd put Qodo high on the list.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://docs.qodo.ai/agentic-toolbox/agentic-toolbox-overview" rel="noopener noreferrer"&gt;Agentic Toolbox &lt;/a&gt;makes that last part especially interesting because Qodo is not only thinking about the PR anymore. Its tools can be used directly by coding agents while they are working on the code.&lt;/p&gt;


&lt;h2&gt;
  
  
  What I'd Check During a POC
&lt;/h2&gt;

&lt;p&gt;If I were evaluating these tools for an enterprise team, I'd keep the test pretty simple.&lt;/p&gt;

&lt;p&gt;Take one real repository.&lt;/p&gt;

&lt;p&gt;Then take one change that touches a shared component.&lt;/p&gt;

&lt;p&gt;Run the same change through each tool.&lt;/p&gt;

&lt;p&gt;I'd look at five things:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Deployment&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;How hard was it to get running inside our environment?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Data flow&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What leaves the network, and when?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Context&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Does the reviewer understand the code around the PR?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Rules&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Can it follow our actual engineering standards?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Developer workflow&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Does it give useful feedback at the right time, or does it just add more comments to the PR?&lt;/p&gt;

&lt;p&gt;And if your developers are already using coding agents, I'd add one more test:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can the agent use the review system before opening the PR?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's becoming a pretty important question.&lt;/p&gt;


&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Self-hosted AI code review isn't just about putting an AI reviewer behind your firewall.&lt;/p&gt;

&lt;p&gt;There are a lot more pieces involved.&lt;/p&gt;

&lt;p&gt;You need to think about where your source code goes, where the repository index lives, which model is being used, how the system connects to your Git provider, who operates it, and how much context the reviewer actually has.&lt;/p&gt;

&lt;p&gt;Qodo, Greptile, and CodeRabbit are all interesting options, but they solve the problem from slightly different angles.&lt;/p&gt;

&lt;p&gt;For me, the bigger change is what is happening around coding agents.&lt;/p&gt;

&lt;p&gt;When an agent can write hundreds of lines of code in a session, waiting for a PR reviewer to find basic problems isn't always the best workflow.&lt;/p&gt;

&lt;p&gt;I'd rather have the agent understand the codebase, read the team's rules, write the code, review its own changes, fix obvious findings, and then open the PR.&lt;/p&gt;

&lt;p&gt;Humans still get the final say.&lt;/p&gt;

&lt;p&gt;But hopefully, by the time the PR reaches us, we're reviewing the things that actually need human judgment instead of spending our time finding problems an agent could have caught five minutes earlier.&lt;/p&gt;

&lt;p&gt;That's where I think enterprise AI code review is heading.&lt;/p&gt;

&lt;p&gt;And the September 9 launch of &lt;a href="https://docs.qodo.ai/agentic-toolbox/agentic-toolbox-overview" rel="noopener noreferrer"&gt;Qodo's Agentic Toolbox&lt;/a&gt; is a good example of that shift, from &lt;strong&gt;AI reviewing code after it's written&lt;/strong&gt; to &lt;strong&gt;AI quality checks becoming part of the coding workflow itself&lt;/strong&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  Thank You!!🙏
&lt;/h2&gt;

&lt;p&gt;Thank you for reading this far. If you find this article useful, please like and share this article. Someone could find it useful too.💖&lt;/p&gt;

&lt;p&gt;Connect with me on &lt;a href="https://x.com/kiran__a__n" rel="noopener noreferrer"&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://github.com/Kiran1689" rel="noopener noreferrer"&gt;&lt;strong&gt;GitHub&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/kiran-a-n" rel="noopener noreferrer"&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag__user ltag__user__id__1204850"&gt;
    &lt;a href="/dev_kiran" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=150,height=150,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1204850%2F1873cf6a-e8a7-4d43-9af8-296ac0506b3a.jpg" alt="dev_kiran image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/dev_kiran"&gt;Kiran Naragund&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/dev_kiran"&gt;Tech Writer and Moderator @DEV ✦ Senior Software Engineer ✦ Open-Source Contributor ✦ Email for Collabs :)&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;



</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>devops</category>
    </item>
    <item>
      <title>Best AI Code Review Tools for GitHub in 2026</title>
      <dc:creator>Kiran Naragund</dc:creator>
      <pubDate>Sun, 02 Aug 2026 09:42:38 +0000</pubDate>
      <link>https://dev.to/dev_kiran/best-ai-code-review-tools-for-github-in-2026-4pjk</link>
      <guid>https://dev.to/dev_kiran/best-ai-code-review-tools-for-github-in-2026-4pjk</guid>
      <description>&lt;p&gt;Hello Devs 👋&lt;/p&gt;

&lt;p&gt;AI coding assistants have dramatically accelerated code generation.&lt;/p&gt;

&lt;p&gt;Whether you're using Cursor, GitHub Copilot, Claude Code, or Windsurf, writing code is faster than ever. The challenge is that code review hasn't improved at the same pace.&lt;/p&gt;

&lt;p&gt;Teams are shipping larger pull requests, reviewing more AI-generated code, and spending increasing amounts of time validating whether changes are actually correct, maintainable, and aligned with existing architecture.&lt;/p&gt;

&lt;p&gt;That's exactly why AI code review tools have become a key part of modern GitHub workflows.&lt;/p&gt;

&lt;p&gt;The problem is that not all AI review tools solve the same problem.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Some generate pull request summaries.&lt;/li&gt;
&lt;li&gt;Some focus on security and compliance.&lt;/li&gt;
&lt;li&gt;Some extend traditional static analysis.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Others attempt to understand repository-wide context and review changes the way an experienced teammate would.&lt;/p&gt;

&lt;p&gt;If you're evaluating AI code review tools for GitHub, here's a practical comparison of the most widely discussed options in 2026.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚡ Quick Verdict
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt; stands out for teams that need automated pull request reviews with repository-wide context, not just diff analysis.&lt;/p&gt;

&lt;p&gt;The GitHub integration is straightforward, reviews run automatically on pull requests, and the platform focuses on understanding dependencies, related files, and existing code patterns across the repository.&lt;/p&gt;

&lt;p&gt;For small projects, lightweight review tools may be sufficient.&lt;/p&gt;

&lt;p&gt;For larger codebases, AI-generated code, and complex pull requests, context-aware review becomes significantly more valuable.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Makes a Good GitHub AI Review Tool?
&lt;/h2&gt;

&lt;p&gt;Before comparing tools, it's worth defining what actually matters.&lt;/p&gt;

&lt;p&gt;For most engineering teams, four factors determine whether an AI review tool provides real value.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Integration
&lt;/h3&gt;

&lt;p&gt;Reviews should appear where developers already work, directly inside GitHub pull requests.&lt;/p&gt;

&lt;p&gt;Nobody wants another dashboard, notification stream, or workflow to manage.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Review Quality
&lt;/h3&gt;

&lt;p&gt;Useful reviews surface meaningful issues, not just more comments.&lt;/p&gt;

&lt;p&gt;The goal isn't volume. It's identifying problems developers would otherwise miss.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Context Awareness
&lt;/h3&gt;

&lt;p&gt;The best reviewers understand how changes affect the rest of the codebase.&lt;/p&gt;

&lt;p&gt;Looking only at modified lines is often insufficient for complex systems.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Setup and Maintenance
&lt;/h3&gt;

&lt;p&gt;Developers adopt tools faster when setup takes minutes, not weeks.&lt;/p&gt;

&lt;p&gt;The best solutions require minimal configuration and ongoing maintenance.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. &lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt; automates code reviews inside GitHub while analyzing changes in repository context.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I Liked
&lt;/h3&gt;

&lt;p&gt;Qodo's biggest strength is understanding code beyond the pull request diff.&lt;/p&gt;

&lt;p&gt;Instead of evaluating only modified files, it attempts to understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Related files&lt;/li&gt;
&lt;li&gt;Dependencies&lt;/li&gt;
&lt;li&gt;Existing implementation patterns&lt;/li&gt;
&lt;li&gt;Historical review context&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This becomes particularly useful when a pull request spans multiple services, modules, or shared components.&lt;/p&gt;

&lt;p&gt;Many bugs are not introduced within the changed file itself. They're caused by missing updates elsewhere in the system.&lt;/p&gt;

&lt;p&gt;Context-aware analysis helps identify those issues before they reach production.&lt;/p&gt;

&lt;h3&gt;
  
  
  GitHub Integration
&lt;/h3&gt;

&lt;p&gt;Getting started is simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install the &lt;a href="https://github.com/marketplace/qodo-merge-pro" rel="noopener noreferrer"&gt;GitHub app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Grant repository access&lt;/li&gt;
&lt;li&gt;Select repositories&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After setup, reviews run automatically whenever pull requests are opened or updated.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best For
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Medium and large engineering teams&lt;/li&gt;
&lt;li&gt;Teams reviewing AI-generated code&lt;/li&gt;
&lt;li&gt;Multi-service architectures&lt;/li&gt;
&lt;li&gt;Complex repositories&lt;/li&gt;
&lt;li&gt;Teams prioritizing review quality over comment volume&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. CodeRabbit
&lt;/h2&gt;

&lt;p&gt;CodeRabbit is popular for delivering AI-powered pull request feedback with minimal setup.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I Liked
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Quick installation&lt;/li&gt;
&lt;li&gt;Helpful pull request summaries&lt;/li&gt;
&lt;li&gt;Easy adoption&lt;/li&gt;
&lt;li&gt;Good developer experience&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For many teams, it's one of the fastest ways to introduce AI reviews into GitHub workflows.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where It Can Struggle
&lt;/h3&gt;

&lt;p&gt;Most feedback is generated from the pull request diff, with limited repository-wide context.&lt;/p&gt;

&lt;p&gt;For smaller applications, this approach often works well.&lt;/p&gt;

&lt;p&gt;As systems grow more interconnected, diff-only reviews can miss architectural dependencies, downstream effects, and implementation consistency across services.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best For
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Small engineering teams&lt;/li&gt;
&lt;li&gt;Startups&lt;/li&gt;
&lt;li&gt;Simpler repositories&lt;/li&gt;
&lt;li&gt;Teams looking for lightweight AI review assistance&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. SonarQube
&lt;/h2&gt;

&lt;p&gt;SonarQube focuses on code quality and security analysis rather than AI-driven review workflows.&lt;/p&gt;

&lt;p&gt;Although it's frequently mentioned alongside AI review tools, its primary purpose is different.&lt;/p&gt;

&lt;h3&gt;
  
  
  What It Does Well
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Security scanning&lt;/li&gt;
&lt;li&gt;Vulnerability detection&lt;/li&gt;
&lt;li&gt;Technical debt tracking&lt;/li&gt;
&lt;li&gt;Code smells&lt;/li&gt;
&lt;li&gt;Test coverage reporting&lt;/li&gt;
&lt;li&gt;Quality gates&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What It's Not Trying To Do
&lt;/h3&gt;

&lt;p&gt;SonarQube excels at enforcing quality standards, security rules, and maintainability checks.&lt;/p&gt;

&lt;p&gt;It is not designed to provide contextual pull request feedback or repository-level reasoning in the same way dedicated AI review platforms do.&lt;/p&gt;

&lt;p&gt;Think of it as a powerful quality enforcement platform rather than an AI reviewer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best For
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Enterprise engineering teams&lt;/li&gt;
&lt;li&gt;Security-focused organizations&lt;/li&gt;
&lt;li&gt;Compliance requirements&lt;/li&gt;
&lt;li&gt;Governance-heavy development environments&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. GitHub Copilot Code Review
&lt;/h2&gt;

&lt;p&gt;GitHub continues expanding Copilot's review capabilities directly within the GitHub platform.&lt;/p&gt;

&lt;p&gt;For teams already invested in the GitHub ecosystem, this creates a seamless experience with no additional tooling required.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I Liked
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Native GitHub integration&lt;/li&gt;
&lt;li&gt;Familiar developer workflow&lt;/li&gt;
&lt;li&gt;No additional platform management&lt;/li&gt;
&lt;li&gt;Convenient for existing Copilot users&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Current Limitations
&lt;/h3&gt;

&lt;p&gt;Review suggestions are primarily pull request focused and less repository-aware than dedicated review platforms.&lt;/p&gt;

&lt;p&gt;For simple reviews, this is often enough.&lt;/p&gt;

&lt;p&gt;Teams requiring deeper architectural understanding, broader repository context, or more advanced automation may still benefit from specialized review tools.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best For
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Existing GitHub Copilot customers&lt;/li&gt;
&lt;li&gt;Small teams&lt;/li&gt;
&lt;li&gt;Lightweight review assistance&lt;/li&gt;
&lt;li&gt;GitHub-first development workflows&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Which Tool Should You Choose?
&lt;/h2&gt;

&lt;p&gt;The right tool depends on how your team reviews, ships, and maintains code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Choose Qodo if:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;You review large pull requests&lt;/li&gt;
&lt;li&gt;Multiple services interact with each other&lt;/li&gt;
&lt;li&gt;AI-generated code is becoming common&lt;/li&gt;
&lt;li&gt;Repository-wide context matters&lt;/li&gt;
&lt;li&gt;You want deeper review feedback&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Choose CodeRabbit if:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;You want lightweight AI reviews&lt;/li&gt;
&lt;li&gt;Your repositories are relatively straightforward&lt;/li&gt;
&lt;li&gt;Fast adoption is a priority&lt;/li&gt;
&lt;li&gt;Pull request summaries are important&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Choose SonarQube if:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Security is a primary concern&lt;/li&gt;
&lt;li&gt;Compliance requirements exist&lt;/li&gt;
&lt;li&gt;You need quality gates&lt;/li&gt;
&lt;li&gt;Static analysis is a core requirement&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Choose GitHub Copilot Review if:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;You're already using Copilot&lt;/li&gt;
&lt;li&gt;You want basic review assistance&lt;/li&gt;
&lt;li&gt;Keeping everything inside GitHub is important&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📚 Want to Learn More?
&lt;/h2&gt;

&lt;p&gt;If you're evaluating AI code reviews, these resources provide deeper technical guidance and practical examples.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.qodo.ai/academy/ai-code-review/" rel="noopener noreferrer"&gt;&lt;strong&gt;What is AI Code Review&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A practical introduction to how AI review systems work and the types of issues they can identify.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.qodo.ai/academy/ai-generated-code-in-enterprise/" rel="noopener noreferrer"&gt;&lt;strong&gt;Reviewing AI-Generated Code&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Useful for teams increasingly relying on Cursor, Copilot, Claude Code, and other AI coding assistants.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.qodo.ai/academy/ai-code-review-tools-comparison-and-benchmarks/" rel="noopener noreferrer"&gt;&lt;strong&gt;AI Code Review Tools Comparison&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A deeper comparison of review approaches, workflows, strengths, and tradeoffs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Not all AI code review tools solve the same problem.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Some focus on pull request summaries.&lt;/li&gt;
&lt;li&gt;Some focus on security.&lt;/li&gt;
&lt;li&gt;Some focus on static analysis.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Others focus on understanding how a change fits into the broader codebase.&lt;/p&gt;

&lt;p&gt;For GitHub teams, the best choice depends on the bottlenecks you're trying to eliminate.&lt;/p&gt;

&lt;p&gt;If your team is reviewing increasing volumes of AI-generated code, context awareness and review quality often matter far more than the number of comments an AI tool can generate.&lt;/p&gt;

&lt;p&gt;The most valuable reviewers aren't the ones that comment the most.&lt;/p&gt;

&lt;p&gt;They're the ones that catch issues developers would have otherwise missed.&lt;/p&gt;




&lt;h2&gt;
  
  
  Thank You!!🙏
&lt;/h2&gt;

&lt;p&gt;Thank you for reading this far. If you find this article useful, please like and share this article. Someone could find it useful too.💖&lt;/p&gt;

&lt;p&gt;Connect with me on &lt;a href="https://x.com/kiran__a__n" rel="noopener noreferrer"&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://github.com/Kiran1689" rel="noopener noreferrer"&gt;&lt;strong&gt;GitHub&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/kiran-a-n" rel="noopener noreferrer"&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag__user ltag__user__id__1204850"&gt;
    &lt;a href="/dev_kiran" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=150,height=150,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1204850%2F1873cf6a-e8a7-4d43-9af8-296ac0506b3a.jpg" alt="dev_kiran image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/dev_kiran"&gt;Kiran Naragund&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/dev_kiran"&gt;Tech Writer and Moderator @DEV ✦ Senior Software Engineer ✦ Open-Source Contributor ✦ Email for Collabs :)&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;
 

</description>
      <category>aiops</category>
      <category>code</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>What "Context-Aware Code Review" Actually Means🤔</title>
      <dc:creator>Kiran Naragund</dc:creator>
      <pubDate>Sat, 01 Aug 2026 13:27:33 +0000</pubDate>
      <link>https://dev.to/dev_kiran/what-context-aware-code-review-actually-means-30gm</link>
      <guid>https://dev.to/dev_kiran/what-context-aware-code-review-actually-means-30gm</guid>
      <description>&lt;p&gt;Hello Devs 👋&lt;/p&gt;

&lt;p&gt;If you've looked at AI code review tools recently, you've probably seen the term &lt;strong&gt;"context-aware code review"&lt;/strong&gt; everywhere.&lt;/p&gt;

&lt;p&gt;Every tool seems to use it.&lt;/p&gt;

&lt;p&gt;Some talk about repository awareness. Others mention codebase understanding. A few claim they understand architecture and engineering best practices.&lt;/p&gt;

&lt;p&gt;After spending some time reading docs, testing different tools, and comparing how they review pull requests, I realized something:&lt;/p&gt;

&lt;p&gt;Most of us don't really know what "context-aware" means.&lt;/p&gt;

&lt;p&gt;The term gets thrown around so often that it's hard to tell whether a tool actually understands your codebase or is simply reviewing the diff and calling it context.&lt;/p&gt;

&lt;p&gt;So I wanted to dig into what context actually means in code review and why it matters.&lt;/p&gt;




&lt;h2&gt;
  
  
  Most Reviews Start With The Diff
&lt;/h2&gt;

&lt;p&gt;Whether the review is done by a human or an AI tool, the starting point is usually the same.&lt;/p&gt;

&lt;p&gt;The pull request &lt;strong&gt;diff&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Reviewers look at what changed, which files were modified, what code was added or removed, and whether tests were updated.&lt;/p&gt;

&lt;p&gt;AI review tools generally work the same way. They receive the diff and generate feedback based on the changes.&lt;/p&gt;

&lt;p&gt;For a lot of pull requests, that's completely fine.&lt;/p&gt;

&lt;p&gt;If you're fixing a typo, updating a utility function, or cleaning up some code, the diff often contains everything needed to review the change.&lt;/p&gt;

&lt;p&gt;The problem starts when the change affects behavior outside the files being modified.&lt;/p&gt;

&lt;p&gt;That's where context becomes important.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Simple Example
&lt;/h2&gt;

&lt;p&gt;Let's say a pull request contains this line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;updatePaymentStatus&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;paymentId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Looking only at the diff, nothing seems wrong.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The code compiles.&lt;/li&gt;
&lt;li&gt;Tests pass.&lt;/li&gt;
&lt;li&gt;No obvious issues stand out.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But imagine a few things are true:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The payment service is supposed to publish an event whenever the status changes.&lt;/li&gt;
&lt;li&gt;Audit logs are required for compliance reasons.&lt;/li&gt;
&lt;li&gt;Similar update flows also update metadata fields.&lt;/li&gt;
&lt;li&gt;Another service depends on a specific side effect.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of that information exists in the diff.&lt;/p&gt;

&lt;p&gt;If you're familiar with the system, you might catch the issue immediately.&lt;/p&gt;

&lt;p&gt;If you're not, you'll probably need to search the repository, look at similar implementations, and understand how this piece fits into the larger application.&lt;/p&gt;

&lt;p&gt;That's context.&lt;/p&gt;


&lt;h2&gt;
  
  
  So What Does "Context" Actually Mean?
&lt;/h2&gt;

&lt;p&gt;When people talk about context-aware code review, they're usually talking about information that exists outside the pull request itself.&lt;/p&gt;

&lt;p&gt;The exact definition varies between tools, but it generally falls into a few categories.&lt;/p&gt;
&lt;h3&gt;
  
  
  Repository Context
&lt;/h3&gt;

&lt;p&gt;This is probably the most common type.&lt;/p&gt;

&lt;p&gt;Instead of looking only at the modified files, a tool also examines surrounding code.&lt;/p&gt;

&lt;p&gt;For example, if you're changing a service method, it might inspect:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Related services&lt;/li&gt;
&lt;li&gt;Shared utilities&lt;/li&gt;
&lt;li&gt;Existing implementations&lt;/li&gt;
&lt;li&gt;Similar patterns elsewhere in the repository&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A diff-only review doesn't usually do this.&lt;/p&gt;

&lt;p&gt;It sees the change.&lt;/p&gt;

&lt;p&gt;A context-aware review tries to understand where that change lives.&lt;/p&gt;
&lt;h3&gt;
  
  
  Historical Context
&lt;/h3&gt;

&lt;p&gt;Sometimes the most important information isn't in the code.&lt;/p&gt;

&lt;p&gt;It's in previous decisions.&lt;/p&gt;

&lt;p&gt;Every team develops conventions over time. Some patterns become standard because they've worked well. Others exist because someone got burned by a production issue three years ago.&lt;/p&gt;

&lt;p&gt;Historical context can include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Previous pull requests&lt;/li&gt;
&lt;li&gt;Review comments&lt;/li&gt;
&lt;li&gt;Team conventions&lt;/li&gt;
&lt;li&gt;Accepted implementation patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Experienced engineers naturally use this information when reviewing code.&lt;/p&gt;

&lt;p&gt;A truly context-aware tool should be able to leverage some of it as well.&lt;/p&gt;
&lt;h3&gt;
  
  
  Dependency Context
&lt;/h3&gt;

&lt;p&gt;Modern systems are connected in ways that aren't always obvious.&lt;/p&gt;

&lt;p&gt;A small change in one service can impact shared libraries, downstream systems, APIs, or external integrations.&lt;/p&gt;

&lt;p&gt;This becomes even more important in organizations with multiple repositories and distributed architectures.&lt;/p&gt;

&lt;p&gt;A pull request can look perfectly fine inside its own repository while still creating problems somewhere else.&lt;/p&gt;

&lt;p&gt;That's why dependency awareness matters.&lt;/p&gt;
&lt;h3&gt;
  
  
  Architectural Context
&lt;/h3&gt;

&lt;p&gt;This is probably the hardest problem to solve.&lt;/p&gt;

&lt;p&gt;Most mature systems have architectural rules that aren't explicitly written in every file.&lt;/p&gt;

&lt;p&gt;Maybe services aren't supposed to access certain domains directly.&lt;/p&gt;

&lt;p&gt;Maybe events are required for specific workflows.&lt;/p&gt;

&lt;p&gt;Maybe security checks must happen before certain operations.&lt;/p&gt;

&lt;p&gt;A review tool that understands architecture should be able to recognize when a change violates those expectations.&lt;/p&gt;

&lt;p&gt;That's much harder than checking syntax or spotting a bug pattern.&lt;/p&gt;


&lt;h2&gt;
  
  
  How Can You Tell If A Tool Is Actually Context-Aware?
&lt;/h2&gt;

&lt;p&gt;This is the question I started asking whenever I evaluated a new review tool.&lt;/p&gt;

&lt;p&gt;Instead of looking at marketing claims, I focused on what the feedback actually looked like.&lt;/p&gt;

&lt;p&gt;One thing I noticed is that good review comments usually explain &lt;em&gt;why&lt;/em&gt; something matters.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Consider updating this implementation.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's technically feedback, but it's not very useful.&lt;/p&gt;

&lt;p&gt;Compare that with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Similar update flows publish an event after status changes. This implementation does not appear to do that, which could lead to inconsistent downstream behavior.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The second comment demonstrates awareness of patterns outside the modified code.&lt;/p&gt;

&lt;p&gt;That's a much stronger signal that the tool understands context.&lt;/p&gt;

&lt;p&gt;Another thing I look for is whether the tool can connect changes to code that wasn't modified.&lt;/p&gt;

&lt;p&gt;Many tools only analyze changed files.&lt;/p&gt;

&lt;p&gt;There's nothing wrong with that.&lt;/p&gt;

&lt;p&gt;But if a tool claims to understand context, I expect it to reference related parts of the codebase when they're relevant.&lt;/p&gt;

&lt;p&gt;I also pay attention to whether the feedback reflects team conventions.&lt;/p&gt;

&lt;p&gt;Every engineering team develops its own standards around logging, testing, security, error handling, and observability.&lt;/p&gt;

&lt;p&gt;The best review feedback feels specific to the project.&lt;/p&gt;

&lt;p&gt;The worst feedback feels like generic advice copied from a programming textbook.&lt;/p&gt;


&lt;h2&gt;
  
  
  Why This Matters More Than Ever
&lt;/h2&gt;

&lt;p&gt;The way we write code is changing.&lt;/p&gt;

&lt;p&gt;Many teams now use tools like Cursor, GitHub Copilot, Claude Code, and other AI coding assistants every day.&lt;/p&gt;

&lt;p&gt;That means more code is being generated faster than ever.&lt;/p&gt;

&lt;p&gt;As a result, review workload keeps increasing.&lt;/p&gt;

&lt;p&gt;Reviewers aren't just checking code quality anymore.&lt;/p&gt;

&lt;p&gt;They're increasingly responsible for understanding how generated code fits into existing systems, patterns, and architectural decisions.&lt;/p&gt;

&lt;p&gt;That's where context becomes valuable.&lt;/p&gt;

&lt;p&gt;Not because AI replaces human reviewers.&lt;/p&gt;

&lt;p&gt;Because modern codebases are becoming too large and interconnected to reason about from a single pull request alone.&lt;/p&gt;


&lt;h2&gt;
  
  
  Where &lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt; Fits In
&lt;/h2&gt;

&lt;p&gt;One thing I found interesting about &lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt;'s approach is its focus on gathering context before generating feedback.&lt;/p&gt;

&lt;p&gt;Instead of looking only at changed lines, it attempts to understand related files, repository structure, dependencies, previous review activity, and existing code patterns.&lt;/p&gt;

&lt;p&gt;The goal isn't to generate more comments.&lt;/p&gt;

&lt;p&gt;The goal is to generate comments that are actually relevant to the change being reviewed.&lt;/p&gt;

&lt;p&gt;Whether any tool succeeds at that should ultimately be judged by developers using it in real projects.&lt;/p&gt;

&lt;p&gt;But personally, I think this is a much better way to evaluate AI review tools than asking whether they use AI or how many comments they generate.&lt;/p&gt;

&lt;p&gt;Checkout Qodo here: &lt;a href="https://www.qodo.ai" rel="noopener noreferrer"&gt;https://www.qodo.ai&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;"Context-aware code review" has become one of those terms that everyone uses but rarely defines.&lt;/p&gt;

&lt;p&gt;Some tools are mostly diff reviewers.&lt;/p&gt;

&lt;p&gt;Others try to understand repository structure, dependencies, historical decisions, and architectural patterns before generating feedback.&lt;/p&gt;

&lt;p&gt;Neither approach is automatically better.&lt;/p&gt;

&lt;p&gt;The important thing is understanding what kind of context a tool actually uses and where its feedback comes from.&lt;/p&gt;

&lt;p&gt;Because in my experience, the biggest production issues are rarely hidden in the syntax.&lt;/p&gt;

&lt;p&gt;They're usually hidden in the context surrounding the change.&lt;/p&gt;

&lt;p&gt;And that's exactly the part that's easiest to miss when you're only looking at a diff.&lt;/p&gt;


&lt;h2&gt;
  
  
  Thank You!!🙏
&lt;/h2&gt;

&lt;p&gt;Thank you for reading this far. If you find this article useful, please like and share this article. Someone could find it useful too.💖&lt;/p&gt;

&lt;p&gt;Connect with me on &lt;a href="https://x.com/kiran__a__n" rel="noopener noreferrer"&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://github.com/Kiran1689" rel="noopener noreferrer"&gt;&lt;strong&gt;GitHub&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/kiran-a-n" rel="noopener noreferrer"&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag__user ltag__user__id__1204850"&gt;
    &lt;a href="/dev_kiran" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=150,height=150,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1204850%2F1873cf6a-e8a7-4d43-9af8-296ac0506b3a.jpg" alt="dev_kiran image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/dev_kiran"&gt;Kiran Naragund&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/dev_kiran"&gt;Tech Writer and Moderator @DEV ✦ Senior Software Engineer ✦ Open-Source Contributor ✦ Email for Collabs :)&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;



</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>BrowserAct Hit #1 on Product Hunt, So I Decided to Test It 🧙‍♂️</title>
      <dc:creator>Kiran Naragund</dc:creator>
      <pubDate>Sun, 05 Jul 2026 10:14:20 +0000</pubDate>
      <link>https://dev.to/dev_kiran/browseract-hit-1-on-product-hunt-so-i-decided-to-test-it-96m</link>
      <guid>https://dev.to/dev_kiran/browseract-hit-1-on-product-hunt-so-i-decided-to-test-it-96m</guid>
      <description>&lt;p&gt;Hello Devs 👋&lt;/p&gt;

&lt;p&gt;Over the last few months, AI agents have been evolving very quickly. We are no longer building simple chatbots that answer questions. Today, agents browse websites, execute workflows, monitor dashboards, interact with SaaS platforms, and perform actions that previously required manual work.&lt;/p&gt;

&lt;p&gt;Recently, &lt;a href="https://www.browseract.ai/Kiran" rel="noopener noreferrer"&gt;BrowserAct&lt;/a&gt; reached the top position on &lt;a href="https://www.producthunt.com/leaderboard/daily/2026/6/25" rel="noopener noreferrer"&gt;Product Hunt&lt;/a&gt;, which immediately caught my attention. Products often receive attention during launch periods, but reaching the number one spot usually means people see a real problem being solved rather than just another feature release.&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%2F6n35t452lddick2eu7d0.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%2F6n35t452lddick2eu7d0.png" alt="Product Hunt" width="799" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That made me curious.&lt;/p&gt;

&lt;p&gt;Why are developers and AI builders paying attention to &lt;a href="https://www.browseract.ai/Kiran" rel="noopener noreferrer"&gt;BrowserAct&lt;/a&gt;? Is it simply another browser automation tool, or is there something different about it?&lt;/p&gt;

&lt;p&gt;Instead of reading documentation and feature lists, I decided to test it myself and understand what problem it is trying to solve.&lt;/p&gt;

&lt;p&gt;In this article I will walk through what &lt;a href="https://www.browseract.ai/Kiran" rel="noopener noreferrer"&gt;BrowserAct&lt;/a&gt; is, the problem it addresses, how to install it locally, and some hands-on examples using real workflows.&lt;/p&gt;




&lt;h2&gt;
  
  
  What is &lt;a href="https://www.browseract.ai/Kiran" rel="noopener noreferrer"&gt;BrowserAct&lt;/a&gt;?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.browseract.ai/Kiran" rel="noopener noreferrer"&gt;BrowserAct&lt;/a&gt; is a browser automation CLI built specifically for &lt;em&gt;AI agents&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Traditional browser automation tools usually focus on opening pages, clicking buttons, and extracting information from websites. That works well for simple tasks, but AI agents often require more than basic automation. Real websites contain authentication flows, dynamic rendering, browser fingerprint checks, session management, and situations where human intervention becomes necessary.&lt;/p&gt;

&lt;p&gt;BrowserAct attempts to solve these challenges by treating the browser as an execution environment for agents rather than as a temporary browser window.&lt;/p&gt;

&lt;p&gt;Some of its capabilities include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Browser session persistence&lt;/li&gt;
&lt;li&gt;Browser identity isolation&lt;/li&gt;
&lt;li&gt;Human handoff support&lt;/li&gt;
&lt;li&gt;Parallel browser sessions&lt;/li&gt;
&lt;li&gt;Anti-detection browser environments&lt;/li&gt;
&lt;li&gt;Reusable workflows and skills&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What Problem Is BrowserAct Trying To Solve?
&lt;/h2&gt;

&lt;p&gt;After building and testing AI agents, I have noticed that many workflows do not fail because of the language model.&lt;/p&gt;

&lt;p&gt;The model usually knows what it needs to do.&lt;/p&gt;

&lt;p&gt;The problem starts when the workflow enters a browser.&lt;/p&gt;

&lt;p&gt;For example, consider an AI agent that monitors competitor pricing. On paper the task sounds straightforward. Open a website, extract information, generate a report, and send the output.&lt;/p&gt;

&lt;p&gt;Reality usually looks different.&lt;/p&gt;

&lt;p&gt;The website might require authentication. Content may be rendered dynamically. Session state may expire. Security checks can appear unexpectedly. Browser fingerprints may trigger additional verification.&lt;/p&gt;

&lt;p&gt;At this point the issue is no longer intelligence.&lt;/p&gt;

&lt;p&gt;The issue becomes execution.&lt;/p&gt;

&lt;p&gt;BrowserAct seems designed around that exact problem.&lt;/p&gt;




&lt;h2&gt;
  
  
  Getting Started with BrowserAct
&lt;/h2&gt;

&lt;p&gt;Getting started with BrowserAct is straightforward, and it can fit naturally into both command-line workflows and AI agent environments.&lt;/p&gt;

&lt;p&gt;Depending on how you plan to use it, there are two common installation approaches.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Install Through an AI Agent (Recommended for Agent Workflows)
&lt;/h3&gt;

&lt;p&gt;If you're using an AI coding agent or an environment that supports skills and tool integrations, BrowserAct can be installed directly as a skill.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add browser-act/skills &lt;span class="nt"&gt;--skill&lt;/span&gt; browser-act
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This allows the agent to invoke BrowserAct capabilities directly inside larger workflows. Instead of writing custom browser automation logic every time, the agent can use BrowserAct whenever browser interaction becomes necessary.&lt;/p&gt;

&lt;p&gt;For example, an agent can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open websites&lt;/li&gt;
&lt;li&gt;Navigate between pages&lt;/li&gt;
&lt;li&gt;Handle login flows&lt;/li&gt;
&lt;li&gt;Fill forms&lt;/li&gt;
&lt;li&gt;Extract structured content&lt;/li&gt;
&lt;li&gt;Continue browser-based workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This approach is useful when BrowserAct becomes part of a broader AI system rather than a standalone browser tool.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Install BrowserAct CLI Directly
&lt;/h3&gt;

&lt;p&gt;If you prefer working directly from the terminal, BrowserAct also provides a CLI installation option.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uv tool &lt;span class="nb"&gt;install &lt;/span&gt;browser-act-cli &lt;span class="nt"&gt;--python&lt;/span&gt; 3.12
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;After installation, authenticate your local environment:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;browser-act auth login

browser-act auth poll
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;You can also directly configure an API key:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;browser-act auth &lt;span class="nb"&gt;set &lt;/span&gt;YOUR_API_KEY
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Once authentication is complete, BrowserAct is ready to execute browser workflows locally.&lt;/p&gt;

&lt;p&gt;Rather than jumping directly into advanced workflows, I wanted to verify that the installation was working correctly and understand the basic command flow.&lt;/p&gt;

&lt;p&gt;The first thing I checked was the browser profiles available on my system.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;browser-act browser list-profiles
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fcvnk9i5y69qulpzhy7c9.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%2Fcvnk9i5y69qulpzhy7c9.png" alt="browser-act browser list-profiles" width="800" height="124"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The output lists available browser profiles that BrowserAct can use during execution. These profiles become useful when creating isolated browser environments, preserving state across sessions, or reusing existing login contexts.&lt;/p&gt;

&lt;p&gt;Next, I created a browser using my existing Chrome profile.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;browser create &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--&lt;/span&gt; &lt;span class="nb"&gt;type &lt;/span&gt;chrome &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--&lt;/span&gt; source-profile &lt;span class="se"&gt;\&lt;/span&gt;
local_profile_182885126174998716 &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--&lt;/span&gt; name &lt;span class="s2"&gt;"browseract"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--&lt;/span&gt; desc &lt;span class="s2"&gt;"testing-browseract"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2F9llg2h8qz82xyuq8srao.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%2F9llg2h8qz82xyuq8srao.png" alt="browser create" width="800" height="101"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;BrowserAct automatically imports available browser state such as cookies and local storage data.&lt;/p&gt;

&lt;p&gt;Now that the browser environment was ready, I wanted to test a simple content extraction workflow.&lt;/p&gt;


&lt;h3&gt;
  
  
  First Test: Extracting Website Content
&lt;/h3&gt;

&lt;p&gt;For the first test, I used BrowserAct's &lt;code&gt;stealth-extract&lt;/code&gt; command on a simple website.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;browser-act stealth-extract https://example.com &lt;span class="nt"&gt;--content-type&lt;/span&gt; markdown
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fwyv7ncbexx3z4yntcm1t.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%2Fwyv7ncbexx3z4yntcm1t.png" alt="browser-act stealth-extract https://example.com --content-type markdown" width="800" height="101"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Example Domain

This domain is for use in documentation examples without needing permission.

[Learn more](https://iana.org/domains/example)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The result was returned as clean markdown without writing selectors, parsing HTML, or creating custom scraping logic.&lt;/p&gt;

&lt;p&gt;Next, I wanted to see how BrowserAct handled an interactive browser session.&lt;/p&gt;


&lt;h3&gt;
  
  
  Second Test: Opening a Browser Session
&lt;/h3&gt;

&lt;p&gt;I opened a browser session using the browser profile I created earlier.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;browser-act &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--session&lt;/span&gt; first-test &lt;span class="se"&gt;\&lt;/span&gt;
browser open &lt;span class="se"&gt;\&lt;/span&gt;
chrome_local_102863481715294440 &lt;span class="se"&gt;\&lt;/span&gt;
https://github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fm0m2195mqlhoberesiiy.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%2Fm0m2195mqlhoberesiiy.png" alt="browser-act --session first-test browser open chrome_local_102863481715294440 https://github.com" width="800" height="105"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The output returned details about the active session:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;session_name=first-test
browser_type=chrome
url=https://github.com/
title=GitHub
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;At this point, the browser was active and ready for interaction.&lt;/p&gt;
&lt;h3&gt;
  
  
  Inspecting Page State
&lt;/h3&gt;

&lt;p&gt;One of the interesting parts of BrowserAct is that it does not expose raw HTML directly. Instead, it generates a structured view of interactive elements that agents can work with.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;browser-act &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--session&lt;/span&gt; first-test &lt;span class="se"&gt;\&lt;/span&gt;
state
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2F16pqlu6pzjbna10h7h7j.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%2F16pqlu6pzjbna10h7h7j.png" alt="browser-act \&lt;br&gt;
--session first-test \&lt;br&gt;
state" width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This allows interactions to happen using element references rather than manually creating CSS selectors.&lt;/p&gt;

&lt;p&gt;To test this further, I clicked search button:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;browser-act &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--session&lt;/span&gt; first-test &lt;span class="se"&gt;\&lt;/span&gt;
click 6
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2F3zocuprx3kik00rhdjm0.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%2F3zocuprx3kik00rhdjm0.png" alt="browser-act \&lt;br&gt;
--session first-test \&lt;br&gt;
click 6" width="799" height="424"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At this point, I had completed a complete workflow:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Create Browser → Open Session → Inspect → Input → Click → Navigate&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;without writing a browser automation script.&lt;/p&gt;


&lt;h3&gt;
  
  
  Third Test: Using BrowserAct with an AI Agent
&lt;/h3&gt;

&lt;p&gt;After testing BrowserAct directly through the CLI, I wanted to see how it behaved inside an actual AI agent workflow.&lt;/p&gt;

&lt;p&gt;For this experiment, I used &lt;strong&gt;Codex&lt;/strong&gt; as the agent runtime.&lt;/p&gt;

&lt;p&gt;One advantage of BrowserAct is that it does not need to live as a standalone tool. We can instruct the agent to invoke BrowserAct whenever browser interaction becomes necessary. That includes opening websites, clicking buttons, handling login flows, extracting structured content, or interacting with dynamic pages.&lt;/p&gt;

&lt;p&gt;To test this, I asked the agent to install BrowserAct and use it as part of its workflow.&lt;/p&gt;

&lt;p&gt;Here is the prompt I provided:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Set up BrowserAct for me. 
Read the BrowserAct skill first: https://github.com/browser-act/skills/blob/main/browser-act/SKILL.md
Install or update the browser-act skill, then verify it works. 
Use BrowserAct when I need an AI agent to browse, click, fill forms,
handle login flows, solve CAPTCHAs, bypass bot detection, or extract structured data from websites. 
After setup, open this repository in my browser: https://github.com/browser-act/skills 
If I am logged in to GitHub, 
ask me whether you should star it for me as a quick demo that browser interaction works. 
Only click the star if I explicitly say yes.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;After receiving the instructions, the agent started executing the workflow automatically.&lt;/p&gt;

&lt;p&gt;The workflow looked something like this:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent starts
        ↓
Installs BrowserAct skill
        ↓
Verifies installation
        ↓
Opens GitHub repository
        ↓
Checks authentication state
        ↓
Requests confirmation
        ↓
Performs browser action
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fldorh22f4pfgsa6chnaf.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%2Fldorh22f4pfgsa6chnaf.png" alt="BA" width="800" height="423"&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%2Fcbbp6atpcxq6tmfb9kc7.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%2Fcbbp6atpcxq6tmfb9kc7.png" alt="BA" width="799" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The interesting part was watching the agent use BrowserAct as a tool rather than relying on static instructions. Browser actions became part of the execution process instead of separate manual steps.&lt;/p&gt;

&lt;p&gt;After receiving confirmation, the agent completed the task successfully and starred 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%2Fgg1qzx71li37nqrtgem2.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%2Fgg1qzx71li37nqrtgem2.png" alt="starred the repository" width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Although starring a GitHub repository is a simple action, it demonstrates an important capability. The agent was able to open a real website, maintain browser state, interact with UI elements, and complete an action inside an authenticated environment.&lt;/p&gt;

&lt;p&gt;This feels much closer to real-world AI workflows than isolated browser automation scripts.&lt;/p&gt;


&lt;h3&gt;
  
  
  Fourth Test: Human Handoff with an AI Agent
&lt;/h3&gt;

&lt;p&gt;One feature that interested me most was human handoff.&lt;/p&gt;

&lt;p&gt;Many automation workflows eventually reach a point where the process cannot continue without human participation. Common examples include OTP verification, QR login, enterprise SSO approval, and security confirmations.&lt;/p&gt;

&lt;p&gt;To test this behavior, I used &lt;em&gt;&lt;strong&gt;Codex&lt;/strong&gt;&lt;/em&gt; together with BrowserAct and created a workflow that required OTP verification.&lt;/p&gt;

&lt;p&gt;My objective was straightforward:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Let the agent open the login page&lt;/li&gt;
&lt;li&gt;Enter the email automatically&lt;/li&gt;
&lt;li&gt;Pause when OTP is required&lt;/li&gt;
&lt;li&gt;Preserve browser state&lt;/li&gt;
&lt;li&gt;Resume execution after human input&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I provided the following prompt to the agent:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use BrowserAct for this workflow. 

Open: https://practice.expandtesting.com/otp-login 

Actions: 
1. Launch BrowserAct 
2. Open the website 
3. Continue the login workflow 
4. If human interaction becomes necessary for OTP, preserve browser state and use BrowserAct's collaboration capability 
5. Resume execution after collaboration completes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fnpnsk3nl1umlgz3d4gzh.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%2Fnpnsk3nl1umlgz3d4gzh.png" alt="prompt" width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The agent launched BrowserAct, created a browser session, and navigated to the login page.&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%2F78ha8fo1ctahtss39ga0.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%2F78ha8fo1ctahtss39ga0.png" alt="BrowserAct" width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When the workflow reached the authentication stage, BrowserAct detected that human interaction was required and generated a &lt;em&gt;collaboration link&lt;/em&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%2Fw1lh4athvaak5hziyv9i.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%2Fw1lh4athvaak5hziyv9i.png" alt="collaboration link" width="799" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I opened the collaboration link and completed the login process manually.&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%2F37l7346lfwxejxn4e2s4.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%2F37l7346lfwxejxn4e2s4.png" alt="collaboration link" width="800" height="423"&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%2Fn8eh0mzs9hju47ik3l3y.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%2Fn8eh0mzs9hju47ik3l3y.png" alt="OTP" width="799" height="424"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once authentication finished, control automatically returned to the agent without restarting the browser session.&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%2Fr8okthskevwr9nfmbww8.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%2Fr8okthskevwr9nfmbww8.png" alt="authentication finished" width="799" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The interesting part was that the browser state remained active throughout the interruption. The agent paused execution, handed control to a human when necessary, and then continued from the exact same session once the required action had been completed.&lt;/p&gt;

&lt;p&gt;For production workflows involving authentication, verification, or approval steps, this feels significantly more practical than forcing complete automation.&lt;/p&gt;


&lt;h3&gt;
  
  
  Fifth Test: Running Multiple Browser Sessions
&lt;/h3&gt;

&lt;p&gt;Another scenario I wanted to test was running multiple independent browser sessions.&lt;/p&gt;

&lt;p&gt;Long-running AI systems rarely perform a single task. They may monitor dashboards, analyze feedback, review customer activity, and collect information simultaneously.&lt;/p&gt;

&lt;p&gt;I created several browser sessions locally.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;browser-act &lt;span class="nt"&gt;--session&lt;/span&gt; reviews browser open chrome_local_102863481715294440 https://reddit.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;browser-act &lt;span class="nt"&gt;--session&lt;/span&gt; ops browser open chrome_local_102863481715294440 https://status.openai.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;browser-act &lt;span class="nt"&gt;--session&lt;/span&gt; community browser open chrome_local_102863481715294440 https://dev.to
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;I then listed active sessions:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;browser-act session list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The output showed multiple active sessions operating independently.&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%2F82e41b7nm255xy5e9qh5.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%2F82e41b7nm255xy5e9qh5.png" alt="browser-act session list" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This separation becomes useful because each workflow maintains its own execution state while avoiding interference with other tasks.&lt;/p&gt;
&lt;h3&gt;
  
  
  Final Thoughts
&lt;/h3&gt;

&lt;p&gt;After spending some time testing BrowserAct, I understand why it attracted attention during its Product Hunt launch.&lt;/p&gt;

&lt;p&gt;The value does not come from simply opening browsers and clicking buttons.&lt;/p&gt;

&lt;p&gt;The interesting part is treating the browser as an execution layer for AI agents and handling the problems that appear in real environments.&lt;/p&gt;
&lt;h2&gt;
  
  
  Thank You!!🙏
&lt;/h2&gt;

&lt;p&gt;Thank you for reading this far. If you find this article useful, please like and share this article. Someone could find it useful too.💖&lt;/p&gt;

&lt;p&gt;Connect with me on &lt;a href="https://x.com/kiran__a__n" rel="noopener noreferrer"&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://github.com/Kiran1689" rel="noopener noreferrer"&gt;&lt;strong&gt;GitHub&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/kiran-a-n" rel="noopener noreferrer"&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag__user ltag__user__id__1204850"&gt;
    &lt;a href="/dev_kiran" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=150,height=150,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1204850%2F1873cf6a-e8a7-4d43-9af8-296ac0506b3a.jpg" alt="dev_kiran image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/dev_kiran"&gt;Kiran Naragund&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/dev_kiran"&gt;Tech Writer and Moderator @DEV ✦ Senior Software Engineer ✦ Open-Source Contributor ✦ Email for Collabs :)&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;



</description>
      <category>ai</category>
      <category>cli</category>
      <category>tutorial</category>
      <category>automation</category>
    </item>
    <item>
      <title>The Code Review Metrics No One Is Tracking..</title>
      <dc:creator>Kiran Naragund</dc:creator>
      <pubDate>Mon, 29 Jun 2026 17:09:37 +0000</pubDate>
      <link>https://dev.to/dev_kiran/the-code-review-metrics-no-one-is-tracking-2mm6</link>
      <guid>https://dev.to/dev_kiran/the-code-review-metrics-no-one-is-tracking-2mm6</guid>
      <description>&lt;p&gt;Hello Devs 👋&lt;/p&gt;

&lt;p&gt;When teams talk about engineering metrics, the conversation usually moves toward speed. We often look at things like pull request turnaround time, lead time, deployment frequency, and how quickly changes move through the system.&lt;/p&gt;

&lt;p&gt;These are useful metrics because they tell us how efficiently work is flowing through the development process. But after spending time on larger projects and working across different teams, I started noticing that speed alone doesn't always tell the full story.&lt;/p&gt;

&lt;p&gt;I've seen teams merge pull requests quickly and still spend a lot of time later dealing with repeated issues, hotfixes, and bugs that somehow escaped review. I've also seen teams with slower review cycles that ended up having fewer production issues because they consistently caught missing pieces earlier.&lt;/p&gt;

&lt;p&gt;That made me think about whether we sometimes focus too much on &lt;em&gt;how fast reviews move&lt;/em&gt; and not enough on &lt;em&gt;whether reviews are actually helping improve code quality.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Let's get into it 🚀&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚡ Quick Verdict
&lt;/h2&gt;

&lt;p&gt;&lt;a href="//qodo.ai"&gt;Qodo&lt;/a&gt; is probably one of the better options if your goal is not just measuring review speed but understanding review quality across a team. Instead of only showing statistics around pull request activity, it tries to surface patterns that are easy to miss during day-to-day development. Things like recurring issues, repeated review findings, critical problems appearing across repositories, and whether developers are actually resolving suggestions start becoming visible.&lt;/p&gt;

&lt;p&gt;That becomes more useful as projects grow because the challenge usually changes over time. In smaller projects, the focus is often on moving code quickly. In larger systems with more developers and more pull requests, the bigger challenge becomes understanding whether the same problems keep appearing repeatedly and slowly affecting quality.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem With Looking Only at PR Velocity
&lt;/h2&gt;

&lt;p&gt;Let's imagine two teams.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team A&lt;/strong&gt; has an average review time of around 15 minutes. Pull requests move quickly, deployments happen frequently, and every dashboard looks healthy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team B&lt;/strong&gt; takes closer to 40 minutes on average to review pull requests. From the outside it initially looks like Team B is moving more slowly.&lt;/p&gt;

&lt;p&gt;But after a few months, a different picture starts appearing.&lt;/p&gt;

&lt;p&gt;Team A repeatedly runs into missing edge cases, production fixes, and review discussions that seem strangely familiar. Reviewers continue asking for missing tests, validation updates, and similar changes over and over again.&lt;/p&gt;

&lt;p&gt;Team B, despite taking longer during reviews, catches many of these issues before code reaches production.&lt;/p&gt;

&lt;p&gt;At that point the discussion becomes less about "Which team reviews faster?" and more about "Which team is preventing problems from repeating?"&lt;/p&gt;

&lt;p&gt;That difference is important because pull request speed by itself doesn't tell us whether reviews are actually doing their job.&lt;/p&gt;




&lt;h2&gt;
  
  
  Metrics I Think Teams Ignore Too Often
&lt;/h2&gt;

&lt;p&gt;I don't think these replace &lt;a href="https://dora.dev/guides/dora-metrics/" rel="noopener noreferrer"&gt;DORA metrics&lt;/a&gt; or existing engineering metrics. I think they help explain the things happening underneath them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Repeated Review Comments
&lt;/h3&gt;

&lt;p&gt;Most teams eventually start seeing the same comments appear repeatedly in reviews.&lt;/p&gt;

&lt;p&gt;Things like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Missing test coverage&lt;/p&gt;

&lt;p&gt;Validation missing&lt;/p&gt;

&lt;p&gt;Logging not updated&lt;/p&gt;

&lt;p&gt;Missing null handling&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If reviewers repeatedly ask for the same fixes, there is usually something deeper happening. It often means team standards are unclear, patterns are not consistently enforced, or reviewers are spending time doing repetitive work that could probably be automated.&lt;/p&gt;

&lt;p&gt;Over time this also creates review fatigue because developers and reviewers start seeing the same discussions repeatedly.&lt;/p&gt;




&lt;h3&gt;
  
  
  Resolution Rate
&lt;/h3&gt;

&lt;p&gt;This was one of the more interesting things I started thinking about.&lt;/p&gt;

&lt;p&gt;Detecting issues isn't necessarily difficult. Most tools can generate findings and suggestions. The more important question is whether developers actually resolve them.&lt;/p&gt;

&lt;p&gt;Let's imagine your team detected 150 review findings this month. That initially sounds useful.&lt;/p&gt;

&lt;p&gt;But then imagine that only 50 of those findings actually got resolved.&lt;/p&gt;

&lt;p&gt;Now the discussion changes. Instead of asking how many issues were found, you start asking whether developers trust the findings enough to act on them. If suggestions consistently get ignored, then the issue may not be lack of detection. The issue might be noise.&lt;/p&gt;




&lt;h3&gt;
  
  
  Average Findings Per Pull Request
&lt;/h3&gt;

&lt;p&gt;This metric becomes interesting when you stop looking at it as a fixed number and start looking at trends.&lt;/p&gt;

&lt;p&gt;Let's say your average findings per pull request increased from &lt;em&gt;1.4&lt;/em&gt; to &lt;em&gt;4.8&lt;/em&gt; over a few months.&lt;/p&gt;

&lt;p&gt;That increase by itself doesn't automatically mean quality became worse.&lt;/p&gt;

&lt;p&gt;Maybe AI-generated code started becoming part of the workflow. Maybe more developers joined the project. Maybe complexity increased as new services were added.&lt;/p&gt;

&lt;p&gt;The actual number isn't usually the important part. The trend and the reasons behind it tend to reveal much more.&lt;/p&gt;




&lt;h3&gt;
  
  
  Critical Findings Across Repositories
&lt;/h3&gt;

&lt;p&gt;Some issues never fail CI and never break builds.&lt;/p&gt;

&lt;p&gt;Examples might include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Missing authorization checks&lt;/li&gt;
&lt;li&gt;Dependency-related risks&lt;/li&gt;
&lt;li&gt;Missing audit logging&lt;/li&gt;
&lt;li&gt;Breaking changes in shared services&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you see one isolated issue, it may not look important.&lt;/p&gt;

&lt;p&gt;But if similar issues repeatedly appear across repositories and teams, they stop feeling like isolated bugs. At that point they start looking more like process problems or architectural patterns that need attention.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Made Me Think About This
&lt;/h2&gt;

&lt;p&gt;Recently I was reading about &lt;a href="https://www.qodo.ai/blog/introducing-findings-page/" rel="noopener noreferrer"&gt;Qodo's Findings page&lt;/a&gt; and the idea behind it caught my attention.&lt;/p&gt;

&lt;p&gt;Most review feedback today lives inside pull requests. Someone opens a PR, reviewers leave comments, fixes get pushed, and eventually the pull request gets merged. After that, the conversation mostly disappears.&lt;/p&gt;

&lt;p&gt;The problem with that workflow is that patterns disappear too.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://www.qodo.ai/blog/introducing-findings-page/" rel="noopener noreferrer"&gt;Findings page&lt;/a&gt; tries to look across repositories and over longer periods of time by surfacing things like recurring findings, critical issues, resolution trends, and repeated review patterns.&lt;/p&gt;

&lt;p&gt;What I found interesting wasn't really the feature itself. It was the way it changes the perspective.&lt;/p&gt;

&lt;p&gt;If the same validation issue appears in thirty pull requests over two months, that no longer feels like an individual PR issue. It starts feeling like a signal that something larger is happening in the team's workflow.&lt;/p&gt;

&lt;p&gt;You can read more about monitoing organization-wide pull request findings here: &lt;a href="https://docs.qodo.ai/governance/view-all-findings-in-organization" rel="noopener noreferrer"&gt;https://docs.qodo.ai/governance/view-all-findings-in-organization&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  A Practical Example
&lt;/h2&gt;

&lt;p&gt;Let's imagine your team created 150 pull requests over the last month.&lt;/p&gt;

&lt;p&gt;The dashboard initially looks healthy because review time is improving, deployment frequency has increased, and pull requests are moving smoothly.&lt;/p&gt;

&lt;p&gt;But when you start looking deeper, you notice that 42 pull requests had missing test coverage, 28 repeated similar validation problems, and dependency-related risks kept appearing across multiple repositories.&lt;/p&gt;

&lt;p&gt;The conversation naturally becomes more useful because people stop asking why reviews are slow and start asking why the same problems continue appearing repeatedly.&lt;/p&gt;

&lt;p&gt;That usually leads to more meaningful improvements because now the focus shifts from speed alone toward improving the development process itself.&lt;/p&gt;




&lt;h2&gt;
  
  
  📚 Want to Read More?
&lt;/h2&gt;

&lt;p&gt;If you want to explore this area further, &lt;a href="//qodo.ai"&gt;Qodo&lt;/a&gt; has a &lt;a href="https://www.qodo.ai/academy/" rel="noopener noreferrer"&gt;learning hub&lt;/a&gt; with a few useful resources around AI-assisted review workflows and code quality.&lt;/p&gt;

&lt;p&gt;Some good starting points are:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.qodo.ai/academy/ai-code-review/" rel="noopener noreferrer"&gt;What is AI Code Review&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
A good introduction to how AI review works and the kinds of problems it tries to catch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.qodo.ai/academy/ai-generated-code-in-enterprise/" rel="noopener noreferrer"&gt;Reviewing AI-generated Code&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
Covers common patterns and mistakes teams are seeing as AI-generated code becomes more common.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.qodo.ai/academy/ai-code-review-tools-comparison-and-benchmarks/" rel="noopener noreferrer"&gt;AI Code Review Tools Comparison&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
Useful if you want to understand how different approaches and tools compare.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Metrics like deployment frequency and lead time still matter and they will continue to matter. But they don't always explain why teams repeatedly run into certain problems.&lt;/p&gt;

&lt;p&gt;As development teams generate more code and AI continues increasing review volume, understanding review quality probably becomes more important too.&lt;/p&gt;

&lt;p&gt;Questions around recurring findings, issue resolution, and repeated patterns often tell a more complete story than review speed alone because they reveal the hidden work that teams keep paying for repeatedly.&lt;/p&gt;

&lt;p&gt;A fast pull request is useful, but a healthy review process is usually much more valuable over time.&lt;/p&gt;




&lt;h2&gt;
  
  
  Thank You!!🙏
&lt;/h2&gt;

&lt;p&gt;Thank you for reading this far. If you find this article useful, please like and share this article. Someone could find it useful too.💖&lt;/p&gt;

&lt;p&gt;Connect with me on &lt;a href="https://x.com/kiran__a__n" rel="noopener noreferrer"&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://github.com/Kiran1689" rel="noopener noreferrer"&gt;&lt;strong&gt;GitHub&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/kiran-a-n" rel="noopener noreferrer"&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag__user ltag__user__id__1204850"&gt;
    &lt;a href="/dev_kiran" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=150,height=150,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1204850%2F1873cf6a-e8a7-4d43-9af8-296ac0506b3a.jpg" alt="dev_kiran image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/dev_kiran"&gt;Kiran Naragund&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/dev_kiran"&gt;Tech Writer and Moderator @DEV ✦ Senior Software Engineer ✦ Open-Source Contributor ✦ Email for Collabs :)&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;
 

</description>
      <category>codenewbie</category>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>AI Can Generate Code Faster. The Bigger Challenge Is Reviewing It 😐</title>
      <dc:creator>Kiran Naragund</dc:creator>
      <pubDate>Sat, 27 Jun 2026 18:46:30 +0000</pubDate>
      <link>https://dev.to/dev_kiran/ai-can-generate-code-faster-the-bigger-challenge-is-reviewing-it-1edf</link>
      <guid>https://dev.to/dev_kiran/ai-can-generate-code-faster-the-bigger-challenge-is-reviewing-it-1edf</guid>
      <description>&lt;p&gt;Hello Devs 👋&lt;/p&gt;

&lt;p&gt;AI coding assistants have changed the way many teams build software. Tasks like generating components, creating tests, writing boilerplate, or handling repetitive refactors can now happen in minutes instead of hours.&lt;/p&gt;

&lt;p&gt;The productivity gain is real and that part is easy to notice.&lt;/p&gt;

&lt;p&gt;What becomes interesting after using these tools for a while is that a different bottleneck starts appearing. Code generation becomes faster, but the review process often stays the same.&lt;/p&gt;

&lt;p&gt;Teams can generate hundreds of lines of code within minutes, but someone still has to answer important questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does this actually solve the requirement?&lt;/li&gt;
&lt;li&gt;Are edge cases covered?&lt;/li&gt;
&lt;li&gt;Will this introduce side effects?&lt;/li&gt;
&lt;li&gt;Does it align with existing patterns?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The speed of writing code has changed. The need for confidence has not.&lt;/p&gt;

&lt;p&gt;That is where I think the conversation around AI-assisted development is starting to shift.&lt;/p&gt;

&lt;p&gt;The challenge is becoming less about generating code and more about making sure the generated code is actually safe to ship.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem With Reviewing AI-Generated Code Like Regular Code
&lt;/h2&gt;

&lt;p&gt;Imagine asking an AI coding assistant to implement coupon validation for premium users.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Add coupon validation for premium users and create tests
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;A few seconds later you get:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;isPremium&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
   &lt;span class="nf"&gt;applyCoupon&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Nothing immediately looks wrong. The code is clean, there are no syntax issues, tests may pass, and the implementation appears complete.&lt;/p&gt;

&lt;p&gt;But pull request reviews usually go beyond reading diffs.&lt;/p&gt;

&lt;p&gt;Reviewers start asking questions such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What happens if the coupon has expired?&lt;/li&gt;
&lt;li&gt;Does this affect payment calculations?&lt;/li&gt;
&lt;li&gt;Should audit logs be updated?&lt;/li&gt;
&lt;li&gt;Are there services depending on this behavior?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where AI-generated code becomes interesting.&lt;/p&gt;

&lt;p&gt;It can often be functionally correct while still missing important implementation details. Research around larger AI-generated projects has also shown that functional correctness does not necessarily translate into maintainable system design. Teams still encounter duplicated logic, complexity growth, weak exception handling, and architectural inconsistencies.&lt;/p&gt;

&lt;p&gt;Eventually humans catch these issues.&lt;/p&gt;

&lt;p&gt;The question becomes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can we catch them earlier?&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  A Different Workflow: Cursor Builds, &lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt; Reviews
&lt;/h2&gt;

&lt;p&gt;One thing I found interesting is thinking about AI code generation and AI review as two separate responsibilities.&lt;/p&gt;

&lt;p&gt;Instead of treating generation and validation as the same problem, &lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt; positions itself as a quality layer across the development workflow.&lt;/p&gt;

&lt;p&gt;The process becomes something like:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Generate → Review → Push → Review Again → Ship&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Rather than:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Generate → Push → Hope the PR catches everything&lt;/strong&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  Step 1: Feed standards before code gets generated
&lt;/h3&gt;

&lt;p&gt;AI assistants work from context. If they do not know your architecture patterns, naming conventions, or domain rules, they fall back to generic assumptions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt; introduces a shared rule system(&lt;a href="https://www.qodo.ai/blog/how-i-use-qodos-agent-skills-to-auto-fix-issues-in-pull-requests/" rel="noopener noreferrer"&gt;agent-skills&lt;/a&gt;) that can provide those standards before generation starts. The same rules used later in reviews can also guide code generation itself. That means expectations stay consistent throughout the workflow instead of changing between development and review.&lt;/p&gt;


&lt;h3&gt;
  
  
  Step 2: Review locally before code leaves the IDE
&lt;/h3&gt;

&lt;p&gt;Most review feedback arrives after a pull request is opened.&lt;/p&gt;

&lt;p&gt;By then developers have often switched context and mentally moved on from the implementation.&lt;/p&gt;

&lt;p&gt;One thing &lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt; does differently is shifting review earlier into development itself. Local changes can be reviewed directly inside the IDE before they ever reach a repository.&lt;/p&gt;

&lt;p&gt;That means issues such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Missing tests&lt;/li&gt;
&lt;li&gt;Duplicated logic&lt;/li&gt;
&lt;li&gt;Potential bugs&lt;/li&gt;
&lt;li&gt;Violations of team standards&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;can surface while the implementation is still fresh in your head. &lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt; describes this as a shift-left review approach where quality checks happen before PR discussions even begin.&lt;/p&gt;


&lt;h3&gt;
  
  
  Step 3: Review pull requests with full context
&lt;/h3&gt;

&lt;p&gt;Traditional PR reviews usually focus on changed lines.&lt;/p&gt;

&lt;p&gt;The challenge is that code changes rarely live in isolation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt;'s review system attempts to include broader context such as repository history, related code, dependencies, and organizational standards when evaluating a pull request. Multiple review agents then focus on different concerns like duplicated logic, breaking changes, critical bugs, and rule enforcement.&lt;/p&gt;

&lt;p&gt;That changes the type of feedback you receive.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Variable naming could improve&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You may get something closer to:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This update changes payment behavior but related audit handling appears missing&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The feedback becomes more focused on intent and impact rather than surface-level observations.&lt;/p&gt;


&lt;h2&gt;
  
  
  AI Review Is Not Replacing Human Review
&lt;/h2&gt;

&lt;p&gt;I do not think AI review replaces engineers.&lt;/p&gt;

&lt;p&gt;Human reviewers still understand business decisions, architecture trade-offs, and product context in ways AI systems currently struggle with.&lt;/p&gt;

&lt;p&gt;Where AI review becomes useful is reducing repetitive work and helping teams focus attention where it matters.&lt;/p&gt;

&lt;p&gt;It can surface missing pieces, highlight risks, and point out areas worth investigating.&lt;/p&gt;

&lt;p&gt;The role feels less like replacing code review and more like adding another layer of verification.&lt;/p&gt;


&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;AI has already changed how quickly code gets written.&lt;/p&gt;

&lt;p&gt;The next challenge is making sure quality scales with that speed.&lt;/p&gt;

&lt;p&gt;What stood out to me is that &lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt; is not trying to become another code generator. The idea seems closer to becoming a quality layer that sits alongside development and review workflows.&lt;/p&gt;

&lt;p&gt;Cursor builds.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt; reviews.&lt;/p&gt;

&lt;p&gt;That separation actually feels natural.&lt;/p&gt;

&lt;p&gt;Because as teams generate more code with AI, confidence in what gets shipped becomes just as important as speed.&lt;/p&gt;
&lt;h2&gt;
  
  
  Resources &amp;amp; Getting Started
&lt;/h2&gt;

&lt;p&gt;If you want to explore the workflow further, here are a few useful resources from Qodo:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Get started with Qodo:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo Platform&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Documentation and setup guides:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://docs.qodo.ai/" rel="noopener noreferrer"&gt;Qodo Documentation&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Thank You!!🙏
&lt;/h2&gt;

&lt;p&gt;Thank you for reading this far. If you find this article useful, please like and share this article. Someone could find it useful too.💖&lt;/p&gt;

&lt;p&gt;Connect with me on &lt;a href="https://x.com/kiran__a__n" rel="noopener noreferrer"&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://github.com/Kiran1689" rel="noopener noreferrer"&gt;&lt;strong&gt;GitHub&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/kiran-a-n" rel="noopener noreferrer"&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag__user ltag__user__id__1204850"&gt;
    &lt;a href="/dev_kiran" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=150,height=150,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1204850%2F1873cf6a-e8a7-4d43-9af8-296ac0506b3a.jpg" alt="dev_kiran image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/dev_kiran"&gt;Kiran Naragund&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/dev_kiran"&gt;Tech Writer and Moderator @DEV ✦ Senior Software Engineer ✦ Open-Source Contributor ✦ Email for Collabs :)&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;



</description>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>Best AI Code Review Tools for Catching Breaking Changes 🔥</title>
      <dc:creator>Kiran Naragund</dc:creator>
      <pubDate>Mon, 22 Jun 2026 19:51:45 +0000</pubDate>
      <link>https://dev.to/dev_kiran/best-ai-code-review-tools-for-catching-breaking-changes-51g2</link>
      <guid>https://dev.to/dev_kiran/best-ai-code-review-tools-for-catching-breaking-changes-51g2</guid>
      <description>&lt;p&gt;Hello Devs 👋&lt;/p&gt;

&lt;p&gt;Most code review tools are good at finding syntax problems, style issues, and missing test cases. The harder problem is finding changes that look harmless in a pull request but later break another service, API consumer, or application.&lt;/p&gt;

&lt;p&gt;A renamed field, a modified function signature, or a small schema change can easily pass review. The code itself still works, but the impact shows up after deployment.&lt;/p&gt;

&lt;p&gt;This is where &lt;a href="https://www.qodo.ai/academy/ai-code-review/" rel="noopener noreferrer"&gt;AI code review&lt;/a&gt; becomes more interesting. Instead of looking only at the current file, some tools can understand context and identify changes that might affect other parts of the system.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚡ Quick Verdict
&lt;/h2&gt;

&lt;p&gt;&lt;a href="//qodo.ai"&gt;Qodo&lt;/a&gt; is the best &lt;a href="https://www.qodo.ai/academy/ai-code-review/" rel="noopener noreferrer"&gt;AI code review&lt;/a&gt; tool for catching breaking changes and reviewing high impact pull requests. It can fit naturally into GitHub workflows, analyze pull requests with more repository context, and focus on changes that can affect downstream systems.&lt;/p&gt;

&lt;p&gt;For teams dealing with shared APIs, AI generated code, or larger codebases with multiple dependencies, this becomes useful because the review is not only checking code quality. It is also asking whether the change can break something after deployment.&lt;/p&gt;

&lt;p&gt;That becomes even more useful when using a focused Breaking Changes agent that reviews things like API contracts, function signatures, interface changes, and backward compatibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually counts as a breaking change?
&lt;/h2&gt;

&lt;p&gt;Breaking changes usually happen when code changes affect consumers outside the current file or service.&lt;/p&gt;

&lt;p&gt;Common examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Function signature changes&lt;/li&gt;
&lt;li&gt;Removed or renamed fields&lt;/li&gt;
&lt;li&gt;API response updates&lt;/li&gt;
&lt;li&gt;Database schema modifications&lt;/li&gt;
&lt;li&gt;Shared library changes&lt;/li&gt;
&lt;li&gt;Interface updates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;Before:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;John&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;john@example.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;After:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fullName&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;John&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;john@example.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The change itself looks small and clean. During review, many developers would approve this without a second thought.&lt;/p&gt;

&lt;p&gt;The issue starts when another service still expects the &lt;code&gt;name&lt;/code&gt; field. The code passes review, deployments succeed, and then suddenly downstream systems start failing.&lt;/p&gt;

&lt;p&gt;Traditional review tools often miss this because there is no syntax problem. The problem is the impact of the change.&lt;/p&gt;
&lt;h2&gt;
  
  
  1. &lt;a href="//qodo.ai"&gt;Qodo&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="//qodo.ai"&gt;Qodo&lt;/a&gt; becomes interesting because it can focus on pull request reasoning instead of leaving generic comments on every file.&lt;/p&gt;

&lt;p&gt;Many AI review systems give suggestions around naming, formatting, or code cleanup. Those suggestions are useful, but they do not always help with production risks.&lt;/p&gt;

&lt;p&gt;A focused Breaking Changes agent could instead ask questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Did an API contract change?&lt;/li&gt;
&lt;li&gt;Did a function signature change?&lt;/li&gt;
&lt;li&gt;Did a shared interface change?&lt;/li&gt;
&lt;li&gt;Can dependent services fail?&lt;/li&gt;
&lt;li&gt;Is backward compatibility affected?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;Before:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;getUser&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;After:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;getUser&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;includeMetadata&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The code still works and tests might still pass.&lt;/p&gt;

&lt;p&gt;A Breaking Changes agent could still flag this and warn that consumers may still rely on the previous function signature. This creates more useful feedback because it focuses on downstream impact rather than only code style.&lt;/p&gt;

&lt;p&gt;Best for:&lt;/p&gt;

&lt;p&gt;Teams working with shared APIs, larger repositories, AI generated code, and pull requests where breaking downstream systems is a bigger concern.&lt;/p&gt;
&lt;h2&gt;
  
  
  2. &lt;a href="https://github.com/features/copilot" rel="noopener noreferrer"&gt;GitHub Copilot&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;GitHub Copilot has already become part of many developer workflows and provides pull request summaries, code explanations, and development assistance.&lt;/p&gt;

&lt;p&gt;It works well when teams want a broad coding assistant inside GitHub.&lt;/p&gt;

&lt;p&gt;The limitation for this use case is that Copilot focuses more on overall developer productivity than specialized breaking change analysis.&lt;/p&gt;

&lt;p&gt;Best for:&lt;/p&gt;

&lt;p&gt;Teams looking for general AI assistance and coding productivity.&lt;/p&gt;
&lt;h2&gt;
  
  
  3. &lt;a href="https://www.coderabbit.ai/" rel="noopener noreferrer"&gt;CodeRabbit&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;CodeRabbit automates pull request reviews and generates comments around changes.&lt;/p&gt;

&lt;p&gt;The setup process is simple and the pull request summaries can help teams handling a large number of reviews.&lt;/p&gt;

&lt;p&gt;Sometimes broader review systems generate many suggestions and comments. Over time developers can start ignoring reviews if too much low value feedback appears.&lt;/p&gt;

&lt;p&gt;Best for:&lt;/p&gt;

&lt;p&gt;Teams wanting automated pull request reviews with minimal setup.&lt;/p&gt;
&lt;h2&gt;
  
  
  4. &lt;a href="https://aws.amazon.com/codeguru/profiler/" rel="noopener noreferrer"&gt;Amazon CodeGuru Reviewer&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Amazon CodeGuru Reviewer focuses more on code quality, performance, and security recommendations.&lt;/p&gt;

&lt;p&gt;It can identify inefficient code patterns and suggest improvements across applications running in AWS environments.&lt;/p&gt;

&lt;p&gt;Its focus is usually broader code quality analysis rather than contract awareness or downstream impact detection.&lt;/p&gt;

&lt;p&gt;Best for:&lt;/p&gt;

&lt;p&gt;AWS teams focused on performance and quality improvements.&lt;/p&gt;
&lt;h2&gt;
  
  
  5. &lt;a href="https://www.sonarsource.com/products/sonarqube/" rel="noopener noreferrer"&gt;SonarQube&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;SonarQube has been a common choice for static analysis and code quality checks for years. With newer AI related capabilities and integrations, teams are using it alongside AI workflows.&lt;/p&gt;

&lt;p&gt;It performs well for identifying maintainability issues, security risks, and technical debt.&lt;/p&gt;

&lt;p&gt;Breaking changes can still require additional context because static analysis alone may not understand the impact across multiple systems.&lt;/p&gt;

&lt;p&gt;Best for:&lt;/p&gt;

&lt;p&gt;Teams that already rely heavily on code quality gates and static analysis.&lt;/p&gt;
&lt;h2&gt;
  
  
  6. &lt;a href="https://snyk.io/product/snyk-code/" rel="noopener noreferrer"&gt;Snyk Code&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Snyk Code mainly focuses on security analysis and code scanning.&lt;/p&gt;

&lt;p&gt;For development teams where security and review happen together, it can become part of the pull request workflow.&lt;/p&gt;

&lt;p&gt;While it is not designed specifically for breaking change detection, it helps catch risks that could eventually create larger issues in production.&lt;/p&gt;

&lt;p&gt;Best for:&lt;/p&gt;

&lt;p&gt;Security focused development teams.&lt;/p&gt;
&lt;h2&gt;
  
  
  Learning resources worth checking
&lt;/h2&gt;

&lt;p&gt;If you want to go deeper into AI code review, Qodo also has a &lt;a href="https://www.qodo.ai/academy/" rel="noopener noreferrer"&gt;learning hub&lt;/a&gt; with practical articles around the topic. Some useful pieces include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.qodo.ai/academy/ai-code-review/" rel="noopener noreferrer"&gt;What is AI code review&lt;/a&gt;, which explains how AI reviews work and what they can actually detect&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.qodo.ai/academy/ai-generated-code-in-enterprise/" rel="noopener noreferrer"&gt;Reviewing AI generated code&lt;/a&gt;, which covers common patterns and mistakes developers often miss&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These resources are useful if you want to understand not just the tools, but also the review process itself.&lt;/p&gt;
&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;When reviewing pull requests, the question is usually not whether AI can explain code better. The more useful question is whether the change can create problems after deployment.&lt;/p&gt;

&lt;p&gt;A tool that creates twenty comments is not always more valuable than a tool that catches one issue that could break production.&lt;/p&gt;

&lt;p&gt;For catching breaking changes, fewer and more relevant signals usually provide more value than large amounts of feedback.&lt;/p&gt;
&lt;h2&gt;
  
  
  Thank You!!🙏
&lt;/h2&gt;

&lt;p&gt;Thank you for reading this far. If you find this article useful, please like and share this article. Someone could find it useful too.💖&lt;/p&gt;

&lt;p&gt;Connect with me on &lt;a href="https://x.com/kiran__a__n" rel="noopener noreferrer"&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://github.com/Kiran1689" rel="noopener noreferrer"&gt;&lt;strong&gt;GitHub&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/kiran-a-n" rel="noopener noreferrer"&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag__user ltag__user__id__1204850"&gt;
    &lt;a href="/dev_kiran" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=150,height=150,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1204850%2F1873cf6a-e8a7-4d43-9af8-296ac0506b3a.jpg" alt="dev_kiran image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/dev_kiran"&gt;Kiran Naragund&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/dev_kiran"&gt;Tech Writer and Moderator @DEV ✦ Senior Software Engineer ✦ Open-Source Contributor ✦ Email for Collabs :)&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;



</description>
      <category>programming</category>
      <category>productivity</category>
      <category>ai</category>
      <category>tooling</category>
    </item>
    <item>
      <title>🔥7 Tools Every AI Agent Developer Should Know in 2026</title>
      <dc:creator>Kiran Naragund</dc:creator>
      <pubDate>Mon, 22 Jun 2026 06:38:55 +0000</pubDate>
      <link>https://dev.to/dev_kiran/7-tools-every-ai-agent-developer-should-know-in-2026-5471</link>
      <guid>https://dev.to/dev_kiran/7-tools-every-ai-agent-developer-should-know-in-2026-5471</guid>
      <description>&lt;p&gt;Hello Devs👋&lt;/p&gt;

&lt;p&gt;A year ago, most AI projects were glorified chatbots.&lt;/p&gt;

&lt;p&gt;Today, we're building agents that browse websites, execute workflows, analyze data, monitor systems, interact with SaaS products, and collaborate with humans.&lt;/p&gt;

&lt;p&gt;The challenge is no longer getting an LLM to answer questions. The challenge is giving AI agents reliable access to the real world.&lt;/p&gt;

&lt;p&gt;After experimenting with dozens of frameworks and platforms, I've found that successful AI agents usually rely on a small set of tools that solve very specific problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reasoning&lt;/li&gt;
&lt;li&gt;Memory&lt;/li&gt;
&lt;li&gt;Browser interaction&lt;/li&gt;
&lt;li&gt;Workflow orchestration&lt;/li&gt;
&lt;li&gt;Observability&lt;/li&gt;
&lt;li&gt;Knowledge retrieval&lt;/li&gt;
&lt;li&gt;Human collaboration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're building AI agents in 2026, these are seven tools worth knowing.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. &lt;a href="https://www.browseract.ai/Kiran" rel="noopener noreferrer"&gt;BrowserAct&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Most AI agents fail when they leave the comfort of APIs and enter the browser.&lt;/p&gt;

&lt;p&gt;Modern websites are full of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dynamic content&lt;/li&gt;
&lt;li&gt;Login flows&lt;/li&gt;
&lt;li&gt;CAPTCHA challenges&lt;/li&gt;
&lt;li&gt;Anti-bot systems&lt;/li&gt;
&lt;li&gt;Multi-step workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where BrowserAct becomes interesting.&lt;/p&gt;

&lt;p&gt;BrowserAct is a browser automation CLI built for AI agents. It gives agents real browser control, anti-detection browser environments, human handoff when automation gets stuck, parallel sessions that do not interfere with each other, and independent browser identities for multi-account workflows.&lt;/p&gt;

&lt;p&gt;Instead of simply opening pages and clicking buttons, it helps agents operate inside real-world browser environments while supporting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Anti-detection browser profiles&lt;/li&gt;
&lt;li&gt;Session management&lt;/li&gt;
&lt;li&gt;Human handoff&lt;/li&gt;
&lt;li&gt;Parallel browser tasks&lt;/li&gt;
&lt;li&gt;Multi-account isolation&lt;/li&gt;
&lt;li&gt;Reusable browser skills&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I tested a simple BrowserAct workflow locally first.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Installing BrowserAct:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uv tool &lt;span class="nb"&gt;install &lt;/span&gt;browser-act-cli &lt;span class="nt"&gt;--python&lt;/span&gt; 3.12
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fx7ezda0fyjr4q0jhhehk.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%2Fx7ezda0fyjr4q0jhhehk.png" alt="BrowserAct" width="800" height="424"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To run my local browser, I listed the available browser profiles.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;browser-act browser list-profiles
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fc7s9esn9q4w9vli5jiq2.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%2Fc7s9esn9q4w9vli5jiq2.png" alt="browser-act browser list-profiles" width="800" height="124"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I then created a browser using my existing Chrome profile.&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%2F5bildz3ut6chm35x36r7.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%2F5bildz3ut6chm35x36r7.png" alt="browser-act" width="800" height="101"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, Im going to extract the content from the website example.com&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;browser-act stealth-extract https://example.com &lt;span class="nt"&gt;--content-type&lt;/span&gt; markdown
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2F6za78wnbdyfhhceblotp.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%2F6za78wnbdyfhhceblotp.png" alt="browser-act stealth-extract" width="800" height="101"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Using BrowserAct with an AI Agent
&lt;/h3&gt;

&lt;p&gt;I'm using Codex as the agent runtime for this experiment.&lt;/p&gt;

&lt;p&gt;We can instruct the agent to use &lt;code&gt;browser-act&lt;/code&gt; whenever browser interaction is required, such as opening pages, clicking buttons, handling login flows, or extracting structured data.&lt;/p&gt;

&lt;p&gt;Here is my Agent prompt.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Set up BrowserAct &lt;span class="k"&gt;for &lt;/span&gt;me. Read the BrowserAct skill first: &lt;span class="o"&gt;[&lt;/span&gt;https://github.com/browser-act/skills/tree/main/browser-act]&lt;span class="o"&gt;(&lt;/span&gt;https://github.com/browser-act/skills/blob/main/browser-act/SKILL.md&lt;span class="o"&gt;)&lt;/span&gt;/SKILL.md Install or update the browser-act skill, &lt;span class="k"&gt;then &lt;/span&gt;verify it works. Use BrowserAct when I need an AI agent to browse, click, fill forms, handle login flows, solve CAPTCHAs, bypass bot detection, or extract structured data from websites. After setup, open this repository &lt;span class="k"&gt;in &lt;/span&gt;my browser: https://github.com/browser-act/skills If I am logged &lt;span class="k"&gt;in &lt;/span&gt;to GitHub, ask me whether you should star it &lt;span class="k"&gt;for &lt;/span&gt;me as a quick demo that browser interaction works. Only click the star &lt;span class="k"&gt;if &lt;/span&gt;I explicitly say yes.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Here is how the agent executed the workflow:&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%2F3wdgvvsxogkibjj6c96w.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%2F3wdgvvsxogkibjj6c96w.png" alt="browser-act" width="800" height="423"&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%2Fj9jz1gvjvurw9voec9hr.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%2Fj9jz1gvjvurw9voec9hr.png" alt="browser-act" width="799" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The agent successfully completed the task and starred the repository after receiving explicit confirmation.&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%2Ft9a9eayk3jb31zh1cszp.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%2Ft9a9eayk3jb31zh1cszp.png" alt="Agent" width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;While starring a repository is simple, the important part is that the agent successfully opened a real website, preserved browser state, interacted with UI elements, and completed an action inside an authenticated session.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  Real Use Case: Competitor Monitoring Agent
&lt;/h2&gt;

&lt;p&gt;Imagine building an agent that monitors competitor pricing across multiple ecommerce platforms.&lt;/p&gt;

&lt;p&gt;A simple scraper often breaks because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pages require login&lt;/li&gt;
&lt;li&gt;Content is dynamically rendered&lt;/li&gt;
&lt;li&gt;Risk-control systems trigger&lt;/li&gt;
&lt;li&gt;Browser fingerprints get flagged&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With BrowserAct, the workflow becomes:&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%2Fkr3ijwrir4w77jvqbd33.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%2Fkr3ijwrir4w77jvqbd33.png" alt="BrowserAct" width="323" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The key advantage is that browser identity, cookies, proxies, and session state remain isolated and reusable.&lt;/p&gt;
&lt;h3&gt;
  
  
  Real Use Case: Human Handoff
&lt;/h3&gt;

&lt;p&gt;Every automation eventually encounters a step that requires a human.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;QR code login&lt;/li&gt;
&lt;li&gt;SMS verification&lt;/li&gt;
&lt;li&gt;Enterprise SSO approval&lt;/li&gt;
&lt;li&gt;Security confirmation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most automation tools simply fail at this point.&lt;/p&gt;

&lt;p&gt;BrowserAct keeps the browser session alive and allows a human to complete the required action. Once verification is finished, the agent continues from the same session instead of restarting the workflow.&lt;/p&gt;

&lt;p&gt;This sounds simple, but it solves one of the most common production bottlenecks in browser-based agents.&lt;/p&gt;
&lt;h4&gt;
  
  
  Testing Human Handoff with an AI Agent
&lt;/h4&gt;

&lt;p&gt;To see how BrowserAct handles real interruptions, I tested the workflow using Codex as the AI agent runtime.&lt;/p&gt;

&lt;p&gt;The goal was simple: let the agent handle the login process automatically, pause when human input becomes necessary, and then continue from the same browser session.&lt;/p&gt;

&lt;p&gt;Here is the prompt I gave the agent:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use BrowserAct for this workflow.

Open:
https://practice.expandtesting.com/otp-login

Actions:

1. Launch BrowserAct
2. Open the OTP login page
3. Fill the email field with:
   practice@expandtesting.com
4. Continue the login flow
5. If OTP verification is required:

   - Preserve browser state
   - Pause execution
   - Ask me for the OTP code
   - Wait for my response

6. After I provide the OTP:
   - Resume from the same session
   - Complete login
   - Confirm success

Do not restart the browser session if human input is needed.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fm7wp8cg3x741vip3aalt.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%2Fm7wp8cg3x741vip3aalt.png" alt="Agent Prompt" width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Here is the Agent executions
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Agent creating a browser session called &lt;em&gt;expandtesting_otp_login&lt;/em&gt; for the execution&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%2Fr9zeg37raunkdbi064i5.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%2Fr9zeg37raunkdbi064i5.png" alt="_expandtesting_otp_login_ " width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The agent entered the email automatically and paused at the &lt;strong&gt;OTP&lt;/strong&gt; step while preserving the browser session.&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%2Fang4sxm7joxj0h8z5u4v.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%2Fang4sxm7joxj0h8z5u4v.png" alt="OTP" width="799" height="423"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After I provided the OTP, the agent resumed execution and completed authentication successfully.&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%2F80puxsgx81v4jw5e1iec.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%2F80puxsgx81v4jw5e1iec.png" alt="Success" width="798" height="179"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What stood out here was not the OTP itself.&lt;/p&gt;

&lt;p&gt;The interesting part was that the browser session remained active throughout the interruption. The workflow continued from the existing state instead of restarting the login process from the beginning.&lt;/p&gt;
&lt;h3&gt;
  
  
  Real Use Case: Multi-Agent Operations
&lt;/h3&gt;

&lt;p&gt;Suppose you're running:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Customer support monitoring&lt;/li&gt;
&lt;li&gt;Order review&lt;/li&gt;
&lt;li&gt;Feedback analysis&lt;/li&gt;
&lt;li&gt;Dashboard reporting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of forcing everything into one browser session, BrowserAct allows each task to run independently while maintaining the required account state.&lt;/p&gt;

&lt;p&gt;To understand how BrowserAct handles parallel workflows, I created multiple independent browser sessions locally.&lt;/p&gt;

&lt;p&gt;Start separate browser sessions:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;browser-act &lt;span class="nt"&gt;--session&lt;/span&gt; reviews browser open chrome_local_102863481715294440 https://reddit.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;browser-act &lt;span class="nt"&gt;--session&lt;/span&gt; ops browser open chrome_local_102863481715294440 https://status.openai.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;browser-act &lt;span class="nt"&gt;--session&lt;/span&gt; dev-community browser open chrome_local_102863481715294440 https://dev.to
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Checking active browser sessions:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;browser-act session list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Output:&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%2Ffu0di2157n36qy861j3w.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%2Ffu0di2157n36qy861j3w.png" alt="browser-act session list" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The active session list showed that each workflow was isolated even though the browser profile remained shared.&lt;/p&gt;

&lt;p&gt;This separation matters for long-running AI systems because browser state, cookies, and task execution stay independent and avoid cross-workflow interference.&lt;/p&gt;

&lt;p&gt;For teams building agents that interact heavily with web applications, BrowserAct fills a gap that traditional browser automation tools were never designed to solve.&lt;/p&gt;

&lt;p&gt;GitHub Repo:&lt;br&gt;
&lt;strong&gt;&lt;a href="https://github.com/browser-act/skills" rel="noopener noreferrer"&gt;https://github.com/browser-act/skills&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  2. LangGraph by LangChain
&lt;/h2&gt;

&lt;p&gt;Reasoning alone is rarely enough for production agents.&lt;/p&gt;

&lt;p&gt;As agents become more capable, you quickly run into problems like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multi-step workflows&lt;/li&gt;
&lt;li&gt;Long-running tasks&lt;/li&gt;
&lt;li&gt;Human approvals&lt;/li&gt;
&lt;li&gt;State persistence&lt;/li&gt;
&lt;li&gt;Multi-agent coordination&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where LangGraph becomes useful.&lt;/p&gt;

&lt;p&gt;LangGraph is designed specifically for building stateful AI agents that operate through graph-based workflows rather than simple request-response loops.&lt;/p&gt;

&lt;p&gt;Instead of forcing everything into a single prompt, it allows developers to define controlled execution paths while still preserving agent flexibility.&lt;/p&gt;

&lt;p&gt;Key capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stateful workflows&lt;/li&gt;
&lt;li&gt;Human-in-the-loop checkpoints&lt;/li&gt;
&lt;li&gt;Durable execution&lt;/li&gt;
&lt;li&gt;Multi-agent coordination&lt;/li&gt;
&lt;li&gt;Retry and recovery handling&lt;/li&gt;
&lt;li&gt;Streaming execution&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Real Use Case: Customer Support Agent
&lt;/h3&gt;

&lt;p&gt;Imagine a support agent handling enterprise tickets:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read ticket details&lt;/li&gt;
&lt;li&gt;Retrieve account information&lt;/li&gt;
&lt;li&gt;Check documentation&lt;/li&gt;
&lt;li&gt;Escalate complex issues&lt;/li&gt;
&lt;li&gt;Request human approval when needed&lt;/li&gt;
&lt;li&gt;Return a final response&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without orchestration, these workflows become messy very quickly.&lt;/p&gt;

&lt;p&gt;LangGraph helps structure the decision flow while preserving memory and state.&lt;/p&gt;

&lt;p&gt;Repository / Docs:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.langchain.com/oss/python/langgraph/overview" rel="noopener noreferrer"&gt;&lt;strong&gt;https://docs.langchain.com/oss/python/langgraph/overview&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  3. Mem0 by Mem0
&lt;/h2&gt;

&lt;p&gt;Most agents have terrible memory.&lt;/p&gt;

&lt;p&gt;They either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Forget previous interactions&lt;/li&gt;
&lt;li&gt;Stuff everything into context windows&lt;/li&gt;
&lt;li&gt;Waste tokens repeatedly&lt;/li&gt;
&lt;li&gt;Lose long-term user preferences&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mem0 solves this problem by acting as a persistent memory layer for AI agents.&lt;/p&gt;

&lt;p&gt;Rather than replaying full conversations every time, it extracts useful information, stores it, and retrieves only what matters.&lt;/p&gt;

&lt;p&gt;Key capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Persistent long-term memory&lt;/li&gt;
&lt;li&gt;Automatic memory extraction&lt;/li&gt;
&lt;li&gt;Memory compression&lt;/li&gt;
&lt;li&gt;Cross-session recall&lt;/li&gt;
&lt;li&gt;User preference tracking&lt;/li&gt;
&lt;li&gt;Reduced token usage&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Real Use Case: AI Personal Assistant
&lt;/h3&gt;

&lt;p&gt;Imagine an assistant helping a user over several months.&lt;/p&gt;

&lt;p&gt;Instead of repeatedly asking:&lt;/p&gt;

&lt;p&gt;"What programming language do you use?"&lt;br&gt;
"What projects are you working on?"&lt;br&gt;
"What are your preferences?"&lt;/p&gt;

&lt;p&gt;The agent remembers previous interactions and becomes more useful over time.&lt;/p&gt;

&lt;p&gt;This makes interactions feel less like chatting with a stateless model and more like working with an actual assistant.&lt;/p&gt;


&lt;h2&gt;
  
  
  4. n8n
&lt;/h2&gt;

&lt;p&gt;Building an AI agent is one thing.&lt;/p&gt;

&lt;p&gt;Connecting it to the rest of your stack is a completely different challenge.&lt;/p&gt;

&lt;p&gt;Agents rarely operate in isolation. They usually need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Trigger workflows&lt;/li&gt;
&lt;li&gt;Update databases&lt;/li&gt;
&lt;li&gt;Send emails&lt;/li&gt;
&lt;li&gt;Connect with SaaS products&lt;/li&gt;
&lt;li&gt;Call APIs&lt;/li&gt;
&lt;li&gt;Execute scheduled tasks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where n8n becomes useful.&lt;/p&gt;

&lt;p&gt;n8n is a workflow automation platform that helps AI agents interact with external systems through visual workflows and programmable logic.&lt;/p&gt;

&lt;p&gt;Instead of writing custom integrations for every service, developers can connect agents to hundreds of tools while keeping workflows manageable.&lt;/p&gt;

&lt;p&gt;Key capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Visual workflow builder&lt;/li&gt;
&lt;li&gt;AI agent integrations&lt;/li&gt;
&lt;li&gt;Self-hosted deployment&lt;/li&gt;
&lt;li&gt;API connectivity&lt;/li&gt;
&lt;li&gt;Scheduled workflows&lt;/li&gt;
&lt;li&gt;Large integration ecosystem&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Real Use Case: Lead Qualification Agent
&lt;/h3&gt;

&lt;p&gt;Imagine an AI sales agent processing incoming leads:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Read lead information&lt;/li&gt;
&lt;li&gt;Analyze qualification criteria&lt;/li&gt;
&lt;li&gt;Update CRM records&lt;/li&gt;
&lt;li&gt;Send personalized emails&lt;/li&gt;
&lt;li&gt;Create support tickets&lt;/li&gt;
&lt;li&gt;Notify sales teams&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Without workflow orchestration, every integration requires additional code and maintenance.&lt;/p&gt;

&lt;p&gt;n8n helps coordinate these actions while keeping the workflow transparent and easy to modify.&lt;/p&gt;

&lt;p&gt;Link / Docs:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://n8n.io/" rel="noopener noreferrer"&gt;&lt;strong&gt;https://n8n.io/&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  5. Langfuse
&lt;/h2&gt;

&lt;p&gt;AI agents become difficult to debug once they move into production.&lt;/p&gt;

&lt;p&gt;When something goes wrong, questions appear quickly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why did the agent fail?&lt;/li&gt;
&lt;li&gt;Which prompt caused the issue?&lt;/li&gt;
&lt;li&gt;Which tool produced incorrect output?&lt;/li&gt;
&lt;li&gt;Why did token usage suddenly increase?&lt;/li&gt;
&lt;li&gt;Why did response quality drop?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where Langfuse becomes useful.&lt;/p&gt;

&lt;p&gt;Langfuse is an observability platform designed for LLM applications and AI agents.&lt;/p&gt;

&lt;p&gt;Instead of guessing what happened during execution, developers can inspect traces, prompts, model outputs, evaluations, and performance metrics.&lt;/p&gt;

&lt;p&gt;Key capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Request tracing&lt;/li&gt;
&lt;li&gt;Prompt debugging&lt;/li&gt;
&lt;li&gt;Agent evaluation&lt;/li&gt;
&lt;li&gt;Cost monitoring&lt;/li&gt;
&lt;li&gt;Performance analytics&lt;/li&gt;
&lt;li&gt;Session replay&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Real Use Case: Production Agent Debugging
&lt;/h3&gt;

&lt;p&gt;Imagine a customer support agent that suddenly starts returning poor responses.&lt;/p&gt;

&lt;p&gt;A typical debugging workflow might look like:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open execution traces&lt;/li&gt;
&lt;li&gt;Inspect prompts&lt;/li&gt;
&lt;li&gt;Review tool outputs&lt;/li&gt;
&lt;li&gt;Analyze model decisions&lt;/li&gt;
&lt;li&gt;Compare successful runs&lt;/li&gt;
&lt;li&gt;Identify failure patterns&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Without observability, debugging often becomes trial and error.&lt;/p&gt;

&lt;p&gt;Langfuse helps developers understand what actually happened during execution.&lt;/p&gt;

&lt;p&gt;Link / Docs:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://langfuse.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;https://langfuse.com&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  6. Qdrant
&lt;/h2&gt;

&lt;p&gt;Many AI agents become significantly more useful when they can access external knowledge.&lt;/p&gt;

&lt;p&gt;The challenge is that agents often need to work with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Documentation&lt;/li&gt;
&lt;li&gt;Internal knowledge bases&lt;/li&gt;
&lt;li&gt;PDFs&lt;/li&gt;
&lt;li&gt;Support tickets&lt;/li&gt;
&lt;li&gt;Research data&lt;/li&gt;
&lt;li&gt;Large collections of text&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where Qdrant becomes useful.&lt;/p&gt;

&lt;p&gt;Qdrant is a vector database designed for semantic search and retrieval workflows.&lt;/p&gt;

&lt;p&gt;Instead of relying only on the model's built-in knowledge, developers can store embeddings and retrieve relevant information dynamically.&lt;/p&gt;

&lt;p&gt;Key capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vector search&lt;/li&gt;
&lt;li&gt;Hybrid search&lt;/li&gt;
&lt;li&gt;Metadata filtering&lt;/li&gt;
&lt;li&gt;Scalable retrieval&lt;/li&gt;
&lt;li&gt;Fast indexing&lt;/li&gt;
&lt;li&gt;Production deployment support&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Real Use Case: Internal Knowledge Assistant
&lt;/h3&gt;

&lt;p&gt;Imagine building an AI assistant for a company.&lt;/p&gt;

&lt;p&gt;The workflow could look like:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;User asks a question&lt;/li&gt;
&lt;li&gt;Generate embeddings&lt;/li&gt;
&lt;li&gt;Search relevant documents&lt;/li&gt;
&lt;li&gt;Retrieve matching information&lt;/li&gt;
&lt;li&gt;Add context to the prompt&lt;/li&gt;
&lt;li&gt;Generate a final answer&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Without retrieval systems, the model depends only on what it already knows.&lt;/p&gt;

&lt;p&gt;Qdrant helps agents access updated information and organization-specific knowledge.&lt;/p&gt;

&lt;p&gt;Link / Docs:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://qdrant.tech/" rel="noopener noreferrer"&gt;&lt;strong&gt;https://qdrant.tech&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  7. HumanLayer
&lt;/h2&gt;

&lt;p&gt;No matter how capable AI agents become, some decisions still require human involvement.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Financial approvals&lt;/li&gt;
&lt;li&gt;Sensitive actions&lt;/li&gt;
&lt;li&gt;Escalations&lt;/li&gt;
&lt;li&gt;Security checks&lt;/li&gt;
&lt;li&gt;Compliance reviews&lt;/li&gt;
&lt;li&gt;Critical business decisions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where HumanLayer becomes useful.&lt;/p&gt;

&lt;p&gt;HumanLayer is designed to add human approval and collaboration workflows into AI agents.&lt;/p&gt;

&lt;p&gt;Instead of allowing agents to operate without oversight, developers can introduce checkpoints where humans review and approve actions before execution continues.&lt;/p&gt;

&lt;p&gt;Key capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Human approval workflows&lt;/li&gt;
&lt;li&gt;Slack integration&lt;/li&gt;
&lt;li&gt;Escalation handling&lt;/li&gt;
&lt;li&gt;Human checkpoints&lt;/li&gt;
&lt;li&gt;Agent collaboration&lt;/li&gt;
&lt;li&gt;Action gating&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Real Use Case: Financial Approval Agent
&lt;/h3&gt;

&lt;p&gt;Imagine an AI agent responsible for preparing payment requests:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Gather payment information&lt;/li&gt;
&lt;li&gt;Validate transaction details&lt;/li&gt;
&lt;li&gt;Generate recommendations&lt;/li&gt;
&lt;li&gt;Send approval request&lt;/li&gt;
&lt;li&gt;Wait for human confirmation&lt;/li&gt;
&lt;li&gt;Execute approved actions&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Without human collaboration layers, agents may perform actions that require oversight.&lt;/p&gt;

&lt;p&gt;HumanLayer helps agents safely involve people when decisions become sensitive.&lt;/p&gt;

&lt;p&gt;Link / Docs:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://humanlayer.dev/" rel="noopener noreferrer"&gt;&lt;strong&gt;https://humanlayer.dev&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Thank You!!🙏
&lt;/h2&gt;

&lt;p&gt;Thank you for reading this far. If you find this article useful, please like and share this article. Someone could find it useful too.💖&lt;/p&gt;

&lt;p&gt;Connect with me on &lt;a href="https://x.com/kiran__a__n" rel="noopener noreferrer"&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://github.com/Kiran1689" rel="noopener noreferrer"&gt;&lt;strong&gt;GitHub&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/kiran-a-n" rel="noopener noreferrer"&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag__user ltag__user__id__1204850"&gt;
    &lt;a href="/dev_kiran" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=150,height=150,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1204850%2F1873cf6a-e8a7-4d43-9af8-296ac0506b3a.jpg" alt="dev_kiran image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/dev_kiran"&gt;Kiran Naragund&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/dev_kiran"&gt;Tech Writer and Moderator @DEV ✦ Senior Software Engineer ✦ Open-Source Contributor ✦ Email for Collabs :)&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;



</description>
      <category>ai</category>
      <category>cli</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
