<?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: Robby</title>
    <description>The latest articles on DEV Community by Robby (@robby_24).</description>
    <link>https://dev.to/robby_24</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%2F4245893%2Fa0769eb9-84cb-43bf-a4a0-adde15b80c87.png</url>
      <title>DEV Community: Robby</title>
      <link>https://dev.to/robby_24</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/robby_24"/>
    <language>en</language>
    <item>
      <title>Trust the Agent. Verify It My Agent Games Receipts</title>
      <dc:creator>Robby</dc:creator>
      <pubDate>Sun, 15 Nov 2026 12:09:20 +0000</pubDate>
      <link>https://dev.to/robby_24/trust-the-agent-verify-it-my-agent-games-receipts-j19</link>
      <guid>https://dev.to/robby_24/trust-the-agent-verify-it-my-agent-games-receipts-j19</guid>
      <description>&lt;h1&gt;
  
  
  Don't Trust the Agent. Verify It — My Agent Games Receipts
&lt;/h1&gt;

&lt;p&gt;My agent makes claims all day. "I checked the balance." "The recipient matches." "The transfer is safe." A claim is not evidence. Crypto already solved this for money: don't trust, verify. zkVerify does the same for agents. Agent Games Season 01 (21 Oct – 21 Nov 2026) asks Creator Track entrants to show their work. Here is mine — 9 things I actually did, with receipts.&lt;/p&gt;

&lt;p&gt;01 The problem → an agent can misread a number, mix up two addresses, or approve what it should reject. It can be buggy or compromised. A proof is valid or it isn't. There is no "mostly correct."&lt;/p&gt;

&lt;p&gt;02 Registration → I registered @rbby24 on agentgames.zkverify.io without a browser or wallet extension. Asked for a sign-in nonce, built the message, signed it with a fresh wallet, sent it back. Session valid to 15 Dec 2026. User ID 32a8225a-4920-4402-8633-a5b62b3d00ae.&lt;/p&gt;

&lt;p&gt;03 The wire format → the hard part wasn't the signature. The handle is claimed through a server action that sends its arguments as an array in a plain-text body — not form data. My first 5 tries sent the wrong shape. The server answered every one with the same useless error: just a code, no explanation.&lt;/p&gt;

&lt;p&gt;04 The rate-limit trap → then "Too many registration attempts." It was a rate limit — and it was hiding the real problem. The format was still wrong. Two different failures, same blank response. I only figured it out by reading the site's own JavaScript.&lt;/p&gt;

&lt;p&gt;05 The fix → once the format was right, it worked. @rbby24, 0 points, 0 verified proofs, not ranked. Ugly process. But the failure is the point: if agents are going to use the web, the web has to work for agents too.&lt;/p&gt;

&lt;p&gt;06 The circuit → registration proves an agent exists, not that it decides correctly. So I used the tournament's own gatekeeper circuit — the zero-knowledge circuit that decides whether a transfer gets approved. Downloaded the official files, installed snarkjs 0.7.6, ran it locally.&lt;/p&gt;

&lt;p&gt;07 The proof → clean case: balance 1460 vs minimum 1000, amount 500 vs max 1000, recipient matches, expiry block 8,430,000 ahead of 8,420,000, verification-key hash matches the registered one. Decision: approve. The proof came out 805 bytes, 13 public signals. Verification returned OK. Anyone can rerun it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;snarkjs groth16 verify verification_key.json public.json proof.json
[INFO] snarkJS: OK!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;08 The negative test → the real test is whether the circuit lets a wrong decision through. It doesn't. Approve a transfer to the wrong recipient? The proof can't even be built — witness generation fails. Reject a valid request? Same. A wrong decision doesn't produce a bad proof. It produces no proof at all.&lt;/p&gt;

&lt;p&gt;09 What it doesn't prove → no live score, no endpoint built, 0 points, not ranked. The live track needs a public endpoint answering signed tasks in 60 seconds, and I didn't build one. What it proves is narrower: the verification layer works as advertised, an outsider can use it end to end, and it fails in the right direction — it refuses wrong decisions instead of rubber-stamping them.&lt;/p&gt;

&lt;p&gt;Don't trust the agent. Verify it. The tools are public, the circuits are downloadable, and the proof is 805 bytes. Try it yourself.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Agent Games Season 01 runs to 21 November 2026, judging 22–30 November. #AgentGames @ZKVProtocol&lt;/em&gt;&lt;/p&gt;

</description>
      <category>agentgames</category>
      <category>zkverify</category>
      <category>web3</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
