<?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: emre ordu</title>
    <description>The latest articles on DEV Community by emre ordu (@emre_ordu).</description>
    <link>https://dev.to/emre_ordu</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%2F4091265%2Ff1208f3f-4cff-4801-9107-c8b0bc7fc797.jpg</url>
      <title>DEV Community: emre ordu</title>
      <link>https://dev.to/emre_ordu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/emre_ordu"/>
    <language>en</language>
    <item>
      <title>I Built AgentCheck Because “The Coding Agent Said Done” Wasn’t Enough</title>
      <dc:creator>emre ordu</dc:creator>
      <pubDate>Sun, 23 Aug 2026 21:08:42 +0000</pubDate>
      <link>https://dev.to/emre_ordu/i-built-agentcheck-because-the-coding-agent-said-done-wasnt-enough-2c1p</link>
      <guid>https://dev.to/emre_ordu/i-built-agentcheck-because-the-coding-agent-said-done-wasnt-enough-2c1p</guid>
      <description>&lt;h1&gt;
  
  
  I Built AgentCheck Because “The Coding Agent Said Done” Wasn’t Enough
&lt;/h1&gt;

&lt;p&gt;AI coding agents are getting surprisingly good at writing code.&lt;/p&gt;

&lt;p&gt;I use them regularly, and they can handle increasingly large tasks: refactoring code, adding features, updating dependencies, modifying configuration, creating migrations, and touching files across an entire repository.&lt;/p&gt;

&lt;p&gt;But I kept running into the same problem after the agent finished:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;How do I independently verify what it actually changed?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The agent usually gives me a perfectly reasonable summary.&lt;/p&gt;

&lt;p&gt;Something like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Done.&lt;br&gt;&lt;br&gt;
Implemented the requested changes, updated the tests, and cleaned up the affected code.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Useful?&lt;/p&gt;

&lt;p&gt;Absolutely.&lt;/p&gt;

&lt;p&gt;Enough for me to commit without checking?&lt;/p&gt;

&lt;p&gt;Not really.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;AgentCheck&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem Happens After “Done”
&lt;/h2&gt;

&lt;p&gt;After a coding agent finishes a task, I still find myself manually checking things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which files actually changed?&lt;/li&gt;
&lt;li&gt;Were any files deleted?&lt;/li&gt;
&lt;li&gt;Did configuration change?&lt;/li&gt;
&lt;li&gt;Were dependencies added or updated?&lt;/li&gt;
&lt;li&gt;Was a database migration introduced?&lt;/li&gt;
&lt;li&gt;Did anything that looks like a secret appear?&lt;/li&gt;
&lt;li&gt;Were related tests changed?&lt;/li&gt;
&lt;li&gt;Is the overall change set larger or riskier than expected?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Of course, Git already gives us the raw information.&lt;/p&gt;

&lt;p&gt;I can run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git status
git diff
git diff &lt;span class="nt"&gt;--stat&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then inspect individual files.&lt;/p&gt;

&lt;p&gt;And I still do that.&lt;/p&gt;

&lt;p&gt;But once coding agents become part of your normal workflow, repeating the same verification process after every task starts to feel like something that should be structured.&lt;/p&gt;

&lt;p&gt;That was the idea behind AgentCheck.&lt;/p&gt;




&lt;h2&gt;
  
  
  What AgentCheck Does
&lt;/h2&gt;

&lt;p&gt;AgentCheck creates a trusted checkpoint &lt;strong&gt;before&lt;/strong&gt; your coding agent starts working.&lt;/p&gt;

&lt;p&gt;Then, after the agent finishes, it compares the current Git-visible repository state with that checkpoint.&lt;/p&gt;

&lt;p&gt;The basic workflow is deliberately small:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;agentcheck start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then let your coding agent work.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Codex&lt;/li&gt;
&lt;li&gt;Claude Code&lt;/li&gt;
&lt;li&gt;Cursor&lt;/li&gt;
&lt;li&gt;another AI-assisted coding tool&lt;/li&gt;
&lt;li&gt;or technically even a human&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When the work is finished:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;agentcheck
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;AgentCheck then produces four sections:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Changes
Findings
Risk
Verdict
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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;AgentCheck

Changes
────────────────────────────
2 modified
1 created
0 deleted
0 renamed

A  packages/example/new-file.ts
M  package.json
M  src/example.ts

Findings
────────────────────────────
⚠ Dependency change detected.

Risk
────────────────────────────
Score: 3 — MEDIUM

Verdict
────────────────────────────
REVIEW RECOMMENDED
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important part is that this result comes from the repository state itself — not from the coding agent's explanation of what it believes it changed.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Not Just Ask Another LLM to Review It?
&lt;/h2&gt;

&lt;p&gt;This was one of the main design decisions.&lt;/p&gt;

&lt;p&gt;There are already many AI code-review tools, and some of them are very capable.&lt;/p&gt;

&lt;p&gt;But that wasn't the problem I wanted AgentCheck to solve.&lt;/p&gt;

&lt;p&gt;If one LLM changes my repository, I didn't necessarily want the verification layer to be:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LLM changes code
      ↓
another LLM reviews the first LLM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I wanted a smaller and more predictable layer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Coding agent
      ↓
Actual Git-visible changes
      ↓
Deterministic checks
      ↓
Human review
      ↓
Commit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So AgentCheck does &lt;strong&gt;not&lt;/strong&gt; use an LLM for its analysis.&lt;/p&gt;

&lt;p&gt;The checks are deterministic.&lt;/p&gt;

&lt;p&gt;Given the same repository state, AgentCheck should produce the same result.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Does It Currently Look For?
&lt;/h2&gt;

&lt;p&gt;The first public version intentionally keeps the scope limited.&lt;/p&gt;

&lt;p&gt;AgentCheck can currently highlight things such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;database migration changes&lt;/li&gt;
&lt;li&gt;production configuration changes&lt;/li&gt;
&lt;li&gt;dependency changes&lt;/li&gt;
&lt;li&gt;deleted files&lt;/li&gt;
&lt;li&gt;CI/CD-related changes&lt;/li&gt;
&lt;li&gt;unusually large change sets&lt;/li&gt;
&lt;li&gt;possible secrets&lt;/li&gt;
&lt;li&gt;situations where production code changed but related tests do not appear to have changed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These signals feed into a transparent risk score and a restrained verdict.&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;0–2   → LOW
3–6   → MEDIUM
7+    → HIGH
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The goal is not to say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This code is correct.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;AgentCheck cannot know that.&lt;/p&gt;

&lt;p&gt;The goal is closer to:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;These are the parts of this change set that probably deserve your attention before you commit.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  A Checkpoint Without Touching Your Real Git Index
&lt;/h2&gt;

&lt;p&gt;One technical requirement was particularly important to me:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AgentCheck should not modify the developer's actual Git index, working tree, or history.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The checkpoint implementation uses Git's tree/index model with a temporary alternate index.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Current repository state
        ↓
temporary Git index
        ↓
git write-tree
        ↓
checkpoint tree
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Later, AgentCheck creates another representation of the current state and compares:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;checkpoint tree
        ↓
       diff
        ↑
current tree
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This means the developer can already have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;staged changes&lt;/li&gt;
&lt;li&gt;unstaged changes&lt;/li&gt;
&lt;li&gt;tracked deletions&lt;/li&gt;
&lt;li&gt;non-ignored untracked files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;when the checkpoint is created.&lt;/p&gt;

&lt;p&gt;Those pre-existing changes become part of the baseline rather than being incorrectly attributed to the coding agent.&lt;/p&gt;

&lt;p&gt;The real Git index remains untouched.&lt;/p&gt;




&lt;h2&gt;
  
  
  Local-First Was Another Requirement
&lt;/h2&gt;

&lt;p&gt;AgentCheck currently has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;no backend&lt;/li&gt;
&lt;li&gt;no account&lt;/li&gt;
&lt;li&gt;no source-code upload&lt;/li&gt;
&lt;li&gt;no telemetry&lt;/li&gt;
&lt;li&gt;no LLM API requirement&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The verification happens locally.&lt;/p&gt;

&lt;p&gt;That also keeps the workflow simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @agentcheck/cli

agentcheck start

&lt;span class="c"&gt;# coding agent works&lt;/span&gt;

agentcheck
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There is also a VS Code extension if you prefer reviewing the result inside the editor.&lt;/p&gt;




&lt;h2&gt;
  
  
  Coding-Agent Independent
&lt;/h2&gt;

&lt;p&gt;I developed AgentCheck primarily using &lt;strong&gt;Codex&lt;/strong&gt;, but I intentionally avoided coupling AgentCheck to any specific coding-agent product.&lt;/p&gt;

&lt;p&gt;It doesn't need to understand the agent session.&lt;/p&gt;

&lt;p&gt;It doesn't need an agent plugin.&lt;/p&gt;

&lt;p&gt;It doesn't need the agent to tell AgentCheck when it is finished.&lt;/p&gt;

&lt;p&gt;AgentCheck only cares about the resulting repository changes.&lt;/p&gt;

&lt;p&gt;So the same workflow can sit after:&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
Cursor
another coding agent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That separation is important to me.&lt;/p&gt;

&lt;p&gt;Coding agents will change.&lt;/p&gt;

&lt;p&gt;The Git repository remains the source of truth.&lt;/p&gt;




&lt;h2&gt;
  
  
  CLI and VS Code
&lt;/h2&gt;

&lt;p&gt;AgentCheck is currently available as both a CLI and a VS Code extension.&lt;/p&gt;

&lt;h3&gt;
  
  
  CLI
&lt;/h3&gt;

&lt;p&gt;Install:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @agentcheck/cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;agentcheck start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and later:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;agentcheck
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  VS Code
&lt;/h3&gt;

&lt;p&gt;The extension exposes the same review model inside VS Code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CHANGES
FINDINGS
RISK
VERDICT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The VS Code extension is intentionally a thin UI over the same deterministic core rather than a separate analysis engine.&lt;/p&gt;




&lt;h2&gt;
  
  
  Open Source
&lt;/h2&gt;

&lt;p&gt;AgentCheck is open source under the &lt;strong&gt;Apache License 2.0&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;GitHub:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/emreordu/agentcheck" rel="noopener noreferrer"&gt;https://github.com/emreordu/agentcheck&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;npm CLI:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/@agentcheck/cli" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/@agentcheck/cli&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;npm Core:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/@agentcheck/core" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/@agentcheck/core&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;VS Code Marketplace:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=agentcheck.agentcheck-vscode" rel="noopener noreferrer"&gt;https://marketplace.visualstudio.com/items?itemName=agentcheck.agentcheck-vscode&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What I’m Thinking About for v0.2
&lt;/h2&gt;

&lt;p&gt;The first release was mainly about proving the checkpoint and deterministic verification model.&lt;/p&gt;

&lt;p&gt;For the next version, I'm currently exploring things such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a stable, versioned review-report model&lt;/li&gt;
&lt;li&gt;machine-readable JSON output&lt;/li&gt;
&lt;li&gt;more actionable deterministic findings&lt;/li&gt;
&lt;li&gt;detailed added/removed/updated dependency information&lt;/li&gt;
&lt;li&gt;better finding-to-diff navigation inside VS Code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One thing I'm deliberately trying to avoid is turning AgentCheck into a giant AI code-review platform.&lt;/p&gt;

&lt;p&gt;I want the core idea to remain simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Independent verification of what actually changed.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  I’d Love Feedback From People Using Coding Agents
&lt;/h2&gt;

&lt;p&gt;AgentCheck is still early.&lt;/p&gt;

&lt;p&gt;The most useful feedback for me right now isn't:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Add more features.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It's things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What do you still manually check after your coding agent says “done”?&lt;/li&gt;
&lt;li&gt;Did AgentCheck miss something you expected it to highlight?&lt;/li&gt;
&lt;li&gt;Did it produce a noisy finding?&lt;/li&gt;
&lt;li&gt;Is the checkpoint workflow awkward in practice?&lt;/li&gt;
&lt;li&gt;What deterministic signal would actually help you during review?&lt;/li&gt;
&lt;li&gt;Would you use this mainly from the CLI or VS Code?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you use Claude Code, Codex, Cursor, or another coding agent in real repositories, I'd love to hear how this approach fits into your workflow.&lt;/p&gt;

&lt;p&gt;Try it.&lt;/p&gt;

&lt;p&gt;Break it.&lt;/p&gt;

&lt;p&gt;Tell me what it gets wrong.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Don’t trust “done”. Verify the result.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/emreordu/agentcheck" rel="noopener noreferrer"&gt;https://github.com/emreordu/agentcheck&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>agents</category>
      <category>reviews</category>
    </item>
  </channel>
</rss>
