<?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: Lex Hamilton</title>
    <description>The latest articles on DEV Community by Lex Hamilton (@lexthirteen-ai).</description>
    <link>https://dev.to/lexthirteen-ai</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%2F4005891%2F067c602b-2aa7-4937-be26-6f0465c4ee06.png</url>
      <title>DEV Community: Lex Hamilton</title>
      <link>https://dev.to/lexthirteen-ai</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lexthirteen-ai"/>
    <language>en</language>
    <item>
      <title>The Problem With Using AI Agents to Evaluate Other AI Agents</title>
      <dc:creator>Lex Hamilton</dc:creator>
      <pubDate>Thu, 15 Oct 2026 05:17:14 +0000</pubDate>
      <link>https://dev.to/lexthirteen-ai/the-problem-with-using-ai-agents-to-evaluate-other-ai-agents-2ecd</link>
      <guid>https://dev.to/lexthirteen-ai/the-problem-with-using-ai-agents-to-evaluate-other-ai-agents-2ecd</guid>
      <description>&lt;p&gt;If you build agents, you have probably wired one model up to grade another. It is fast, it scales, and it is how most agent evals work now. I recently submitted a public comment to an FDA docket on how generative AI medical devices should be evaluated, and the part I spent the most time on was the part developers tend to skip: who is allowed to be the judge.&lt;/p&gt;

&lt;p&gt;This post is the engineering version of that comment. The healthcare setting raises the stakes, but the failure modes apply to any agent you grade with another agent. FDA states that its discussion paper (docket FDA-2026-N-7874) is for discussion only and is not guidance, so none of this is a requirement. It is my argument, with sources where they exist. You can read the full comment on regulations.gov.&lt;/p&gt;

&lt;p&gt;Disclosure: I'm building Orinyx, which is in this space. Treat that as an interest.&lt;/p&gt;




&lt;h3&gt;
  
  
  Problem 1: the judge is not neutral
&lt;/h3&gt;

&lt;p&gt;Self-preference is documented. Panickssery et al. found an LLM evaluator scoring its own generations higher than human annotators did, and that the effect strengthened with the model's ability to recognize its own output. Wataoka et al. reported significant self-preference in GPT-4 and tied it to familiarity: judges rated lower-perplexity text higher than humans did, whether or not they wrote it.&lt;/p&gt;

&lt;p&gt;What this does not show is that same-family judging fails on your task. Neither paper tested a deployed clinical device. My position is a design rule: do not let the judge be the same model family, or a fine-tuned variant, as the system under test. A GPT-based agent graded by a GPT-based judge is not an independent check just because two different teams ran it. LLM judges are still a good tool: the MT-Bench paper reports strong judges agreeing with human preferences more than 80% of the time. The rule is about which seat they sit in, not whether they work.&lt;/p&gt;




&lt;h3&gt;
  
  
  Problem 2: one judge is a single point of failure
&lt;/h3&gt;

&lt;p&gt;Instead of one model judging another, split the job so that anything a machine can verify is verified without a model. This is the pattern I'm developing and testing. It runs four narrow evaluators against the same output:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Evaluator&lt;/th&gt;
&lt;th&gt;Question it answers&lt;/th&gt;
&lt;th&gt;Needs a model?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Deterministic&lt;/td&gt;
&lt;td&gt;Did the output cite a source that exists? Does the calculation match? Was a required field present?&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Semantic&lt;/td&gt;
&lt;td&gt;Is the reasoning sound and appropriate?&lt;/td&gt;
&lt;td&gt;Yes, and that model needs the independence rule above&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Policy&lt;/td&gt;
&lt;td&gt;Did the agent stay inside its authorized scope and tools?&lt;/td&gt;
&lt;td&gt;Usually rules, sometimes a model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Trace&lt;/td&gt;
&lt;td&gt;Is the full execution path acceptable, not just the final output?&lt;/td&gt;
&lt;td&gt;Mixed&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Keep the deterministic layer deterministic on purpose. It has to be auditable and it has to fail predictably. Only the judgment-dependent slice goes to a model. This narrows what you have to trust; it does not remove the question.&lt;/p&gt;




&lt;h3&gt;
  
  
  Problem 3: the endpoint hides the path
&lt;/h3&gt;

&lt;p&gt;Evaluating input against output misses failures that happen mid-process: an agent reaches a correct-looking conclusion through a reasoning chain that should have triggered escalation earlier, or through a tool it was not authorized to use. Score the trajectory.&lt;/p&gt;

&lt;p&gt;The research agrees directionally. A 2025 paper on reasoning trajectories of tool-augmented agents found that agents with similar answer accuracy differed significantly once trajectories were scored for efficiency, hallucination, and adaptivity. A survey of LLM-agent evaluation maps how the field is moving from scoring answers to scoring behavior.&lt;/p&gt;

&lt;p&gt;A minimal shape for a trace you can evaluate (illustrative, not a spec):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"session_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"s-0042"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"step"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"tool"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"chart_write"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"authorized_at_session_start"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"scope_before"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"chart_read"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"scope_after"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"chart_read"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"chart_write"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"tool_output_source"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"same_vendor_as_agent"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"logged_by"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"external_telemetry"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Two fields carry most of the weight. logged_by matters because I argued, and I stand by it, that agents under-report their own failures, so tool-call results should be logged independently of the agent's self-reported status. scope_before and scope_after matter because authority can expand mid-session, and an evaluation should test whether the agent recognized its available scope changed, not only whether it refused out-of-scope actions.&lt;/p&gt;




&lt;h3&gt;
  
  
  Problem 4: tool outputs are not automatically ground truth
&lt;/h3&gt;

&lt;p&gt;An agent that treats a tool's output as ground truth has the same self-affirmation problem as a system grading itself. The call looks like an external check, but if the tool and the agent share a developer, a training lineage, or an incentive structure, it is not one. Tag tool outputs by whether the source is structurally independent of the agent, and weight them accordingly.&lt;/p&gt;




&lt;h3&gt;
  
  
  Problem 5: someone has to check the checker
&lt;/h3&gt;

&lt;p&gt;If a supervisory agent benchmarks a worker agent, something has to benchmark the supervisor. The chain has to terminate in a structurally independent, non-agentic check. Otherwise you have a stack of agents each vouching for the one below, and accountability regresses one level at a time. I also suggested capping turns and per-session actions so a supervisor's scope is bounded and auditable.&lt;/p&gt;

&lt;p&gt;Smaller practical points&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A single passed benchmark run proves very little. Run the same prespecified task repeatedly and report success rate across attempts, consistency under semantically equivalent inputs, and how often a human had to intervene.&lt;/li&gt;
&lt;li&gt;Version your test bundles and rerun them on any prompt or model change. Scale the rerun to blast radius, not to how small the diff looks: a prompt tweak to an escalation path can matter more than a model swap in a low-stakes function.&lt;/li&gt;
&lt;li&gt;Treat "cannot verify" as a reportable outcome, not an error to swallow.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What I'm building, stated plainly&lt;/p&gt;

&lt;p&gt;My FDA comment describes a longer-term architecture: continuous per-output verification of live output against current authoritative sources, integrated through CDS Hooks. &lt;/p&gt;

&lt;p&gt;The Orinyx MCP launches October 29, 2026. It runs on synthetic data only, uses simplified bounty agents, has no dashboard, no CDS Hooks or EHR integration, and does not monitor live clinical output. If you want a launch notice, the waitlist is at orinyx.io/developers.&lt;/p&gt;

&lt;p&gt;The full write-up, with sources and FAQ, is at orinyx.io/blog/who-verifies-the-verifier.&lt;/p&gt;

&lt;p&gt;Which of these four evaluators does your current agent eval already have, and which one is a model grading itself?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>agents</category>
      <category>startup</category>
    </item>
  </channel>
</rss>
