<?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: cucoleadan</title>
    <description>The latest articles on DEV Community by cucoleadan (@cucoleadan).</description>
    <link>https://dev.to/cucoleadan</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%2F1392305%2Fb8e28d8c-8302-4fe8-86e5-d09186c09b75.png</url>
      <title>DEV Community: cucoleadan</title>
      <link>https://dev.to/cucoleadan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cucoleadan"/>
    <language>en</language>
    <item>
      <title>Before You Install That GitHub Tool, Make Claude Code Beat It</title>
      <dc:creator>cucoleadan</dc:creator>
      <pubDate>Tue, 27 Oct 2026 13:45:02 +0000</pubDate>
      <link>https://dev.to/cucoleadan/before-you-install-that-github-tool-make-claude-code-beat-it-334f</link>
      <guid>https://dev.to/cucoleadan/before-you-install-that-github-tool-make-claude-code-beat-it-334f</guid>
      <description>&lt;p&gt;Six minutes into testing a PDF tool, Claude found its Windows download held only a README.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PaperPilot&lt;/strong&gt; , a Rust PDF tool, showed up on Hacker News on 26 October. Its command-line interface looked useful for the arXiv papers I use in my &lt;a href="https://allagentsconsidered.com/blog/tear-down-your-ai-workflow-and-rebuild" rel="noopener noreferrer"&gt;research workflow&lt;/a&gt;, and it also came with an MCP server for agents.&lt;/p&gt;

&lt;p&gt;That same day, Simon Willison posted about having Claude Opus 5.5 try a new tool and write up what it found. I wanted to try that approach, so instead of installing PaperPilot myself, I asked Claude to investigate it first, on a small job I could check: turning two papers into a four-page reading pack.&lt;/p&gt;

&lt;p&gt;As it turned out, the empty download was the smaller surprise. A bigger one came once &lt;strong&gt;&lt;a href="https://allagentsconsidered.com/blog/how-to-use-claude-code-for-free-with" rel="noopener noreferrer"&gt;Claude Code&lt;/a&gt;&lt;/strong&gt; started checking the results, and I had to ask how I’d do this job without PaperPilot at all.&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%2F4t47pl2wz6j3c12uuees.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%2F4t47pl2wz6j3c12uuees.png" alt="Before You Install That GitHub Tool, Make Claude Code Beat It - hero image" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;&lt;a href="https://allagentsconsidered.substack.com/subscribe" rel="noopener noreferrer"&gt;Subscribe&lt;/a&gt; for more hands-on tests of tools you can use with your agents, including the attempts that go nowhere.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  In This Edition
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Claude found that PaperPilot’s Windows download held only a README, before I installed anything.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;PaperPilot built a pixel-perfect four-page pack inside a locked-down Docker container, but its plain text came back as Markdown.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A short pypdf and PyMuPDF script tied on pages and gave me cleaner text, so that’s what I’m keeping.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You get the trial prompt I used, rewritten so you can point it at a tool you’ve been meaning to install.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Nothing to Install
&lt;/h2&gt;

&lt;p&gt;I started in the Claude desktop app and asked Claude to find out what &lt;strong&gt;PaperPilot&lt;/strong&gt; could do before I installed anything. I gave it one rule: no PaperPilot code runs without a real sandbox. It’s the same idea as the &lt;a href="https://allagentsconsidered.com/blog/how-to-add-approval-gates-to-your" rel="noopener noreferrer"&gt;approval gates I add to Hermes&lt;/a&gt;: nothing risky runs until a check passes.&lt;/p&gt;

&lt;p&gt;It came back with a problem. PaperPilot’s Windows downloads were tiny zips with a README inside and no program. A packaging script hides that error, so nobody gets warned when the program goes missing.&lt;/p&gt;

&lt;p&gt;Claude also spotted a wrong flag in the README and confirmed that the Linux version worked. Then it found cloud credentials in its own workspace and stopped, exactly as I’d asked.&lt;/p&gt;

&lt;p&gt;It even corrected me. My notes said people had reported security problems on Hacker News. Claude reread the thread and found questions about licensing and where the code came from, with no security reports at all. Reading past the docs paid off, a habit I wrote about in &lt;a href="https://allagentsconsidered.com/blog/how-to-search-beyond-the-docs-when" rel="noopener noreferrer"&gt;How to Search Beyond the Docs When Your Code Won’t Work&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Before I’d installed a thing, I knew to skip Windows and run the test on Linux. I learned to check first the hard way in &lt;a href="https://allagentsconsidered.com/blog/the-twenty-minute-audit-that-found" rel="noopener noreferrer"&gt;The Twenty Minute Audit That Found Where Hermes Was Getting Lost&lt;/a&gt;, after adding three tools before looking at what they’d read.&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%2Fumexlk6s87loe7bu66qs.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%2Fumexlk6s87loe7bu66qs.png" alt="Before You Install That GitHub Tool, Make Claude Code Beat It - Nothing to Install" width="799" height="276"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Three Tries to Run It
&lt;/h2&gt;

&lt;p&gt;I moved to my home server and handed the job to &lt;strong&gt;Claude Code&lt;/strong&gt;. It ran PaperPilot inside a Docker container with no network access and only one folder it could see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;--rm&lt;/span&gt; &lt;span class="nt"&gt;--network&lt;/span&gt; none &lt;span class="nt"&gt;--cap-drop&lt;/span&gt; ALL &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--security-opt&lt;/span&gt; no-new-privileges &lt;span class="nt"&gt;--user&lt;/span&gt; 1000:1000 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt; ~/pp-trial:/work &lt;span class="nt"&gt;-w&lt;/span&gt; /work ubuntu:26.04 &amp;lt;&lt;span class="nb"&gt;command&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You could do the same with Docker Desktop on a laptop.&lt;/p&gt;

&lt;p&gt;Getting a clean run took three tries, and none of that was PaperPilot’s fault. On the first, I’d pasted only half my instructions and named no papers, so Claude Code grabbed the repo’s own test files and ran the tool on those. On the second, it stopped and asked which papers I meant. Seems fair.&lt;/p&gt;

&lt;p&gt;Five minutes of planning would have saved me a try, as I argued in &lt;a href="https://allagentsconsidered.com/blog/how-to-architect-a-feature-in-5-minutes" rel="noopener noreferrer"&gt;How To Architect A Feature In 5 Minutes Before Talking To AI&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%2Fk4d3nuw2tnvs04zvgrho.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%2Fk4d3nuw2tnvs04zvgrho.png" alt="Before You Install That GitHub Tool, Make Claude Code Beat It - Three Tries to Run It" width="800" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On the third try, it had both papers, &lt;em&gt;Attention Is All You Need&lt;/em&gt; and the LoRA paper. About two minutes later, I had my four-page reading pack and its text. Claude Code then checked both with &lt;strong&gt;pypdf&lt;/strong&gt; and &lt;strong&gt;PyMuPDF&lt;/strong&gt; , two Python PDF libraries that have nothing to do with PaperPilot.&lt;/p&gt;

&lt;p&gt;Remember those two.&lt;/p&gt;

&lt;h2&gt;
  
  
  Perfect Pages, Messy Text
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;PaperPilot&lt;/strong&gt; nailed the pages. Every page in the pack matched the original exactly, down to the arXiv stamps running along the margin.&lt;/p&gt;

&lt;p&gt;But it sometimes failed too. When Claude Code asked for page 16 of a 15-page paper, PaperPilot returned an error and wrote nothing. You won’t end up with a half-finished file that looks complete.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Text extraction was the catch.&lt;/strong&gt; Here’s how the Attention paper’s authors came out:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gs"&gt;**Ashish**&lt;/span&gt;  &lt;span class="gs"&gt;**Vaswani**&lt;/span&gt;

&lt;span class="gs"&gt;**Noam**&lt;/span&gt;  &lt;span class="gs"&gt;**Shazeer**&lt;/span&gt;

&lt;span class="gs"&gt;**Niki**&lt;/span&gt;  &lt;span class="gs"&gt;**Parmar**&lt;/span&gt;

&lt;span class="gs"&gt;**Jakob**&lt;/span&gt;  &lt;span class="gs"&gt;**Uszkoreit**&lt;/span&gt; Google Brain

Google Brain

Google Research Google Research &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;avaswani@google.com&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;mailto:avaswani@google.com&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every word survived, but PaperPilot wrapped bold words in Markdown, turned emails into links and split authors from their affiliations. It broke the LoRA title into four pieces and mangled the inline maths too.&lt;/p&gt;

&lt;p&gt;You could search that text. I wouldn’t want to read it, or hand it to another tool, without cleaning it first.&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%2F9h60hrwxf3vrqzix52e0.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%2F9h60hrwxf3vrqzix52e0.png" alt="Before You Install That GitHub Tool, Make Claude Code Beat It - Perfect Pages, Messy Text" width="800" height="281"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Send this to someone with a pile of starred GitHub repos they never get around to trying.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Then Claude Wrote Its Own
&lt;/h2&gt;

&lt;p&gt;Before writing this up, I asked myself how I’d do this job without PaperPilot. I didn’t have an answer. My best guess was that I’d ask an agent, and it would write a Python script.&lt;/p&gt;

&lt;p&gt;That’s when it clicked. Claude Code had already used pypdf and PyMuPDF to check PaperPilot’s work, and those same two libraries could do the whole job. It’s the question from &lt;a href="https://allagentsconsidered.com/blog/the-build-vs-buy-scorecard" rel="noopener noreferrer"&gt;The Build vs Buy Scorecard&lt;/a&gt;, with an agent doing the building.&lt;/p&gt;

&lt;p&gt;I sent Claude Code back with the same papers, no PaperPilot, and free rein over the method. It wrote a short script.&lt;/p&gt;

&lt;p&gt;On pages, it was a tie. Both packs came out identical.&lt;/p&gt;

&lt;p&gt;On text, the script won. LoRA’s title stayed in one piece, every author kept their affiliation and email, and the maths stayed readable.&lt;/p&gt;

&lt;p&gt;It wasn’t perfect, and Claude Code said so. One setting glued a few hyphenated words together, turning “English-to-German” into “Englishto-German”, and some letter pairs came through as special characters that trip up search. Both are one-line fixes, and Claude Code left them in so the comparison stayed fair. Honest comparisons are rarer than they should be, which is why I &lt;a href="https://allagentsconsidered.com/blog/why-ai-benchmarks-fail-real-hermes" rel="noopener noreferrer"&gt;test models on real Hermes work&lt;/a&gt; instead of trusting benchmarks.&lt;/p&gt;

&lt;p&gt;It also refused to call the script faster, because the second run had everything the first one taught it. Fair enough.&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%2Fybu5c1vhlmwneo4qbrgb.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%2Fybu5c1vhlmwneo4qbrgb.png" alt="Before You Install That GitHub Tool, Make Claude Code Beat It - Then Claude Wrote Its Own" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It on Your Next Tool
&lt;/h2&gt;

&lt;p&gt;I’m keeping the script. Its text needs less cleanup, and Claude Code couldn’t find a PaperPilot setting that fixes PaperPilot’s text. Tweaking one line in my own script is easier. It’s also code I own, which matters to me since I &lt;a href="https://allagentsconsidered.com/blog/i-built-my-ai-stack-to-survive-vendor" rel="noopener noreferrer"&gt;built my stack to survive vendor lock-in&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you only need to cut and merge pages, PaperPilot did that well, as long as you’re not on Windows. For OCR, big documents or two-column papers, this trial can’t tell you much, so run your own.&lt;/p&gt;

&lt;p&gt;In &lt;a href="https://allagentsconsidered.com/blog/when-to-use-mcps-clis-or-your-own" rel="noopener noreferrer"&gt;When to Use MCPs, CLIs, or Your Own Tool&lt;/a&gt;, I wrote that small custom tools are often enough for the job. I’ve had agents build those for me before, like the &lt;a href="https://allagentsconsidered.com/blog/how-i-built-a-substack-api-with-hermes" rel="noopener noreferrer"&gt;Substack API I built with Hermes and Codex&lt;/a&gt;. With this trial, I got to test the idea on a real tool, with &lt;a href="https://allagentsconsidered.com/blog/why-my-best-hermes-workflow-consists" rel="noopener noreferrer"&gt;files I could check myself&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here’s the prompt to start from. Give it your real files, or your agent will grab demo files like mine did.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;I want to know whether &amp;lt;TOOL URL&amp;gt; is worth installing for one job: &amp;lt;JOB&amp;gt;.

Start by checking what the current release supports for this job, using
the official documentation and downloads as evidence. Record the commit
you inspect so we can distinguish that version from later changes.
Keep planned features separate from anything available in the release.
Check whether a binary exists for my OS before suggesting a source build.

Before executing any project code, establish which isolation boundaries
are enforced in the environment where it will run. Stop if those
boundaries aren't available, since an empty folder doesn't provide them.

Use the tool inside that environment to do the job on &amp;lt;INPUTS&amp;gt;.
If another tool is needed to produce an output, explain that rather than
crediting the result to the tool we're testing.

Verify the result using an independent method and tell me how you checked
it. Include a failure case that shows what happens when an input is invalid.

Try the same job your own way on the same inputs, without using the tool
under evaluation. Compare the outputs closely enough that I can decide
which approach I'd want to keep using.

Save enough evidence in run-notes.md for someone else to follow the run.
Include the exact versions and file hashes needed to identify what was
tested. Preserve the commands with their output and any errors encountered.
Record actual timestamps without turning them into estimated savings.

Finish with your recommendation for this particular job, making clear
where the evidence is still too limited for a decision.

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

&lt;/div&gt;



&lt;p&gt;If I’d stopped after the PaperPilot run, I’d have a working PDF and some text to clean up. Asking Claude Code to do the job without it gave me a script I’d rather keep, all from an experiment that started with an empty Windows download.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Leave a link to a tool you’ve been meaning to try in the comments, and I’ll pick one to put through the same comparison.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;&lt;a href="https://allagentsconsidered.substack.com/subscribe" rel="noopener noreferrer"&gt;Subscribe&lt;/a&gt; if you’d like to see what comes back when I try the next tool this way.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>agents</category>
      <category>mcp</category>
    </item>
    <item>
      <title>I Used the Ponytail Skill to Make Claude and Codex Write More Reliable Code</title>
      <dc:creator>cucoleadan</dc:creator>
      <pubDate>Tue, 20 Oct 2026 12:24:35 +0000</pubDate>
      <link>https://dev.to/cucoleadan/i-used-the-ponytail-skill-to-make-claude-and-codex-write-more-reliable-code-pcc</link>
      <guid>https://dev.to/cucoleadan/i-used-the-ponytail-skill-to-make-claude-and-codex-write-more-reliable-code-pcc</guid>
      <description>&lt;p&gt;My best coding upgrade this month was telling my agents to be lazy.&lt;/p&gt;

&lt;p&gt;Claude and Codex write extra code for free, and I pay for it in review time. Every helper they invent is one more thing I have to read, trust and keep working when the app changes.&lt;/p&gt;

&lt;p&gt;On October 7, I added a skill called &lt;strong&gt;Ponytail&lt;/strong&gt; to my project instructions. It makes the agent climb a seven-rung ladder before it writes anything, and the first rung asks whether the code needs to exist at all. I run it in Claude and in Codex.&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%2Fly9caatpec9uevpft193.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%2Fly9caatpec9uevpft193.png" alt="I Used the Ponytail Skill to Make Claude and Codex Write More Reliable Code - hero image" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Twelve days later, I asked Claude for an MCP server for my SaaS. Claude delivered one commit with 44 tools and a single new dependency, and I had it live and tested the next day.&lt;/p&gt;

&lt;p&gt;Below is how the skill works, what it changed in that build, the one place where less code would have been wrong, and the shortcuts it wrote into my codebase on purpose.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;In This Edition&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Climb before you code.&lt;/strong&gt; Ponytail makes Claude and Codex check seven options, from skipping the code to reusing what exists, before they write anything new.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reuse beats a second API.&lt;/strong&gt; My 44-tool MCP server sends every tool through pages the app already has and adds a single dependency.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Some code earns its place.&lt;/strong&gt; Two wait tools add lines and stop an agent from calling a half-written brief done.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Read the notes it leaves.&lt;/strong&gt; Every &lt;code&gt;ponytail:&lt;/code&gt; comment marks a shortcut you still own, so review them before they turn into bugs.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;&lt;a href="https://allagentsconsidered.substack.com/subscribe" rel="noopener noreferrer"&gt;Subscribe&lt;/a&gt; for agent builds with the code, checks and failures left in.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Seven-Rung Ladder
&lt;/h2&gt;

&lt;p&gt;Most coding instructions stop at “keep it simple”, while Ponytail gives the agent an order to work through.&lt;/p&gt;

&lt;p&gt;Before writing anything, the agent reads the task and traces the code it touches. For a bug, that means finding every caller of the broken function and fixing it once, in the shared place. Then it climbs the ladder and stops at the first rung that holds:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Does this code need to exist at all?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Can it reuse something already in the codebase?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Does the standard library cover it?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Does the platform do it natively?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Does an installed dependency already handle it?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Can it be one line?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Write the minimum code that works.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&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%2Ff3o7c89k0196foegn3wh.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%2Ff3o7c89k0196foegn3wh.png" alt="I Used the Ponytail Skill to Make Claude and Codex Write More Reliable Code - The Seven-Rung Ladder" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first rung applies the cut I argued for with features in &lt;a href="https://allagentsconsidered.com/blog/what-gordon-ramsay-taught-me-about" rel="noopener noreferrer"&gt;What Gordon Ramsay Taught Me About Vibe Coding&lt;/a&gt;, one level down at the code.&lt;/p&gt;

&lt;p&gt;It comes in three levels. &lt;strong&gt;Lite&lt;/strong&gt; builds what you asked and names a lazier option in one line. &lt;strong&gt;Full&lt;/strong&gt; runs the whole ladder. &lt;strong&gt;Ultra&lt;/strong&gt; deletes before it adds and questions the requirement itself.&lt;/p&gt;

&lt;p&gt;I run full mode, and my project’s &lt;code&gt;AGENTS.md&lt;/code&gt; spells out what that means: trace the existing flow, reuse local helpers and components, prefer native platform features and installed dependencies, and add only what the current screen needs.&lt;/p&gt;

&lt;p&gt;Ponytail also protects the parts that keep an app safe, like validation at trust boundaries, error handling that prevents data loss, and anything you asked for by name. It asks for one small runnable check on any non-trivial logic.&lt;/p&gt;

&lt;p&gt;My favorite rule covers shortcuts: when the agent picks a simpler version with a known ceiling, it leaves a &lt;code&gt;ponytail:&lt;/code&gt; comment naming the limit and the upgrade path, and you’ll see why that matters in the catch.&lt;/p&gt;

&lt;p&gt;The skill is short, and you can read the &lt;a href="https://github.com/DietrichGebert/ponytail/blob/main/skills/ponytail/SKILL.md" rel="noopener noreferrer"&gt;whole thing on GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  44 Tools, No Second API
&lt;/h2&gt;

&lt;p&gt;The SaaS is Yahini, my content strategy app, and &lt;a href="https://yahini.io/product/yahini-mcp" rel="noopener noreferrer"&gt;its MCP&lt;/a&gt; lets Claude, ChatGPT or Cursor work in it as you. They can create projects, run keyword research, fill the workbook, and generate briefs and drafts.&lt;/p&gt;

&lt;p&gt;The website already knew who can open a project, which actions spend credits and what happens when a request fails. A fresh API layer for the agent would look clean in a diff and give me two copies of every rule. The day I changed one, the website and the agent would start giving the same user different answers.&lt;/p&gt;

&lt;p&gt;Ponytail stopped Claude at rung two, so each of the 44 tools runs the page’s own loader or action with the user’s session. The app keeps handling permissions, credit checks and validation, exactly like it does on the website.&lt;/p&gt;

&lt;p&gt;A test locks that in by failing whenever a tool points at a page the app’s routes don’t list, so no agent can slip in a tool with its own private logic.&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%2Ftl1ln033rmx8qoc15vjn.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%2Ftl1ln033rmx8qoc15vjn.png" alt="I Used the Ponytail Skill to Make Claude and Codex Write More Reliable Code - 44 Tools, No Second API" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The other rungs show up too:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Rung 5, an installed dependency:&lt;/strong&gt; sign-in runs through Cloudflare’s &lt;code&gt;workers-oauth-provider&lt;/code&gt;, the only package the build added.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Rung 7, the minimum:&lt;/strong&gt; the server answers JSON-RPC over plain POST with no streaming, from a 187-line request handler.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Claude kept the careful parts too, giving each connection its own Supabase session so connecting an agent never rotates the session in your browser. Disconnecting an app from your account deletes its tokens and that session with them.&lt;/p&gt;

&lt;p&gt;Reuse still costs something, because the MCP now depends on those page operations and renaming a form field on the website breaks the mapping. Another test checks that arguments become exactly the fields each page reads, which catches a small refactor before it breaks every connected agent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Less Code Is Wrong
&lt;/h2&gt;

&lt;p&gt;Briefs and drafts in the app generate in the background. When an agent asks for one, the first response only confirms that the app accepted the job, long before the document is ready.&lt;/p&gt;

&lt;p&gt;A minimal build would return that response and let your agent tell you the brief is done while the app is still writing it. Notifications and webhooks can’t reach a chat agent, so nothing would correct it.&lt;/p&gt;

&lt;p&gt;That’s why the MCP has two extra tools, &lt;code&gt;wait_for_generation&lt;/code&gt; and &lt;code&gt;wait_for_document&lt;/code&gt;, which re-read the page every 5 seconds for up to 45 seconds and then answer with &lt;code&gt;finished&lt;/code&gt;. While it’s false, the agent calls again, so it follows the run within its own turn and you never have to ask twice.&lt;/p&gt;

&lt;p&gt;Those 45 seconds earn their code, and Ponytail agrees: its protected list keeps error handling that prevents data loss and asks for a check on non-trivial logic. Two of the 11 tests in &lt;code&gt;mcp.test.ts&lt;/code&gt; cover the wait tools, including the case where the limit runs out before the work does.&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%2F2gcuxparyem6wabqoasb.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%2F2gcuxparyem6wabqoasb.png" alt="I Used the Ponytail Skill to Make Claude and Codex Write More Reliable Code - Where Less Code Is Wrong" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Refusals get the same care, with a test that turns the app’s own answers into tool results so a 403 reaches the agent as an error. Without it, your agent could report a change as saved when the app said no.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Know someone whose coding agent turns every small fix into a new module? Send them this before their next pull request.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Catch
&lt;/h2&gt;

&lt;p&gt;Ponytail ships shortcuts, and it tells you so. My codebase now has 14 &lt;code&gt;ponytail:&lt;/code&gt; comments, and each one marks a limit the agent chose and wrote down.&lt;/p&gt;

&lt;p&gt;Two of them are real bugs waiting for the right timing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ponytail: two submits racing in flight can still both create;
the backend needs an idempotency key to close that.

ponytail: read-modify-write, so two people editing the same
list at once can drop one change

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

&lt;/div&gt;



&lt;p&gt;Neither is hidden, and both are still mine to fix. If you never read those comments, Ponytail’s honesty turns into debt you forgot you took on.&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%2F4fr0s4jtoicjyxlw4kee.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%2F4fr0s4jtoicjyxlw4kee.png" alt="I Used the Ponytail Skill to Make Claude and Codex Write More Reliable Code - The Catch" width="800" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The MCP has its own limits, starting with a connected apps page that lists only the first 100 connections, since one app per user rarely gets near that. I left billing out on purpose, so checkout and plan changes still send you back to the app.&lt;/p&gt;

&lt;p&gt;The bigger risk is the agent grading its own work, because one session writes the code, writes the test and explains why both are right. If the test copies the code’s assumption, everything agrees and the feature is still wrong. I gave my Hermes agent &lt;a href="https://allagentsconsidered.com/blog/how-to-add-approval-gates-to-your" rel="noopener noreferrer"&gt;approval gates&lt;/a&gt; for the same reason.&lt;/p&gt;

&lt;p&gt;Keep one check the agent didn’t write, the way I connected this server to a real client and used it before calling it live.&lt;/p&gt;

&lt;p&gt;I haven’t run a controlled test, so I can’t give you a percentage of bugs Ponytail prevents, and I’d be suspicious of anyone who did. What I can show you is the code, the tests and the notes it left.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start With One Task
&lt;/h2&gt;

&lt;p&gt;Pick a change small enough to review in one sitting, with a result you can check. If it needs a plan first, my &lt;a href="https://allagentsconsidered.com/blog/how-to-architect-a-feature-in-5-minutes" rel="noopener noreferrer"&gt;five-minute architecture pass&lt;/a&gt; gets you one before the agent sees the task. Save the starting code, load Ponytail in a fresh session and give the agent this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Implement this change using the existing project conventions.
Before editing, find the code that already owns this behavior.
Keep the change limited to the requested outcome.
Check the failure case most likely to mislead a user.
Report what changed, what you verified, and what you skipped.

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

&lt;/div&gt;



&lt;p&gt;Then pick the level by the problem you keep hitting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Your agent adds files and abstractions you didn’t ask for:&lt;/strong&gt; run full.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;It builds roughly the right thing, only bigger:&lt;/strong&gt; start with lite and read the lazier option it suggests.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;You suspect the whole feature is overbuilt:&lt;/strong&gt; try ultra on a branch you’re happy to throw away.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Your setup already ships focused changes with real checks:&lt;/strong&gt; keep it, because a skill should earn the instructions it adds.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Write the level into your project’s &lt;code&gt;AGENTS.md&lt;/code&gt; so every session starts with it. Then search the repo for &lt;code&gt;ponytail:&lt;/code&gt; once a week and decide which limits you’re still happy with.&lt;/p&gt;

&lt;p&gt;If long explanations bother you more than the code, Ponytail pairs with &lt;strong&gt;Caveman&lt;/strong&gt; , a separate skill for terse answers. If your agent keeps solving the wrong problem, the community’s &lt;a href="https://github.com/multica-ai/andrej-karpathy-skills" rel="noopener noreferrer"&gt;Karpathy-inspired guidelines&lt;/a&gt; start by making it state its assumptions. I haven’t used either one, so start from their published rules.&lt;/p&gt;

&lt;p&gt;My &lt;a href="https://allagentsconsidered.com/blog/how-i-built-a-substack-api-with-hermes" rel="noopener noreferrer"&gt;Substack API build with Hermes and Codex&lt;/a&gt; came down to the same standard: follow the request into the code, then find the proof that “done” means done.&lt;/p&gt;

&lt;p&gt;One dependency, 44 tools and a note on every shortcut add up to AI code I can live with.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Tell me the last thing your coding agent overbuilt, and I’ll tell you which rung it should have stopped on.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;&lt;a href="https://allagentsconsidered.substack.com/subscribe" rel="noopener noreferrer"&gt;Subscribe&lt;/a&gt; for more agent builds with the files, decisions and failure checks behind them.&lt;/strong&gt;&lt;/p&gt;




</description>
      <category>ai</category>
      <category>claude</category>
      <category>codex</category>
      <category>agents</category>
    </item>
    <item>
      <title>Muse and Grok Bot vs ChatGPT and Hermes: What Are You Paying For?</title>
      <dc:creator>cucoleadan</dc:creator>
      <pubDate>Tue, 13 Oct 2026 13:56:02 +0000</pubDate>
      <link>https://dev.to/cucoleadan/muse-and-grok-bot-vs-chatgpt-and-hermes-what-are-you-paying-for-fk4</link>
      <guid>https://dev.to/cucoleadan/muse-and-grok-bot-vs-chatgpt-and-hermes-what-are-you-paying-for-fk4</guid>
      <description>&lt;p&gt;Yesterday (October 12) Meta &lt;a href="https://about.fb.com/news/2026/10/introducing-muse-wonder-models/" rel="noopener noreferrer"&gt;announced Muse Wonder&lt;/a&gt;, with the new model set to reach &lt;strong&gt;Muse&lt;/strong&gt; subscribers first when the app rollout begins. Ten days earlier, xAI &lt;a href="https://x.ai/news/x-subscription" rel="noopener noreferrer"&gt;announced a subscription combining Cursor and Grok&lt;/a&gt;, with &lt;strong&gt;Grok Bot&lt;/strong&gt; included on the higher tiers. Both companies are giving us more reasons to pay for an agent that keeps working after we close the laptop.&lt;/p&gt;

&lt;p&gt;And I understand the appeal. When you’re the person troubleshooting a missed scheduled job, paying someone else to run the machine starts to sound reasonable. You still get an agent with access to your tools, but the server upkeep becomes someone else’s responsibility.&lt;/p&gt;

&lt;p&gt;The harder decision comes when you already pay for &lt;strong&gt;ChatGPT&lt;/strong&gt; or have &lt;strong&gt;Hermes&lt;/strong&gt; doing useful work. Some of what Muse and Grok Bot offer overlaps with that setup. Before adding another bill, I want to know which jobs become easier and how much of the checking still comes back to me.&lt;/p&gt;

&lt;p&gt;I compared their documentation and pricing with published hands-on reports, using my experience running Hermes as the reference point. I’m looking for the work each service can take off my hands and what it asks of me in return.&lt;/p&gt;

&lt;p&gt;I checked the prices and availability below on &lt;strong&gt;October 13, 2026&lt;/strong&gt;. The comparison focuses on what you can use now, including the limits behind the subscription prices.&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%2Fww3xzu563xbqxpyspf42.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%2Fww3xzu563xbqxpyspf42.png" alt="Muse and Grok Bot vs ChatGPT and Hermes: What Are You Paying For? - hero image" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;In this article:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;What You’re Buying&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What the Price Covers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What People Have Delegated&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Work You Own&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Try One Job&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Where I’d Start&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;strong&gt;&lt;a href="https://allagentsconsidered.substack.com/subscribe" rel="noopener noreferrer"&gt;Subscribe&lt;/a&gt; for practical ways to put agents to work and judge the results.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What You’re Buying
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://about.fb.com/news/2026/09/introducing-muse-personal-ai-agent/" rel="noopener noreferrer"&gt;Meta built&lt;/a&gt;&lt;strong&gt;&lt;a href="https://about.fb.com/news/2026/09/introducing-muse-personal-ai-agent/" rel="noopener noreferrer"&gt;Muse&lt;/a&gt;&lt;/strong&gt; around a dedicated virtual computer with a browser. You give it ongoing goals, it keeps memory, and you talk to it through the app or WhatsApp. That arrangement appeals to me because I can hand over work that needs access to my accounts without also taking on another machine to maintain.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://about.fb.com/news/2026/09/introducing-muse-small-business/" rel="noopener noreferrer"&gt;small-business rollout&lt;/a&gt; adds connections to QuickBooks, Shopify, and Slack, among others. Meta lists the US and Canada, so readers elsewhere should check availability before spending time planning a workflow. For each connector, look for the action you need it to perform inside the app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Grok Bot&lt;/strong&gt; also works on a cloud computer and runs scheduled jobs while your laptop is closed. Its &lt;a href="https://x.ai/bot" rel="noopener noreferrer"&gt;product FAQ&lt;/a&gt; explains that all your bots share one persistent computer, including its files, browser, and logins. I would check how overlapping browser jobs behave early in a trial, before relying on several bots at once.&lt;/p&gt;

&lt;p&gt;Before adding either, look through what &lt;strong&gt;ChatGPT&lt;/strong&gt; already includes. &lt;a href="https://learn.chatgpt.com/docs/web" rel="noopener noreferrer"&gt;ChatGPT Work&lt;/a&gt; handles tasks with files and connected tools, and &lt;a href="https://learn.chatgpt.com/docs/automations" rel="noopener noreferrer"&gt;automations&lt;/a&gt; cover recurring work. For jobs that use your local machine, you need to keep that machine and the app running.&lt;/p&gt;

&lt;p&gt;I’m using ordinary ChatGPT and Plus as the baseline here. OpenAI also has &lt;a href="https://openai.com/index/introducing-dots/" rel="noopener noreferrer"&gt;dots&lt;/a&gt;, its always-on agents with cloud computers, rolling out to eligible higher-tier accounts. If your plan includes a dot, give it the job before buying another managed agent.&lt;/p&gt;

&lt;p&gt;With &lt;strong&gt;Hermes&lt;/strong&gt; , you make more of those choices yourself. The &lt;a href="https://github.com/NousResearch/hermes-agent" rel="noopener noreferrer"&gt;open-source agent&lt;/a&gt; supports persistent memory and reusable skills, with scheduled jobs and messaging integrations for ongoing work. You pick the model provider and where the agent runs, and you look after the connections between them.&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%2F1zmbehl9bf8m2loog8wz.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%2F1zmbehl9bf8m2loog8wz.png" alt="Muse and Grok Bot vs ChatGPT and Hermes: What Are You Paying For? - What You’re Buying" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What the Price Covers
&lt;/h2&gt;

&lt;p&gt;I’ve used the advertised monthly prices in US dollars. Check the offer in your own account, since your location and existing plan can affect what you pay.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Muse&lt;/strong&gt; has a free option with limited usage. &lt;a href="https://www.meta.com/help/subscriptions/1021145227643680/" rel="noopener noreferrer"&gt;Meta’s subscription page&lt;/a&gt; lists &lt;strong&gt;Power at $20 a month with 500 million Muse tokens per week&lt;/strong&gt; , and &lt;strong&gt;Maximum at $100 with 3 billion per week&lt;/strong&gt;. It doesn’t give a fixed numeric allowance for the free option.&lt;/p&gt;

&lt;p&gt;I can’t tell you how many useful tasks those token allowances will buy. Muse uses its own accounting, and treating its tokens as equivalent to a model provider’s API tokens would give us a misleading comparison. Put a few of your recurring jobs through it and watch how much allowance they use.&lt;/p&gt;

&lt;p&gt;For &lt;strong&gt;Grok Bot&lt;/strong&gt; , the entry point for new customers is &lt;strong&gt;$30 a month&lt;/strong&gt;. The &lt;a href="https://x.ai/news/x-subscription" rel="noopener noreferrer"&gt;unified X Subscription&lt;/a&gt;, announced October 2, puts Bot on &lt;a href="https://docs.x.ai/x-subscription/grok-bot" rel="noopener noreferrer"&gt;Premium and above&lt;/a&gt;. The &lt;a href="https://cursor.com/pricing" rel="noopener noreferrer"&gt;full plan list&lt;/a&gt; is Free, Plus at $8, Premium at $30, Super at $100, and Ultra at $200 monthly.&lt;/p&gt;

&lt;p&gt;The bundle makes more sense if you also use Cursor, but the two products draw from the same weekly allowance. Every Bot job uses allowance you may also want for coding that week, while third-party models in Cursor carry separate usage charges.&lt;/p&gt;

&lt;p&gt;If you’ve seen people recommending a $20 Cursor plan for Bot, they may still have an older subscription. Existing subscribers can keep those plans, while new customers start with the unified offer. Include taxes and any extra usage when comparing the bill.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ChatGPT Plus is $20 monthly&lt;/strong&gt; , according to &lt;a href="https://learn.chatgpt.com/docs/pricing" rel="noopener noreferrer"&gt;OpenAI’s pricing&lt;/a&gt;. If you already subscribe and have room in the allowance, you can try the job without adding another bill, which makes it my first recommendation for existing subscribers. API usage costs extra.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hermes&lt;/strong&gt; has no software subscription fee. You supply the model access and somewhere to run it, then cover any paid tools you connect. The easy part to leave out is your own maintenance time, especially if, like me, you enjoy working on the setup.&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%2F18y0njtqqzjll92kqlwu.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%2F18y0njtqqzjll92kqlwu.png" alt="Muse and Grok Bot vs ChatGPT and Hermes: What Are You Paying For? - What the Price Covers" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What People Have Delegated
&lt;/h2&gt;

&lt;p&gt;In &lt;a href="https://www.techradar.com/ai-platforms-assistants/i-tried-metas-new-muse-ai-agent-its-incredibly-useful-but-handing-it-my-digital-life-felt-deeply-uncomfortable" rel="noopener noreferrer"&gt;Eric Hal Schwartz’s&lt;/a&gt;&lt;strong&gt;&lt;a href="https://www.techradar.com/ai-platforms-assistants/i-tried-metas-new-muse-ai-agent-its-incredibly-useful-but-handing-it-my-digital-life-felt-deeply-uncomfortable" rel="noopener noreferrer"&gt;Muse&lt;/a&gt;&lt;/strong&gt;&lt;a href="https://www.techradar.com/ai-platforms-assistants/i-tried-metas-new-muse-ai-agent-its-incredibly-useful-but-handing-it-my-digital-life-felt-deeply-uncomfortable" rel="noopener noreferrer"&gt;trial for TechRadar&lt;/a&gt;, the useful moment was an email he’d missed. Muse spotted an unopened utility email about a solar-panel visit, discussed dates with him, and prepared a response for approval. I can see myself using an assistant for that kind of admin.&lt;/p&gt;

&lt;p&gt;Muse also found shopping options and asked for an Amazon login before proceeding. The report takes that task as far as the login request. Elsewhere in the trial, Schwartz described Muse forming a distorted picture of him from the emails it could see.&lt;/p&gt;

&lt;p&gt;That last part would bother me more than having to approve an email. I expect to review a draft. If the agent has misunderstood something about me, I first have to notice the assumption and work out which of its decisions relied on it.&lt;/p&gt;

&lt;p&gt;One &lt;a href="https://www.reddit.com/r/GrokBot/comments/1wa57uk/thoughts_on_grokbot_after_real_usecase/" rel="noopener noreferrer"&gt;e-commerce user reported mixed results with&lt;/a&gt;&lt;strong&gt;&lt;a href="https://www.reddit.com/r/GrokBot/comments/1wa57uk/thoughts_on_grokbot_after_real_usecase/" rel="noopener noreferrer"&gt;Grok Bot&lt;/a&gt;&lt;/strong&gt;. They found its email-marketing work useful, but it repeatedly missed instructions on product listings. The user also reported browser crashes and eventually abandoned a customer-chat experiment.&lt;/p&gt;

&lt;p&gt;A &lt;a href="https://www.reddit.com/r/GrokBot/comments/1w7db00/grok_bot_well_worth_the_money/" rel="noopener noreferrer"&gt;bookkeeping and data-entry user&lt;/a&gt; reported much better value. I can’t verify either user’s results, and their plans and models also form part of the picture. I take these accounts as suggestions for what to try, rather than a basis for promising anyone a particular saving.&lt;/p&gt;

&lt;p&gt;For a first assignment, give the agent a draft you know how to review. You’ll learn where it needs help without asking it to handle every unusual customer request along the way. Once you can use those drafts with little editing, you have a reason to give it more responsibility.&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%2F3dmzc6f5bai0jhmv33pz.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%2F3dmzc6f5bai0jhmv33pz.png" alt="Muse and Grok Bot vs ChatGPT and Hermes: What Are You Paying For? - What People Have Delegated" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Work You Own
&lt;/h2&gt;

&lt;p&gt;I’m willing to pay someone else to keep the agent’s machine running. That would remove a job I already understand, although I’d still make time to review what the agent produces.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://about.fb.com/news/2026/09/introducing-muse-personal-ai-agent/" rel="noopener noreferrer"&gt;Meta describes safeguards around&lt;/a&gt;&lt;strong&gt;&lt;a href="https://about.fb.com/news/2026/09/introducing-muse-personal-ai-agent/" rel="noopener noreferrer"&gt;Muse&lt;/a&gt;&lt;/strong&gt;, including a separate system that reviews network access, plus checks before sensitive actions. Those checks serve a different purpose from reading a customer email to make sure it says what I intended, and I want both before the agent sends anything under my name.&lt;/p&gt;

&lt;p&gt;I use that same separation in my &lt;a href="https://allagentsconsidered.com/blog/how-to-add-approval-gates-to-your" rel="noopener noreferrer"&gt;Hermes approval-gate workflow&lt;/a&gt;. The agent prepares the work and brings it back to me before sending. It’s an easy place to start while you get to know how a new agent handles your instructions.&lt;/p&gt;

&lt;p&gt;Maintenance has taken more of my attention than I expected at times. In &lt;a href="https://allagentsconsidered.com/blog/my-hermes-ai-agent-maintenance-routine" rel="noopener noreferrer"&gt;my Hermes maintenance routine&lt;/a&gt;, I wrote about blaming the model for a delay before tracing it to memory recall. I also had to investigate a scheduled report that hadn’t arrived.&lt;/p&gt;

&lt;p&gt;Those problems came from my setup and its integrations, and I had to sort them out. I still value the control &lt;strong&gt;Hermes&lt;/strong&gt; gives me, but I count that work when weighing a hosted alternative. If someone else can save me the troubleshooting, I’m happy to include that in what their service is worth.&lt;/p&gt;

&lt;p&gt;Control also involves knowing where your data goes. When you connect a self-hosted agent to a cloud model, it still sends information to that provider. Hosting the agent yourself gives you choices about those connections, and you need to pay attention to the choices you make.&lt;/p&gt;

&lt;p&gt;When you compare the options, include the time you spend getting usable work out of them. If you spend an hour rescuing a run and throw away the result, that hour still counts.&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%2Fxkmt82ka6yb4pjr4sgzr.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%2Fxkmt82ka6yb4pjr4sgzr.png" alt="Muse and Grok Bot vs ChatGPT and Hermes: What Are You Paying For? - The Work You Own" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Share this with someone weighing another agent subscription against the setup they already have.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Try One Job
&lt;/h2&gt;

&lt;p&gt;Pick something you do often enough to know when the result is useful. My &lt;a href="https://allagentsconsidered.com/blog/how-to-automate-your-morning-with" rel="noopener noreferrer"&gt;morning briefing workflow&lt;/a&gt; fits because I know what belongs in it and can tell when it leaves me digging through the inbox again.&lt;/p&gt;

&lt;p&gt;For an invoice-follow-up trial, give each option the same sample. Include an overdue invoice alongside one that’s already paid, and leave one record ambiguous on purpose. The agent needs to get the amounts and dates right, leave the paid invoice alone, and ask about the unclear record before preparing anything to send.&lt;/p&gt;

&lt;p&gt;If research takes up more of your week, ask for a dated competitor comparison with source links and a note about anything the agent couldn’t confirm. Open those links and check whether they support the claims. Include that reading time when you decide how much work the agent saved you.&lt;/p&gt;

&lt;p&gt;Run the same job through your existing method so you have something to compare it with. Keep the first attempt small enough to inspect completely, then repeat with fresh inputs. Record setup separately from the time each run takes.&lt;/p&gt;

&lt;p&gt;Keep a short note for each attempt:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Job and frequency:&lt;/strong&gt; What needs doing, and when?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Accepted result:&lt;/strong&gt; What must be correct before I use it?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Access and approvals:&lt;/strong&gt; Which accounts and actions are involved?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Human minutes:&lt;/strong&gt; Setup, supervision, review, corrections, and repair.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Spend and limits:&lt;/strong&gt; Added cost, allowance used, and any interruption.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Outcome:&lt;/strong&gt; Accepted, corrected, or abandoned, with the reason.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You’ll soon notice if a tool gives you more work than you started with. When the early results look useful, keep the same notes as you give it fresh inputs. That’s how you find the awkward cases the first attempt missed.&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%2F924rqy403u0fd8kpez2l.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%2F924rqy403u0fd8kpez2l.png" alt="Muse and Grok Bot vs ChatGPT and Hermes: What Are You Paying For? - Try One Job" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Where I’d Start
&lt;/h2&gt;

&lt;p&gt;For most readers already paying for &lt;strong&gt;ChatGPT&lt;/strong&gt; , that’s where I recommend starting. Give it the research task or draft, then see what you still have to do yourself. Check its scheduling options before buying another product to repeat the job.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Muse&lt;/strong&gt; is worth trying when its connections fit the admin you deal with every day. If your account is eligible, start with the free option and give it one of those jobs. A paid plan becomes easier to justify once you have a result you want again next week.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Grok Bot&lt;/strong&gt; makes more sense to me if you also want Cursor and have work that needs a persistent browser. Check that the shared allowance covers both, and pay attention when several bots use the computer at once. Those details will affect how comfortably it fits into your week.&lt;/p&gt;

&lt;p&gt;I still have a clear reason to keep &lt;strong&gt;Hermes&lt;/strong&gt; : I want to choose my model provider and work with files on my own host. I’m willing to accept some upkeep for that, but if you don’t need those choices, you have less reason to take on the maintenance yourself.&lt;/p&gt;

&lt;p&gt;And if you only do the job occasionally, it’s fine to finish it yourself. Setting up an agent should save you work often enough to repay the effort.&lt;/p&gt;

&lt;p&gt;Leave promised upgrades out of the buying decision until your account can use them. That includes the Muse Wonder app rollout mentioned at the start.&lt;/p&gt;

&lt;p&gt;Give Muse or Grok Bot one job for a month before moving the rest of your work. Keep track of how often you use the result and how much attention it takes to get there. By renewal time, you should know whether the service saves enough time to justify the bill, or whether you’re better off keeping the setup you already have.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Which recurring job would you give Muse or Grok Bot first? Tell me the task and what you use today in the comments.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;&lt;a href="https://allagentsconsidered.substack.com/subscribe" rel="noopener noreferrer"&gt;Subscribe&lt;/a&gt; for more agent workflows, maintenance notes, and practical comparisons.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>hermes</category>
      <category>chatgpt</category>
    </item>
    <item>
      <title>One MCP to Rule Them All</title>
      <dc:creator>cucoleadan</dc:creator>
      <pubDate>Tue, 06 Oct 2026 12:57:26 +0000</pubDate>
      <link>https://dev.to/cucoleadan/one-mcp-to-rule-them-all-400i</link>
      <guid>https://dev.to/cucoleadan/one-mcp-to-rule-them-all-400i</guid>
      <description>&lt;p&gt;You’ve connected an MCP server to Claude, and now you need the same tools in Codex.&lt;/p&gt;

&lt;p&gt;Each client needs its own connection. When you find another useful integration, you repeat the setup across the apps you use. Eventually, maintaining those connections starts looking like a separate hobby.&lt;/p&gt;

&lt;p&gt;Cloudflare’s &lt;strong&gt;MCP server portals&lt;/strong&gt; give that configuration a shared home. You connect each client to the portal, then manage the upstream servers from the Cloudflare dashboard. The portal keeps the same address as the collection grows.&lt;/p&gt;

&lt;p&gt;You might hear this described as an MCP gateway. Cloudflare’s current product name is worth knowing because &lt;strong&gt;MCP Portals&lt;/strong&gt; is what you’ll find in the dashboard.&lt;/p&gt;

&lt;p&gt;Code Mode makes the proposal more useful. It lets the agent discover tools as it needs them, which reduces the amount of catalog information loaded into the conversation upfront.&lt;/p&gt;

&lt;p&gt;I’ve based this piece on the documentation. The practical question is whether centralizing the tools removes enough maintenance to justify another service in the stack.&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%2Fjgya0euvyegibfrtur1p.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%2Fjgya0euvyegibfrtur1p.png" alt="One MCP to Rule Them All - hero image" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In this article:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;How one portal replaces repeated MCP setup&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Where Code Mode can reduce token overhead&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How to connect the agents you already use&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What to check before moving your tools behind Cloudflare&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;strong&gt;If connecting your tools takes more time than using them, &lt;a href="https://allagentsconsidered.substack.com/subscribe" rel="noopener noreferrer"&gt;subscribe&lt;/a&gt; for practical ways to make your agent stack easier to maintain.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Give the Tools a Home
&lt;/h2&gt;

&lt;p&gt;An MCP server gives an agent access to another system through a defined set of tools. Cloudflare’s &lt;a href="https://developers.cloudflare.com/cloudflare-one/access-controls/ai-controls/mcp-portals/" rel="noopener noreferrer"&gt;portal&lt;/a&gt; sits between your client and those servers, routing each request to the service that performs the work.&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%2Fgzoxxki8tzxhdclrq5wp.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%2Fgzoxxki8tzxhdclrq5wp.png" alt="One MCP to Rule Them All - Give the Tools a Home" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Suppose your agent already reads project issues through the portal. You decide it should also consult your team’s documentation. You register that documentation server in Cloudflare and attach it to the existing portal.&lt;/p&gt;

&lt;p&gt;The client might need to refresh its tool list before the new capabilities appear. The documentation service might also require its own login. The integration itself now has one place to be configured.&lt;/p&gt;

&lt;p&gt;The boundary matters: &lt;strong&gt;this works with remote HTTP MCP servers.&lt;/strong&gt; A local server running over stdio needs an HTTP endpoint before the portal can reach it.&lt;/p&gt;

&lt;p&gt;A filesystem tool on your laptop is a reasonable case for keeping a direct connection. Hosting it remotely would create a new problem merely to make the configuration look consistent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stop Loading the Whole Catalog
&lt;/h2&gt;

&lt;p&gt;Once the connections live together, the tool catalog becomes the next concern.&lt;/p&gt;

&lt;p&gt;A model needs enough information about a tool to call it correctly. That definition consumes context when the client loads it. A large catalog can occupy a substantial part of the conversation before the agent starts your task.&lt;/p&gt;

&lt;p&gt;I explored the broader context problem in &lt;a href="https://allagentsconsidered.substack.com/p/why-ai-gets-stupid-deep-in-the-thread" rel="noopener noreferrer"&gt;Why AI Gets Stupid Deep in the Thread&lt;/a&gt;. For this setup, the question is how much tool information the agent needs to carry before it knows what you’re asking it to do.&lt;/p&gt;

&lt;p&gt;Some clients already discover tools on demand. The overhead depends on how your client handles the catalog, so a long tool list alone doesn’t establish how much you’re paying for it.&lt;/p&gt;

&lt;p&gt;Cloudflare’s &lt;a href="https://developers.cloudflare.com/cloudflare-one/access-controls/ai-controls/mcp-portals/#code-mode" rel="noopener noreferrer"&gt;portal Code Mode&lt;/a&gt; changes the interface the agent sees. It provides &lt;code&gt;portal_codemode_search&lt;/code&gt; for discovery. A second tool, &lt;code&gt;portal_codemode_execute&lt;/code&gt;, runs the JavaScript the agent writes to use the available methods.&lt;/p&gt;

&lt;p&gt;The code runs in an isolated Worker environment. Portal management tools remain available alongside that interface, so the description of “two tools” applies to the replacement for the upstream catalog.&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%2Fmw0f2zhcw4k9051zyxyi.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%2Fmw0f2zhcw4k9051zyxyi.png" alt="One MCP to Rule Them All - Stop Loading the Whole Catalog" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Consider a read-only request to find overdue issues for a project called Website Refresh. The answer needs to show the issue titles with their source links. Everything else in the issue records is background unless it helps explain the delay.&lt;/p&gt;

&lt;p&gt;With Code Mode, the agent could use JavaScript to filter the retrieved records before returning them to the model. The model would read the evidence needed for the answer instead of the full response from every call.&lt;/p&gt;

&lt;p&gt;For that workflow to succeed, the filtering would have to preserve the relevant issues. The oldest overdue issue should still appear in the answer after the response has been trimmed.&lt;/p&gt;

&lt;h3&gt;
  
  
  What the Savings Cover
&lt;/h3&gt;

&lt;p&gt;Cloudflare reports roughly 1,000 tokens for the Code Mode interface to its own &lt;a href="https://blog.cloudflare.com/code-mode-mcp/" rel="noopener noreferrer"&gt;Cloudflare API MCP server&lt;/a&gt;. It compares that with an estimated 1.17 million tokens for equivalent traditional tool definitions. The company describes the difference as a 99.9% reduction for that tool surface.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The measurement covers the API catalog’s context footprint.&lt;/strong&gt; Your total task includes much more than the catalog, so the figure shouldn’t be read as a forecast for your bill.&lt;/p&gt;

&lt;p&gt;The model still spends tokens completing the work. Generated code might need repairs, and those retries have a cost. If your client already loads definitions selectively, the additional savings could be smaller.&lt;/p&gt;

&lt;p&gt;Subscription billing adds another distinction. Lower token use might help you stay within a usage limit while leaving the monthly price unchanged.&lt;/p&gt;

&lt;p&gt;I’d judge Code Mode by the cost of a correct result. That keeps the comparison tied to the work the agent was supposed to finish.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choose What Gets Through
&lt;/h2&gt;

&lt;p&gt;A central catalog also gives you a place to decide what the agent should be able to do.&lt;/p&gt;

&lt;p&gt;Cloudflare lets you &lt;a href="https://developers.cloudflare.com/cloudflare-one/access-controls/ai-controls/mcp-portals/#manage-tools-and-prompts" rel="noopener noreferrer"&gt;choose which tools a portal exposes&lt;/a&gt;. A research portal could expose the read operations from a project tracker. Write access could belong in a separate portal with a narrower Access policy.&lt;/p&gt;

&lt;p&gt;This is the same decision behind &lt;a href="https://allagentsconsidered.substack.com/p/when-to-use-mcps-clis-or-your-own" rel="noopener noreferrer"&gt;When to Use MCPs, CLIs, or Your Own Tool&lt;/a&gt;. The interface should fit the work you’re handing over. A server’s full catalog is rarely a useful definition of that work.&lt;/p&gt;

&lt;p&gt;Tool descriptions deserve attention too. Cloudflare supports aliases and description overrides, which gives you a way to clarify an ambiguous operation without changing the upstream server. An agent has a better chance of choosing correctly when the description explains the job the tool serves.&lt;/p&gt;

&lt;p&gt;New capabilities are enabled by default in ordinary portal mappings. If you want to review additions before an agent uses them, configure the mapping as an allowlist. Otherwise, an upstream update can broaden access after your initial review.&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%2F8lli7d2lrxbfr0t69459.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%2F8lli7d2lrxbfr0t69459.png" alt="One MCP to Rule Them All - Choose What Gets Through" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Keep Identity in View
&lt;/h3&gt;

&lt;p&gt;Cloudflare Access controls entry to the portal. A connected service can still require the user to authorize their own account through OAuth.&lt;/p&gt;

&lt;p&gt;There’s also an option to use an upstream admin credential. That changes whose permissions the request carries, so it deserves a deliberate choice.&lt;/p&gt;

&lt;p&gt;For an unattended agent, Cloudflare supports &lt;a href="https://developers.cloudflare.com/cloudflare-one/access-controls/ai-controls/mcp-portals/#connect-with-a-service-token" rel="noopener noreferrer"&gt;Access service tokens&lt;/a&gt;. The portal needs a matching Service Auth policy. Each linked server needs one as well.&lt;/p&gt;

&lt;p&gt;Those connections use the upstream admin credential. A server configured to require individual user OAuth won’t be available through a service-token session.&lt;/p&gt;

&lt;p&gt;I’d establish the workflow with an interactive login first. The unattended version becomes easier to assess once the basic connection has done something useful.&lt;/p&gt;

&lt;h3&gt;
  
  
  Follow a Failed Request
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://developers.cloudflare.com/cloudflare-one/access-controls/ai-controls/mcp-portals/#view-portal-logs" rel="noopener noreferrer"&gt;Portal logs&lt;/a&gt; give you somewhere to investigate a failed call. You can identify the upstream server involved and inspect the result status. The recorded duration helps distinguish a slow response from a quick rejection.&lt;/p&gt;

&lt;p&gt;My &lt;a href="https://allagentsconsidered.substack.com/p/my-hermes-ai-agent-maintenance-routine" rel="noopener noreferrer"&gt;Hermes maintenance routine&lt;/a&gt; starts with the same habit: find the failing layer before changing the model. The portal belongs in that investigation once your tools depend on it.&lt;/p&gt;

&lt;p&gt;Optional &lt;a href="https://developers.cloudflare.com/cloudflare-one/access-controls/ai-controls/mcp-portals/#route-portal-traffic-through-gateway" rel="noopener noreferrer"&gt;Cloudflare Gateway routing&lt;/a&gt; adds traffic inspection. With the appropriate data loss prevention policy, Gateway can block a call that contains matching sensitive data.&lt;/p&gt;

&lt;p&gt;That path requires upstream Streamable HTTP support. An SSE-only server won’t work with Gateway routing enabled.&lt;/p&gt;

&lt;p&gt;The controls still leave you responsible for deciding when an action needs review. My &lt;a href="https://allagentsconsidered.substack.com/p/how-to-add-approval-gates-to-your" rel="noopener noreferrer"&gt;Hermes approval-gate workflow&lt;/a&gt; applies when an agent is about to make a consequential change.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connect the First Client
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://developers.cloudflare.com/cloudflare-one/access-controls/ai-controls/mcp-portals/#prerequisites" rel="noopener noreferrer"&gt;dashboard setup&lt;/a&gt; requires an active domain on Cloudflare. You’ll also need an identity provider configured in Zero Trust.&lt;/p&gt;

&lt;p&gt;Open &lt;strong&gt;Zero Trust → Access controls → MCP Portals&lt;/strong&gt;. Register your remote server in the &lt;strong&gt;MCP servers&lt;/strong&gt; tab and complete its authentication setup.&lt;/p&gt;

&lt;p&gt;Create a portal on a subdomain such as &lt;code&gt;mcp.example.com&lt;/code&gt;. Attach the registered server to it, then choose the capabilities you want exposed. An Access policy determines who can connect.&lt;/p&gt;

&lt;p&gt;The resulting endpoint takes the form &lt;code&gt;https://mcp.example.com/mcp&lt;/code&gt;. Use your own domain in the examples below.&lt;/p&gt;

&lt;p&gt;These examples follow the documented client features. They haven’t been verified against a live portal across all four clients.&lt;/p&gt;

&lt;h3&gt;
  
  
  Claude Code
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://code.claude.com/docs/en/mcp" rel="noopener noreferrer"&gt;Claude Code&lt;/a&gt; accepts a remote HTTP connection with this command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add &lt;span class="nt"&gt;--transport&lt;/span&gt; http &lt;span class="nt"&gt;--scope&lt;/span&gt; user cloudflare-portal https://mcp.example.com/mcp

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

&lt;/div&gt;



&lt;p&gt;Open &lt;code&gt;/mcp&lt;/code&gt; inside Claude Code to complete authentication. Other Claude surfaces have their own remote connector setup.&lt;/p&gt;

&lt;h3&gt;
  
  
  Codex
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://learn.chatgpt.com/docs/extend/mcp?surface=cli" rel="noopener noreferrer"&gt;Codex&lt;/a&gt; supports a URL-based connection followed by OAuth login:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex mcp add cloudflare-portal &lt;span class="nt"&gt;--url&lt;/span&gt; https://mcp.example.com/mcp
codex mcp login cloudflare-portal
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Its local clients share configuration through &lt;code&gt;config.toml&lt;/code&gt;. ChatGPT web uses the separate connection described below.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hermes
&lt;/h3&gt;

&lt;p&gt;In &lt;a href="https://hermes-agent.nousresearch.com/docs/user-guide/features/mcp/" rel="noopener noreferrer"&gt;Hermes&lt;/a&gt;, merge the portal entry into the existing &lt;code&gt;mcp_servers&lt;/code&gt; block in &lt;code&gt;~/.hermes/config.yaml&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;mcp_servers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;cloudflare_portal&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://mcp.example.com/mcp"&lt;/span&gt;
    &lt;span class="na"&gt;auth&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;oauth&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Complete authentication from a fresh terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;hermes mcp login cloudflare_portal
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When Hermes runs on a remote host, follow its documented browser callback procedure. The login needs to reach the machine running the agent.&lt;/p&gt;

&lt;h3&gt;
  
  
  ChatGPT
&lt;/h3&gt;

&lt;p&gt;OpenAI’s &lt;a href="https://developers.openai.com/api/docs/guides/custom-mcp-server" rel="noopener noreferrer"&gt;current instructions&lt;/a&gt; use &lt;strong&gt;ChatGPT Plugins → plus button → Add custom MCP server&lt;/strong&gt; on the web.&lt;/p&gt;

&lt;p&gt;Enter the portal URL and configure OAuth. Create the plugin, then install it so it’s available in your conversations. Workspace permissions still apply.&lt;/p&gt;

&lt;p&gt;Use the app’s refresh control when you need to pull an updated tool catalog.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Send this to the builder who sets up the same MCP server in every new agent. The portal gives that repeated work a shared home.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://allagentsconsidered.substack.com/p/one-mcp-to-rule-them-all?utm_source=substack&amp;amp;utm_medium=email&amp;amp;utm_content=share&amp;amp;action=share" rel="noopener noreferrer"&gt;Share&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Put Code Mode to Work
&lt;/h2&gt;

&lt;p&gt;Cloudflare’s default portal policy makes Code Mode opt-in. Under that policy, connect with this address:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://mcp.example.com/mcp?codemode=search_and_execute
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The portal administrator can set a different policy. Check that setting before assuming the query parameter will take effect, then reconnect the client after changing its URL.&lt;/p&gt;

&lt;p&gt;Cloudflare also provides &lt;a href="https://developers.cloudflare.com/cloudflare-one/access-controls/ai-controls/mcp-portals/#optimize-context" rel="noopener noreferrer"&gt;lighter context options&lt;/a&gt;. The &lt;code&gt;minimize_tools&lt;/code&gt; option reduces the initial definitions while keeping full definitions available through discovery. Its &lt;code&gt;search_and_execute&lt;/code&gt; option provides proxy execution behind a search interface.&lt;/p&gt;

&lt;p&gt;Those options use the &lt;code&gt;optimize_context&lt;/code&gt; parameter. Portal Code Mode uses &lt;code&gt;codemode&lt;/code&gt; to enable JavaScript execution. The similar naming makes the distinction easy to miss.&lt;/p&gt;

&lt;p&gt;For a first comparison, use a task whose answer you can check yourself. The overdue-issue request from earlier gives you a bounded test:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use the connected project tracker to find up to five overdue
issues in Website Refresh. Treat an issue as overdue only if
it's open and its due date is before today.

Order the issues from oldest due date to newest. Return each
title with its source URL. Make no changes to the tracker.

If the due date is missing, leave that issue out. Report a
failed lookup rather than claiming there are no overdue issues.
&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%2F9wakgky99kaow17kzvl0.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%2F9wakgky99kaow17kzvl0.png" alt="One MCP to Rule Them All - Put Code Mode to Work" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Run it with ordinary portal access, then repeat it with Code Mode using the same model. Check the result against the tracker before comparing token use. A run that misses a qualifying issue shouldn’t count as a saving.&lt;/p&gt;

&lt;p&gt;Save the run record alongside the answer so you can see where any extra calls came from. It gives you something to inspect when a shorter response turns out to cost more.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Dependency You Add
&lt;/h2&gt;

&lt;p&gt;The convenience comes with a shared point of failure. If the portal becomes unavailable, every client depending on it loses that route to the tools.&lt;/p&gt;

&lt;p&gt;Cloudflare also sits on the request path. The decision to use it should include whether you’re comfortable routing the relevant data through its service.&lt;/p&gt;

&lt;p&gt;Before relying on that path, try adding the service your workflow depends on most. Some providers reject proxy-based OAuth clients, even when the underlying transport matches.&lt;/p&gt;

&lt;p&gt;A server already running its own Code Mode needs particular attention. Cloudflare’s &lt;a href="https://developers.cloudflare.com/cloudflare-one/access-controls/ai-controls/mcp-portals/#upstream-servers-with-code-mode-turned-on" rel="noopener noreferrer"&gt;portal documentation&lt;/a&gt; directs users to an upstream version exposing the full tool list. Check the upstream opt-out mechanism before combining the two.&lt;/p&gt;

&lt;p&gt;After a successful connection, check what happens when the upstream catalog changes. Manually configured OAuth servers have capability-sync restrictions, so refreshing the client won’t necessarily reveal a new tool. The &lt;a href="https://developers.cloudflare.com/cloudflare-one/access-controls/ai-controls/mcp-portals/#synchronize-the-mcp-server" rel="noopener noreferrer"&gt;server synchronization documentation&lt;/a&gt; is the place to investigate a stale catalog.&lt;/p&gt;

&lt;p&gt;Cloudflare currently lists a limit of &lt;a href="https://developers.cloudflare.com/cloudflare-one/account-limits/" rel="noopener noreferrer"&gt;80 servers per portal&lt;/a&gt;. An account supports up to 20 portals. Those limits leave room for a substantial setup, although filling the available capacity shouldn’t become the objective.&lt;/p&gt;

&lt;p&gt;Your upstream services retain their own charges after moving behind the portal. Some Cloudflare features also depend on your plan, including the Enterprise-only Logpush export for portal activity.&lt;/p&gt;

&lt;p&gt;Cloudflare’s &lt;a href="https://blog.cloudflare.com/enterprise-mcp/" rel="noopener noreferrer"&gt;AI Gateway&lt;/a&gt; handles model traffic separately. Its spending controls require their own setup, so they shouldn’t be counted as an automatic benefit of the MCP portal.&lt;/p&gt;

&lt;p&gt;For a small collection of local tools, I’d keep the direct connections. For someone maintaining the same remote integrations across several agents, a portal addresses work they’re already repeating.&lt;/p&gt;

&lt;p&gt;The more useful result is freedom to try another client without rebuilding the tool setup around it. You can spend that time finding out whether the new agent deserves the job.&lt;/p&gt;




&lt;p&gt;Which MCP are you tired of configuring in every agent? Leave a comment with the connection you’d move first.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://allagentsconsidered.substack.com/p/one-mcp-to-rule-them-all/comments" rel="noopener noreferrer"&gt;Leave a comment&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Subscribe for more ways to make your tools useful across the agents you use.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>hermes</category>
      <category>workflow</category>
      <category>agents</category>
    </item>
    <item>
      <title>Jev for Hermes: What It Does and Where It Fits</title>
      <dc:creator>cucoleadan</dc:creator>
      <pubDate>Tue, 29 Sep 2026 12:39:10 +0000</pubDate>
      <link>https://dev.to/cucoleadan/jev-for-hermes-what-it-does-and-where-it-fits-38n</link>
      <guid>https://dev.to/cucoleadan/jev-for-hermes-what-it-does-and-where-it-fits-38n</guid>
      <description>&lt;p&gt;My Hermes agent runs on GLM 5.3 Flash hosted on Fireworks, and it’s more than capable of doing anything I throw at it. So naturally, adding another model sounds like another account to maintain and another place to look when a request stalls.&lt;/p&gt;

&lt;p&gt;That kind of changed when I read more about Jev. It caught my attention because it takes on a smaller job. Before Hermes writes anything, it often has to choose which instructions to load or which tool to use. Those decisions happen repeatedly, even when the task itself is routine.&lt;/p&gt;

&lt;p&gt;TypeSafe built Jev for that kind of judgment. You supply the available answers, and Jev returns a decision with probabilities your software can use.&lt;/p&gt;

&lt;p&gt;I haven’t integrated Jev into Hermes yet, but I’ve been looking through TypeSafe’s documentation and the community integrations to work out where I’d try it. Skill selection looks like the strongest starting point, especially for an agent with a crowded catalog.&lt;/p&gt;

&lt;p&gt;And I can already see a few places where Jev could help my Hermes workflow. I’ll walk through where I’d try it and what would make it worth another API bill.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Subscribe for practical agent experiments, including what earns a permanent place in the stack.&lt;/strong&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%2Fsxavlfj87q0ilzqy6tde.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%2Fsxavlfj87q0ilzqy6tde.png" alt="Jev for Hermes: What It Does and Where It Fits - hero image" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In this article:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;What Jev does and where it fits&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Four integration ideas for Hermes&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A first experiment worth running&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The limits I’d check before relying on it&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;a href="https://typesafe.ai/blog/introducing-system-one-models-and-jev" rel="noopener noreferrer"&gt;TypeSafe introduced Jev in early access on September 15&lt;/a&gt;. The company calls it a System One model, designed for quick judgments inside software.&lt;/p&gt;

&lt;p&gt;You send it &lt;em&gt;state&lt;/em&gt;, such as a user request or an error report, alongside questions with defined answer types. Its &lt;a href="https://docs.typesafe.ai/introduction" rel="noopener noreferrer"&gt;API has three primitives&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Choice&lt;/strong&gt; selects from options you provide, returning a probability for each.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Score&lt;/strong&gt; rates the input against ordered descriptions in your rubric.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Noul&lt;/strong&gt; returns a number between zero and one representing the probability of “yes.”&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Suppose Hermes receives: “Find the deployment instructions for this project.” A Choice question could select between a documentation-search tool and a terminal tool, with an explicit “none fits” option.&lt;/p&gt;

&lt;p&gt;Jev would return the selected option. The main model would still have to prepare the search and interpret what came back.&lt;/p&gt;

&lt;p&gt;Choice and Score also return a confidence value derived from how concentrated the probabilities are. That value tells your code how decisive the answer looks. A confidence of 0.9 shouldn’t be read as proof that 90% of equivalent decisions will be correct in your workflow. You need your own examples to establish that relationship. &lt;a href="https://docs.typesafe.ai/confidence" rel="noopener noreferrer"&gt;TypeSafe explains the distinction here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://docs.typesafe.ai/models" rel="noopener noreferrer"&gt;current model page&lt;/a&gt; lists Jev 1.13 at &lt;strong&gt;$0.042 per million input tokens&lt;/strong&gt; , with output tokens free. The total request budget is 64k tokens, subject to a separate 32k limit for the state plus the longest question. Input is text only.&lt;/p&gt;

&lt;p&gt;At that price, repeated classification becomes cheap enough to investigate. Whether it saves money overall depends on what it replaces and how often a wrong route creates extra work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the Call Goes
&lt;/h2&gt;

&lt;p&gt;Jev fits beside the model running Hermes. The main model still handles open-ended reasoning and writing. Jev answers a narrower question at a point where the workflow needs to branch.&lt;/p&gt;

&lt;p&gt;For model routing, the proposed sequence is:&lt;/p&gt;




&lt;p&gt;User request → Jev chooses a route → code checks the result&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;selected model or existing fallback&lt;/p&gt;




&lt;p&gt;Think of a support request that mentions a failed payment without using the word “billing.” A decision model can judge its meaning, while ordinary code sends it to the corresponding queue.&lt;/p&gt;

&lt;p&gt;Exact conditions belong in code. If a spending limit is $10, compare the amount directly. Asking another model whether $12 exceeds the budget would be an expensive way to introduce uncertainty.&lt;/p&gt;

&lt;p&gt;Hermes supports &lt;a href="https://hermes-agent.nousresearch.com/docs/user-guide/features/plugins" rel="noopener noreferrer"&gt;plugins and lifecycle hooks&lt;/a&gt; where these calls can run. The right connection depends on whether Jev should be available on demand or consulted automatically. That’s the same choice behind my &lt;a href="https://allagentsconsidered.substack.com/p/when-to-use-mcps-clis-or-your-own" rel="noopener noreferrer"&gt;MCP, CLI, or custom tool article&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four Places I’d Try It
&lt;/h2&gt;

&lt;p&gt;The Hermes catalog already includes several community Jev integrations. Catalog entries pin specific commits, but the &lt;a href="https://hermes-agent.nousresearch.com/docs/user-guide/features/plugin-catalog" rel="noopener noreferrer"&gt;review covers metadata and declared capabilities&lt;/a&gt;. Inclusion doesn’t amount to a full code audit or evidence that the plugin improves your agent.&lt;/p&gt;

&lt;p&gt;Each of these ideas needs its own test.&lt;/p&gt;

&lt;h3&gt;
  
  
  Finding the Right Skill
&lt;/h3&gt;

&lt;p&gt;An agent with a large skill catalog has to choose from descriptions that often resemble each other. “Create a presentation” and “edit a presentation” look close until the wrong instructions send the task sideways.&lt;/p&gt;

&lt;p&gt;TypeSafe’s &lt;a href="https://docs.typesafe.ai/cookbooks/skill_suggestion" rel="noopener noreferrer"&gt;Hermes skill-suggestion cookbook&lt;/a&gt; tackles this with two requests. Jev first ranks the catalog, then reads more detail about the top three candidates. It can reject the shortlist when nothing fits.&lt;/p&gt;

&lt;p&gt;The cookbook reports that wrong skill loads dropped from 16.8% to 7.3% across the covered requests in a 488-request evaluation. Loading a skill unnecessarily fell from 9.8% to 4.0% on requests with no matching skill.&lt;/p&gt;

&lt;p&gt;Those are TypeSafe’s results, using Jev 1.12 with Claude Haiku 4.5 and a fixed Hermes roster. The evaluation includes generated requests, so it leaves plenty to check against everyday use.&lt;/p&gt;

&lt;p&gt;The community &lt;a href="https://hermes-agent.nousresearch.com/docs/plugins/jev-skill-router" rel="noopener noreferrer"&gt;jev-skill-router plugin&lt;/a&gt; implements this suggestion pattern. I’d compare its recommendation with Hermes’s existing choice before letting it influence a turn.&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%2Fxqe930t539cep8yukgng.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%2Fxqe930t539cep8yukgng.png" alt="Jev for Hermes: What It Does and Where It Fits - Finding the Right Skill" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For a request to create a new slide deck, I’d want the authoring skill selected. Loading the editing skill would count as a visible miss, even if the agent eventually recovered.&lt;/p&gt;

&lt;h3&gt;
  
  
  Choosing a Model
&lt;/h3&gt;

&lt;p&gt;A routing layer could send routine formatting to a cheaper model and reserve a stronger one for difficult work. Jev would select from routes the operator has already configured.&lt;/p&gt;

&lt;p&gt;The descriptions need to reflect the task’s consequences. “Change one line in the production deployment config” is a short request with more at stake than rewriting a long document.&lt;/p&gt;

&lt;p&gt;I’d give each route a precise description and include an uncertain outcome that keeps the existing model. Budget enforcement would stay in code.&lt;/p&gt;

&lt;p&gt;A useful test would compare total cost per completed task. Saving on the first call accomplishes little if the cheaper model needs several repair attempts. I’d also inspect the tasks Jev sent down the cheap route incorrectly, because those failures reveal where the descriptions are too generous.&lt;/p&gt;

&lt;p&gt;I use that same approach when &lt;a href="https://allagentsconsidered.substack.com/p/why-ai-benchmarks-fail-real-hermes" rel="noopener noreferrer"&gt;testing models through a real Hermes workday&lt;/a&gt;. The whole task has to finish before the cheaper route earns its place.&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%2Fwcd0obmfdz9k0p0vx9yo.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%2Fwcd0obmfdz9k0p0vx9yo.png" alt="Jev for Hermes: What It Does and Where It Fits - Choosing a Model" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Reviewing Tool Calls
&lt;/h3&gt;

&lt;p&gt;Hermes already has an auxiliary-model approval path. The community &lt;a href="https://hermes-agent.nousresearch.com/docs/plugins/jev-approvals" rel="noopener noreferrer"&gt;jev-approvals plugin&lt;/a&gt; connects Jev to that part of the system.&lt;/p&gt;

&lt;p&gt;A narrow question might ask whether a proposed terminal command changes files outside the approved project directory. The state would include the command and its resolved working directory, giving the judgment something concrete to inspect.&lt;/p&gt;

&lt;p&gt;I’d evaluate recorded commands first, with the existing approval rules left in charge. A classification that overlooks an external write is an immediate failure, regardless of how confident the model sounds.&lt;/p&gt;

&lt;p&gt;My &lt;a href="https://allagentsconsidered.substack.com/p/how-to-add-approval-gates-to-your" rel="noopener noreferrer"&gt;approval-gate workflow&lt;/a&gt; still needs a human decision where the consequences warrant one. Jev’s score wouldn’t supply permission to send a client message.&lt;/p&gt;

&lt;p&gt;This is also a place to retain exact checks. If code already knows that a path is outside the workspace, it should enforce that boundary directly.&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%2Flu8xruuc9dmaenkpnkla.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%2Flu8xruuc9dmaenkpnkla.png" alt="Jev for Hermes: What It Does and Where It Fits - Reviewing Tool Calls" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Filtering Retrieved Context
&lt;/h3&gt;

&lt;p&gt;An agent retrieving old project notes often gets more text than the next task needs. Jev could judge which passages deserve space in the main model’s context.&lt;/p&gt;

&lt;p&gt;For example, a request about the current deployment might retrieve both an old setup note and its replacement. A useful filter would retain the current instructions and recognize that the earlier note was superseded, provided that evidence is present.&lt;/p&gt;

&lt;p&gt;Dropping the current note would be harder to spot than loading the wrong skill. The agent might proceed confidently with the only version it received.&lt;/p&gt;

&lt;p&gt;The community &lt;a href="https://hermes-agent.nousresearch.com/docs/plugins/hermes-jev" rel="noopener noreferrer"&gt;hermes-jev plugin&lt;/a&gt; includes context curation with shadow modes for observing proposed changes. I’d inspect those decisions before applying them, especially when a discarded passage contains a constraint.&lt;/p&gt;

&lt;p&gt;There’s a data tradeoff here too. The hosted service receives the content being evaluated. TypeSafe says it doesn’t train on customer requests or responses, while its model documentation describes zero data retention for enterprise customers. Those are different commitments.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;If you’re building your own agent setup, &lt;a href="https://allagentsconsidered.substack.com/subscribe" rel="noopener noreferrer"&gt;subscribe to All Agents Considered&lt;/a&gt; for practical ways to improve it without spending every weekend maintaining it.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  A First Experiment
&lt;/h2&gt;

&lt;p&gt;I’d start with skill selection on one Hermes profile, using a small set of real requests. During the first pass, Jev would only produce a log for comparison.&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%2Fz71yjwhpawizpc2ggvn6.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%2Fz71yjwhpawizpc2ggvn6.png" alt="Jev for Hermes: What It Does and Where It Fits - A First Experiment" width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’d collect around 50 requests and label the appropriate skill myself, including cases where no skill applies. That’s enough for an exploratory check, though it wouldn’t establish reliability across every kind of task.&lt;/p&gt;

&lt;p&gt;Each record would contain the request and both selections. I’d add a short review note whenever they disagreed, so I could return to the reason behind the label.&lt;/p&gt;

&lt;p&gt;Ambiguous cases deserve attention. A request to “improve these slides” may require clarification before either selector has a fair chance. Forcing a correct-answer label onto unclear input would make the comparison look more precise than the input warrants.&lt;/p&gt;

&lt;p&gt;After refining the question descriptions, I’d evaluate a fresh set of requests. Otherwise, I’d be measuring how well I’d tuned Jev to the examples I’d already seen.&lt;/p&gt;

&lt;p&gt;Only then would I let the suggestion reach Hermes. Even a correct suggestion can be ignored, so the second stage needs to measure which skill the agent loads and whether the task completes properly.&lt;/p&gt;

&lt;p&gt;The fallback would preserve the current selection process whenever Jev fails or the answer is uncertain. I’d keep the questions and threshold settings together in one file, where changes are easy to review.&lt;/p&gt;

&lt;p&gt;The result I care about is fewer wrong skill loads at an acceptable delay. Cost belongs beside that result, including any extra work caused by a bad suggestion.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Share this with someone considering Jev for their agent. A small comparison gives them somewhere concrete to start.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Using Other Agents
&lt;/h2&gt;

&lt;p&gt;TypeSafe provides &lt;a href="https://docs.typesafe.ai/sdk/python" rel="noopener noreferrer"&gt;Python&lt;/a&gt; and &lt;a href="https://docs.typesafe.ai/sdk/javascript" rel="noopener noreferrer"&gt;JavaScript&lt;/a&gt; SDKs, so the same decision call can sit inside a custom agent application.&lt;/p&gt;

&lt;p&gt;Its &lt;a href="https://docs.typesafe.ai/agent-skill" rel="noopener noreferrer"&gt;coding-agent skill&lt;/a&gt; gives tools such as Claude Code and Codex documentation for writing those integrations. Installing it supplies instructions. Runtime calls still need an integration and API credentials.&lt;/p&gt;

&lt;p&gt;For an agent that supports external tools, an MCP wrapper is one possible way to expose Jev on demand. Automatically consulting it before every turn requires an extension point in that particular agent. The connection should follow the host’s supported interfaces.&lt;/p&gt;

&lt;p&gt;The distinction is useful when asking a coding agent to build this. Specify the decision you want to test and where its answer will be consumed. “Add Jev to my agent” leaves most of the design undecided.&lt;/p&gt;

&lt;p&gt;For Hermes, the community &lt;a href="https://hermes-agent.nousresearch.com/docs/plugins/jev-typesafe" rel="noopener noreferrer"&gt;jev-typesafe plugin&lt;/a&gt; exposes explicit tools such as &lt;code&gt;jev_route&lt;/code&gt; and &lt;code&gt;jev_score&lt;/code&gt;. That offers a smaller entry point: ask the agent to evaluate one saved request, inspect the returned answer, and compare it with your own judgment before considering automatic calls.&lt;/p&gt;

&lt;p&gt;For a custom agent, I’d put the equivalent call behind a small function that returns a suggested route. The caller would check that the route exists and remains allowed for the current task. Credentials would stay in the environment. Keeping execution outside that function makes it easier to replace Jev later without rewriting the workflow around it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Limits Worth Reading
&lt;/h2&gt;

&lt;p&gt;TypeSafe’s &lt;a href="https://docs.typesafe.ai/model-jaggedness/jev-1.13" rel="noopener noreferrer"&gt;Jev 1.13 limitations page&lt;/a&gt; is worth reading before copying an integration.&lt;/p&gt;

&lt;p&gt;It describes a model that reads instructions word for word. Implied conditions can be missed, and complicated chains of reasoning make answers less dependable. Sending a large amount of irrelevant text also hurts performance.&lt;/p&gt;

&lt;p&gt;Numeric tasks are another weak spot. Counting and date comparisons belong in code, even when Jev helps interpret the language around them.&lt;/p&gt;

&lt;p&gt;It also needs adversarial testing. A document being evaluated may contain instructions intended to influence the judgment. Constraining the response format doesn’t settle whether the selected answer is right.&lt;/p&gt;

&lt;p&gt;That distinction gets lost in the launch phrase “zero hallucinations.” Jev constrains the available output, so a Choice answer comes from the supplied options. It can still select the wrong one with confidence.&lt;/p&gt;

&lt;p&gt;For my stack, the hosted dependency is another consideration. An unavailable decision service needs to leave the workflow with a usable fallback. I’d record the returned model version during evaluation too, because changing models complicates comparisons.&lt;/p&gt;

&lt;p&gt;It would also need a place in &lt;a href="https://allagentsconsidered.substack.com/p/my-hermes-ai-agent-maintenance-routine" rel="noopener noreferrer"&gt;my Hermes maintenance routine&lt;/a&gt;. If Jev stops responding, I want to know before I start blaming the main model.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where I’d Start
&lt;/h2&gt;

&lt;p&gt;Jev looks worth testing when a recurring judgment already causes trouble. Skill selection gives me a concrete place to measure that, with decisions I can inspect before they affect the work.&lt;/p&gt;

&lt;p&gt;For an agent with a handful of tools and no selection problem, I’d leave the setup alone. The same goes for a workflow whose relevant data has to stay on the machine.&lt;/p&gt;

&lt;p&gt;I haven’t established that Jev will improve my Hermes stack. The docs give me enough reason to run a small comparison, and enough detail to recognize a disappointing result.&lt;/p&gt;

&lt;p&gt;If it reduces wrong skill loads, I’d let it suggest a skill during real work and see whether that improvement survives. If keeping the selector useful becomes another weekly maintenance job, I’d have my answer too.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Which decision would you want Jev to handle in your agent? Tell me the task, and where your current setup gets it wrong.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://allagentsconsidered.substack.com/p/jev-for-hermes-what-it-does-and-where/comments" rel="noopener noreferrer"&gt;Leave a comment&lt;/a&gt;&lt;/p&gt;




</description>
      <category>hermes</category>
      <category>ai</category>
      <category>agents</category>
      <category>workflows</category>
    </item>
    <item>
      <title>The AI Memory Layer I Forgot Was Running For the Past Half Year</title>
      <dc:creator>cucoleadan</dc:creator>
      <pubDate>Tue, 22 Sep 2026 13:36:34 +0000</pubDate>
      <link>https://dev.to/cucoleadan/the-ai-memory-layer-i-forgot-was-running-for-the-past-half-year-5083</link>
      <guid>https://dev.to/cucoleadan/the-ai-memory-layer-i-forgot-was-running-for-the-past-half-year-5083</guid>
      <description>&lt;p&gt;Hindsight has been running behind my Hermes agent for nearly half a year, and somewhere along the way I almost forgot it was there.&lt;/p&gt;

&lt;p&gt;Old decisions come back when they’re needed, conversations carry over into the next session, and work picks up without the familiar ten minutes of explaining everything again. After a while, you stop noticing that part. You expect the agent to remember because most days it does.&lt;/p&gt;

&lt;p&gt;That’s a fairly big change from June, when I wrote that Hindsight might be too much hassle for too little return. At the time, keeping another service running felt like a questionable way to save myself work.&lt;/p&gt;

&lt;p&gt;It stayed in the stack anyway, and I’ve been meaning to revisit that comment. Looking through the logs for this article made me realize how far my attention had moved on while memory kept doing its job.&lt;/p&gt;

&lt;p&gt;Meanwhile, the models available to handle that background work have become cheaper and more capable. If you’re using Hermes every day and still explaining the same project each time you open a session, I’d put custom memory much higher on your list than another model upgrade.&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%2Fwyebapc34glz6j3q2jhp.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%2Fwyebapc34glz6j3q2jhp.png" alt="The AI Memory Layer I Forgot Was Running For the Past Half Year - hero image" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  In This Edition
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Where Hindsight fits beside my files and workflow instructions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What changed my mind after the early retrieval problems&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How two agents hit a shared limit, and what happened to the failed writes&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Whether the extra service is worth running in your own setup&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;Subscribe to All Agents Considered for practical agent workflows and follow-ups on the setups I keep using.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://allagentsconsidered.substack.com/p/the-ai-memory-layer-i-forgot-was?utm_source=substack&amp;amp;utm_medium=email&amp;amp;utm_content=share&amp;amp;action=share" rel="noopener noreferrer"&gt;Share&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  When Remembering Becomes Normal
&lt;/h2&gt;

&lt;p&gt;There’s a particular kind of friction you get used to with AI. A conversation goes well, you settle a decision, and a few days later you’re explaining the whole thing again because the new session has no useful recollection of it.&lt;/p&gt;

&lt;p&gt;You start compensating without thinking about it. Before asking for help, you gather the old context and prepare a small briefing for an assistant you’ve already briefed. Eventually that preparation feels like part of using the tool.&lt;/p&gt;

&lt;p&gt;Custom memory takes some of that work off your hands. In my setup, Hindsight keeps useful information from sessions and brings relevant context back into later ones, so a decision has a chance of surviving beyond the conversation where it was made.&lt;/p&gt;

&lt;p&gt;The difference shows up in ordinary work. Earlier this month, Hermes picked up a research workflow from June and used the output format we’d settled on then. I’d forgotten that I’d specified it, which made it slightly embarrassing to be reminded by my own agent.&lt;/p&gt;

&lt;p&gt;Another session brought back an older decision about article numbering. Hermes applied it and carried on, and there was no reason to stop what I was doing and think about the memory system responsible.&lt;/p&gt;

&lt;p&gt;Multiply that kind of thing across a working week and you begin to understand why this follow-up took so long. There’s less to complain about, so your attention goes somewhere else.&lt;/p&gt;

&lt;p&gt;The week of logs I checked contained 177 recalls and 183 writes. Memory was being used throughout the week while I was thinking about the work in front of me. Those numbers won’t tell you how useful every result was, but they explain why removing the service now would be noticeable.&lt;/p&gt;

&lt;p&gt;Even returning to older work feels different. Asking about something from August gives Hermes a place to start without requiring me to remember which conversation contained it. That’s useful when the reason for a decision never made it into the finished document.&lt;/p&gt;

&lt;h2&gt;
  
  
  It Took Some Settling In
&lt;/h2&gt;

&lt;p&gt;Anyone who read &lt;a href="https://allagentsconsidered.substack.com/p/i-built-my-ai-stack-to-survive-vendor" rel="noopener noreferrer"&gt;my vendor-lock-in article&lt;/a&gt; might remember this sentence:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I added a 3rd party memory provider called Hindsight, but I might drop it as it’s proven to be too much hassle for too little return for me.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There was a reason for that frustration. A retrieval timeout had made Hermes feel slow, and I spent days blaming the model before finding the delay earlier in the chain. The agent was waiting for memory before it even reached the part I’d been blaming.&lt;/p&gt;

&lt;p&gt;Adding a service to reduce repetitive work feels a bit silly when you’re spending your evening diagnosing that service. At that point, going back to a simpler setup was tempting.&lt;/p&gt;

&lt;p&gt;But the early trouble stopped defining the experience. Hindsight stayed running while the rest of the stack changed around it, and retrieving old context became something I relied on without making a separate decision to trust it.&lt;/p&gt;

&lt;p&gt;My setup is still fairly modest. Hindsight runs in a container on hardware I already own, with a Nemotron model through a GPU provider handling fact extraction. That’s the step that turns a session into information the memory system can keep.&lt;/p&gt;

&lt;p&gt;Most settings remain at their defaults, with a limit on how much recalled text comes back into each request. A useful reminder about the current project should fit into the work without dragging a pile of unrelated history along with it.&lt;/p&gt;

&lt;p&gt;There are more settings available if you want to spend your weekend experimenting. After the early troubleshooting, I was happy to leave them alone and get back to using Hermes.&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%2Ff6zsanxijo5tlro4knic.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%2Ff6zsanxijo5tlro4knic.png" alt="The AI Memory Layer I Forgot Was Running For the Past Half Year - It Took Some Settling In" width="800" height="220"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Better Models Change the Calculation
&lt;/h2&gt;

&lt;p&gt;Nearly half a year is a long time in AI. The cheaper end of the model market has improved enough that background jobs like this deserve another look, especially if your impression of them comes from an older setup.&lt;/p&gt;

&lt;p&gt;You can see the broader direction in &lt;a href="https://artificialanalysis.ai/trends" rel="noopener noreferrer"&gt;Artificial Analysis’s tracking of model capability and inference prices&lt;/a&gt;. More capable models keep becoming available at lower price points, giving us better options for work that has to happen repeatedly without turning every request into an expensive event.&lt;/p&gt;

&lt;p&gt;Memory is a good use for that progress. Extracting a project decision from a conversation is a narrower job than carrying out the project itself. It needs a model that handles the information reliably, but paying for the most expensive model on every background call is a choice you should have a reason for.&lt;/p&gt;

&lt;p&gt;And this work adds up. Each session leaves information to process, even when the visible task was small. Cheaper models make it easier to keep that happening as part of normal use instead of saving memory for the occasions when you remember to ask.&lt;/p&gt;

&lt;p&gt;My own setup uses an existing provider account and an existing server, so adding Hindsight didn’t add another memory subscription. It still uses compute and provider capacity, but the extra service has been easy enough to accommodate inside the stack.&lt;/p&gt;

&lt;p&gt;This is the direction I wanted when putting together &lt;a href="https://allagentsconsidered.substack.com/p/the-30-hermes-stack-that-makes-claude" rel="noopener noreferrer"&gt;the $30 Hermes setup&lt;/a&gt;: affordable components that keep being useful after the initial excitement wears off. The options for putting that kind of setup together have improved since then.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For someone already running Hermes daily, I don’t see a good reason to keep putting off third-party memory because of what it used to cost or how capable the cheaper models used to be.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You’ll still spend some time connecting it and checking the results. But if you’re repeatedly supplying context the agent has already seen, you’re already spending time on memory. You’re doing the retrieval yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Even the Failure Went Unnoticed
&lt;/h2&gt;

&lt;p&gt;The most telling detail in the logs was something nobody in the house had noticed.&lt;/p&gt;

&lt;p&gt;Two agents use the same Hindsight deployment, each with its own memory bank. One is mine and the other belongs to a family member, but both use the same GPU provider account and API key for extraction.&lt;/p&gt;

&lt;p&gt;One morning in September, both were busy. My agent had also delegated work to several subagents, whose returning results triggered additional recalls during the run.&lt;/p&gt;

&lt;p&gt;When both banks needed to extract facts around the same time, the provider returned rate-limit errors. A batch of writes retried four times over roughly seven seconds and failed.&lt;/p&gt;

&lt;p&gt;Then, about ninety seconds later, the queue tried again. The batch went through and the operation completed.&lt;/p&gt;

&lt;p&gt;By the time I found it in the logs days later, there was nothing left for me to fix in that batch. It had failed and recovered while we carried on using the agents.&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%2F8d6wcvavwspcufwkjq6n.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%2F8d6wcvavwspcufwkjq6n.png" alt="The AI Memory Layer I Forgot Was Running For the Past Half Year - Even the Failure Went Unnoticed" width="800" height="1067"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After the earlier timeout, I’d expected another memory problem to announce itself by getting in the way of my work. This one left a trace in the logs and was over before either of us noticed.&lt;/p&gt;

&lt;p&gt;There’s still a useful detail to take from it. Separate memory banks were sharing the same extraction capacity, so two apparently separate agents could hit the same limit. If you’re running several scheduled jobs, check whether they all reach that provider at once before deciding you need a different model.&lt;/p&gt;

&lt;p&gt;For my setup, though, the recovery was the more encouraging part. The queue gave the provider time to accept the work, and the failed batch didn’t need me to intervene. That’s the kind of behavior that makes a background service easier to live with.&lt;/p&gt;

&lt;h2&gt;
  
  
  Memory Fits Around Your Files
&lt;/h2&gt;

&lt;p&gt;None of this has changed where the working documents live. The current article still belongs in its folder, and the instructions for a recurring task still sit beside that task.&lt;/p&gt;

&lt;p&gt;Hindsight helps bring back the conversation around the work. If a decision needs to govern every run, it deserves a place in the instructions where Hermes is told to read it.&lt;/p&gt;

&lt;p&gt;That’s why the &lt;a href="https://allagentsconsidered.substack.com/p/the-one-file-that-made-hermes-finally" rel="noopener noreferrer"&gt;Mistake Ledger&lt;/a&gt; still has a job. A verified fix for the research sorter belongs beside the sorter. Recalling an old conversation is useful, but a rule that must apply every time should be easy to find every time.&lt;/p&gt;

&lt;p&gt;Both fit comfortably into the same setup. Files give the work a clear shape, while memory helps the agent pick up details you’d otherwise have to supply again.&lt;/p&gt;

&lt;p&gt;You don’t need to turn the whole workspace into a memory experiment to get something useful out of it. Start with the projects you return to often and pay attention to whether the old decisions come back correctly. An agent remembering the wrong version of a decision is something to correct before you rely on it more widely.&lt;/p&gt;

&lt;p&gt;Once that part is working, give yourself permission to stop fiddling with it. It’s easy to spend so much time improving the machinery that you never get around to using it.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Much Easier Recommendation Now
&lt;/h2&gt;

&lt;p&gt;Coming back to Hindsight after nearly half a year, the surprise is how little of the story involves maintaining it.&lt;/p&gt;

&lt;p&gt;The early frustration was real, but it no longer describes an ordinary week. Most of the time, Hermes retrieves something useful and the work continues. Even the September incident had finished recovering before I knew it had happened.&lt;/p&gt;

&lt;p&gt;With cheaper, more capable models available for the background work, custom memory is also easier to recommend than it was when I started. If Hermes is part of your daily routine, give it a way to carry more of that routine forward.&lt;/p&gt;

&lt;p&gt;That’s where my setup has ended up. I open Hermes expecting it to know enough about the project for us to get started, and most days it does. Hindsight is still running on the server, but it’s been a while since it felt like another project I had to look after.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;What does your agent still make you explain every time you come back? Tell me in the comments.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://allagentsconsidered.substack.com/p/the-ai-memory-layer-i-forgot-was/comments" rel="noopener noreferrer"&gt;Leave a comment&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Subscribe to All Agents Considered for practical ways to make your agent more useful in everyday work.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>memory</category>
      <category>hermes</category>
      <category>ai</category>
      <category>agents</category>
    </item>
    <item>
      <title>I Asked an AI Agent Whether You Should Subscribe to My Newsletter</title>
      <dc:creator>cucoleadan</dc:creator>
      <pubDate>Tue, 15 Sep 2026 13:15:03 +0000</pubDate>
      <link>https://dev.to/cucoleadan/i-asked-an-ai-agent-whether-you-should-subscribe-to-my-newsletter-314g</link>
      <guid>https://dev.to/cucoleadan/i-asked-an-ai-agent-whether-you-should-subscribe-to-my-newsletter-314g</guid>
      <description>&lt;p&gt;I asked Codex to send a fresh agent to my newsletter and help a stranger decide whether to subscribe.&lt;/p&gt;

&lt;p&gt;The reader I gave it was someone who uses AI every day but doesn’t code. I wanted the agent to explain who AAC is for, pick three articles to start with, and work out what a subscriber would get.&lt;/p&gt;

&lt;p&gt;It got most of that right. It understood the audience and chose a sensible reading order. Then it reached the questions about courses, support, and paid access, and couldn’t verify enough to give a complete answer.&lt;/p&gt;

&lt;p&gt;That was the useful part of the experiment. The agent could explain my work, but some of the details a reader would need before paying were still out of reach.&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%2Fzyb720hx3l0xjkgfxbsf.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%2Fzyb720hx3l0xjkgfxbsf.png" alt="I Asked an AI Agent Whether You Should Subscribe to My Newsletter - hero image" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  In This Edition
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;What an agent learned about AAC from the public site.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The three articles it chose for someone who doesn’t code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Why finding an announcement didn’t tell it what was available.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A prompt to try on your newsletter, consulting site, or public project.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;Subscribe to All Agents Considered for practical experiments with AI agents, including the ones that send me back to inspect my own work.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Give It a Stranger’s View
&lt;/h2&gt;

&lt;p&gt;I’ve already &lt;a href="https://allagentsconsidered.substack.com/p/what-hermes-thinks-i-do-when-im-not" rel="noopener noreferrer"&gt;asked Hermes what my files say I do all day&lt;/a&gt;. It described me as an &lt;strong&gt;AI Workflow Field Reporter With a Side Cart of Websites&lt;/strong&gt; , which is still a ridiculous thing to put on LinkedIn.&lt;/p&gt;

&lt;p&gt;Hermes had an advantage in that exercise. It could see the work behind the articles, including notes and project files a reader would never encounter.&lt;/p&gt;

&lt;p&gt;This time I wanted the public version. Someone looking at my newsletter doesn’t know which plans I’ve abandoned or what I meant when I wrote the About page. An agent helping that person should have to work from the same evidence.&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%2Fi3x00ifaehhs09gpdp8y.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%2Fi3x00ifaehhs09gpdp8y.png" alt="I Asked an AI Agent Whether You Should Subscribe to My Newsletter - Give It a Stranger’s View" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A few days ago, I had Codex run the task through a subagent, a separate agent conversation that received none of our earlier discussion. It got the public URL and instructions to use public sources, avoid local files, and say when it couldn’t verify something.&lt;/p&gt;

&lt;p&gt;The request came down to this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I use AI every day, but I don’t code. Should I subscribe to All Agents Considered, and which three articles should I read first?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I also asked what free and paid subscribers get, whether it could confirm any courses or support, and who should skip the publication. Each answer needed sources.&lt;/p&gt;

&lt;p&gt;The agent reported that it used no local files. Its tools still had workspace access, so this depended on following the instruction. The test gave it a fresh conversation, not a physically separate computer.&lt;/p&gt;

&lt;p&gt;We saved its answer before sending any feedback. That gave me a record of what it found without being coached toward my description of AAC.&lt;/p&gt;

&lt;h2&gt;
  
  
  It Found the Right Readers
&lt;/h2&gt;

&lt;p&gt;The agent described AAC as practical writing about getting more control over everyday AI work. It picked up the recurring subjects: agents, local models, memory, files, automation, and the checks that make those setups useful.&lt;/p&gt;

&lt;p&gt;It also found the sentence in the &lt;a href="https://allagentsconsidered.substack.com/about" rel="noopener noreferrer"&gt;About page&lt;/a&gt; saying readers don’t need to be engineers. Its qualification was fair: following some of the setup articles still means getting comfortable with files, configuration, and technical tools.&lt;/p&gt;

&lt;p&gt;That distinction matters here. A title like &lt;a href="https://allagentsconsidered.substack.com/p/the-30-hermes-stack-that-makes-claude" rel="noopener noreferrer"&gt;The $30 Hermes Stack&lt;/a&gt; or &lt;a href="https://allagentsconsidered.substack.com/p/how-i-built-a-substack-api-with-hermes" rel="noopener noreferrer"&gt;How I Built a Substack API With Hermes and Codex&lt;/a&gt; could make the archive look intimidating to someone who doesn’t code. The agent found enough surrounding explanation to understand who those articles are trying to help.&lt;/p&gt;

&lt;p&gt;It then chose these three posts, in this order:&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%2F2z660u13zbja32fhww0m.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%2F2z660u13zbja32fhww0m.png" alt="I Asked an AI Agent Whether You Should Subscribe to My Newsletter - It Found the Right Readers" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First, &lt;a href="https://allagentsconsidered.substack.com/p/how-to-build-ai-workflows" rel="noopener noreferrer"&gt;How to Build AI Workflows When You’re Tired of Optimizing Prompts&lt;/a&gt;.&lt;/strong&gt; Its reason was the familiar starting point: copying between chats, repeating context, and holding the whole process together yourself. That gives a newcomer a reason to care about workflows before they start configuring one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Next, &lt;a href="https://allagentsconsidered.substack.com/p/tear-down-your-ai-workflow-and-rebuild" rel="noopener noreferrer"&gt;Tear Down Your AI Workflow and Rebuild It Like This&lt;/a&gt;.&lt;/strong&gt; The agent picked out the lesson about checking whether your sources serve the work before connecting more services. It’s a useful next step once you’ve decided what you want the workflow to do.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Then, &lt;a href="https://allagentsconsidered.substack.com/p/why-my-best-hermes-workflow-consists" rel="noopener noreferrer"&gt;Why My Best Hermes Workflow Consists Of Plain MD Files&lt;/a&gt;.&lt;/strong&gt; This brings the reader to the files themselves and how an agent finds the current document among everything else you’ve saved.&lt;/p&gt;

&lt;p&gt;The titles and article text were checked through search after the answer came back. All three were real, and the reasons fit the reader in the prompt.&lt;/p&gt;

&lt;p&gt;I wouldn’t call that the only good route through AAC. Someone trying to reclaim their mornings might start with &lt;a href="https://allagentsconsidered.substack.com/p/how-to-automate-your-morning-with" rel="noopener noreferrer"&gt;the morning briefing&lt;/a&gt;. Someone worried about losing access to a provider might go straight to &lt;a href="https://allagentsconsidered.substack.com/p/i-built-my-ai-stack-to-survive-vendor" rel="noopener noreferrer"&gt;the vendor-lock-in piece&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;What made this answer useful was that the agent explained its choices. I could see how each recommendation followed from the person I’d described.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where It Got Stuck
&lt;/h2&gt;

&lt;p&gt;The odd detail was that the agent couldn’t directly open any of the three articles it recommended.&lt;/p&gt;

&lt;p&gt;Its browsing tool returned “Cache miss” for those requests. The homepage and archive opened, but the article text came through search results instead.&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%2Ffbhqjx9317oplwlcdtgs.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%2Ffbhqjx9317oplwlcdtgs.png" alt="I Asked an AI Agent Whether You Should Subscribe to My Newsletter - Where It Got Stuck" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Search had saved enough of the pages to return substantial text. That let the agent read about the workflows and make recommendations even though opening the pages directly had failed.&lt;/p&gt;

&lt;p&gt;This distinction is easy to miss when the final answer looks complete. A linked title doesn’t tell you how the agent obtained the information behind it.&lt;/p&gt;

&lt;p&gt;In this run, search gave it enough evidence to explain the articles. It couldn’t use that same evidence to confirm exactly what someone would see on the live pages, including whether any content was behind a paywall. Some of the search copies were weeks old.&lt;/p&gt;

&lt;p&gt;The same problem showed up when I asked about subscribing.&lt;/p&gt;

&lt;p&gt;The agent found public descriptions of Hermes 101, community chat, and direct support. The version of the &lt;a href="https://allagentsconsidered.substack.com/about" rel="noopener noreferrer"&gt;About page&lt;/a&gt; returned by search marked those items “soon.” A later check of the indexed page found the same wording.&lt;/p&gt;

&lt;p&gt;So the agent treated them as announcements. It couldn’t verify an enrollment page or confirm that someone could access those benefits that day. The subscription page also failed to open, leaving current paid prices and benefits unresolved.&lt;/p&gt;

&lt;p&gt;Its answer on the course was short:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Announced/in development, not verified available.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That was a reasonable place to stop. An older announcement can’t establish whether something launched yesterday, and a failed page request can’t settle it either.&lt;/p&gt;

&lt;p&gt;It was careful with the free subscription too. It found an older invitation to receive new posts for free, but didn’t assume that meant every article, course, or resource in the archive was included.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Tells Me
&lt;/h2&gt;

&lt;p&gt;The original idea for this article was to find out what an outside agent got wrong about AAC. This run didn’t give me that story. It understood the publication and made useful recommendations.&lt;/p&gt;

&lt;p&gt;It did show where its answer became incomplete, and why.&lt;/p&gt;

&lt;p&gt;An agent recommending something has to do more than recognize the topic. If it’s helping someone decide whether to pay, it also needs current information about what they’re buying. My archive gave this agent plenty to say about the writing. The sources it could retrieve left it less certain about the offer.&lt;/p&gt;

&lt;p&gt;That doesn’t prove my website is broken. It shows what this particular agent could confirm through its tools on that run. Another attempt might reach pages this one couldn’t.&lt;/p&gt;

&lt;p&gt;The practical lesson for me is to ask for that detail. If I’d only requested a flattering two-sentence description, I would have missed the part where the agent had to stop.&lt;/p&gt;

&lt;p&gt;I covered a related habit in &lt;a href="https://allagentsconsidered.substack.com/p/the-twenty-minute-audit-that-found" rel="noopener noreferrer"&gt;the twenty-minute workspace audit&lt;/a&gt;: before blaming the answer, look at the material the agent could find. Here, that meant following its public links and reading its access notes.&lt;/p&gt;

&lt;p&gt;For your own work, an awkward answer is worth examining. It might contain an invented claim. It might be working from an old page. Or it might be a fair reading of copy that doesn’t say what you thought it said. Each calls for a different response.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Send this to someone whose newsletter, consulting site, or public project could use a fresh pair of eyes.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://allagentsconsidered.substack.com/p/i-asked-an-ai-agent-whether-you-should?utm_source=substack&amp;amp;utm_medium=email&amp;amp;utm_content=share&amp;amp;action=share" rel="noopener noreferrer"&gt;Share&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%2Fwtaf7rioplvkpiktif6g.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%2Fwtaf7rioplvkpiktif6g.png" alt="I Asked an AI Agent Whether You Should Subscribe to My Newsletter - What This Tells Me" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It on Your Work
&lt;/h2&gt;

&lt;p&gt;You can run the same experiment on your newsletter, consulting site, or public project. Start a fresh conversation with browsing available and leave out the private explanation you usually give your agent.&lt;/p&gt;

&lt;p&gt;Choose a specific reader or customer. Someone considering your consulting service needs different answers from someone looking for their first article on a subject.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;I am considering subscribing to, hiring, or using:
[PUBLIC URL]

I am [DESCRIBE THE READER OR CUSTOMER AND WHAT THEY NEED].

Use public sources only. Do not sign in or use private files.

Explain what this person, publication, or project does.
Who is it for, and what knowledge would I need to get started?
Recommend three existing pages or articles to read first.
Give their exact titles, links, and why each fits my needs.

What can I read, buy, or use today?
Separate available offers from announcements and future plans.
Who should skip this?

Cite your sources. Say when you are interpreting something.
If you cannot verify a claim, say so.
Finish by listing which pages you opened, which information
came from search results, and what you couldn't access.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save the first answer before correcting it. Open the recommended links and check whether they support what the agent said. Pay particular attention to anything involving availability, prices, or promises to a customer.&lt;/p&gt;

&lt;p&gt;If a description feels wrong, look for the page that led to it. An outdated sentence is a concrete thing you can fix. An access failure needs further investigation. Neither requires rewriting your whole site on the spot.&lt;/p&gt;

&lt;p&gt;Keep any public changes under your review, as with &lt;a href="https://allagentsconsidered.substack.com/p/how-to-add-approval-gates-to-your" rel="noopener noreferrer"&gt;the approval gates I use for agent actions&lt;/a&gt;. The agent can help identify a confusing sentence. You still decide what your business promises.&lt;/p&gt;

&lt;p&gt;This is one reading of your work. It won’t tell you how every AI describes you or whether changing a page will bring more subscribers. It will give you a description to check against what a stranger can find.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;If you try it, what did the agent understand, and what couldn’t it verify?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://allagentsconsidered.substack.com/p/i-asked-an-ai-agent-whether-you-should/comments" rel="noopener noreferrer"&gt;Leave a comment&lt;/a&gt;&lt;/p&gt;




</description>
      <category>ai</category>
      <category>agents</category>
      <category>substack</category>
      <category>newsletter</category>
    </item>
    <item>
      <title>Can Open Models Replace GPT and Claude? I Tested Five.</title>
      <dc:creator>cucoleadan</dc:creator>
      <pubDate>Tue, 08 Sep 2026 14:13:35 +0000</pubDate>
      <link>https://dev.to/cucoleadan/can-open-models-replace-gpt-and-claude-i-tested-five-1hom</link>
      <guid>https://dev.to/cucoleadan/can-open-models-replace-gpt-and-claude-i-tested-five-1hom</guid>
      <description>&lt;p&gt;While working on my upcoming collaboration with Ileana from &lt;a href="https://ileanamarcut.substack.com/" rel="noopener noreferrer"&gt;UX+AI&lt;/a&gt;, I tested five open models alongside GPT and Claude. Several produced convincing product plans that changed a requirement we’d explicitly supplied.&lt;/p&gt;

&lt;p&gt;Our joint article examines whether the models’ questions help a product professional do the work. This is the technical companion: a closer look at the test setup, how requirements survived into the generated flows, and what I’d need to measure before moving the task to another model.&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%2F9rbi9t6pngqmy0h0k7k3.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%2F9rbi9t6pngqmy0h0k7k3.png" alt="Can Open Models Replace GPT and Claude? I Tested Five. - hero image" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  In This Edition
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;What the Test Compared&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Following One Rule&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Where the Rule Changed&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Cost of Review&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Before Switching Models&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;







&lt;h2&gt;
  
  
  What the Test Compared
&lt;/h2&gt;

&lt;p&gt;I want alternatives I can trust with specific jobs. That was part of the motivation behind &lt;a href="https://allagentsconsidered.substack.com/p/the-30-hermes-stack-that-makes-claude" rel="noopener noreferrer"&gt;the $30 Hermes stack&lt;/a&gt;. Here, I wanted evidence about the quality of the work I’d be moving.&lt;/p&gt;

&lt;p&gt;The task was to outline an in-app support agent. The brief allowed refunds up to €50 and several order actions, with a human handoff after three unresolved turns. A separate answer pack supplied the missing business context and restrictions.&lt;/p&gt;

&lt;p&gt;The open cohort contained &lt;strong&gt;GLM 5.3, DeepSeek V4 Pro’s 0813 checkpoint, Kimi K3, Qwen 3.8 Max, and MiniMax M3&lt;/strong&gt;. These are the labels in the saved run records. The exact historical Qwen checkpoint remains unresolved.&lt;/p&gt;

&lt;p&gt;The closed cohort contained &lt;strong&gt;GPT-5.6 Terra, GPT-5.6 Luna, Claude Sonnet 5, Claude Opus 5, and Claude Fable 5.1&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;“Open” here means the experiment’s open-weight cohort. I used hosted endpoints through Fireworks. The comparison says nothing about local inference speed, hardware requirements, or self-hosting costs.&lt;/p&gt;

&lt;p&gt;Each model received three conditions on September 3, 2026:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Brief alone:&lt;/strong&gt; outline the flows from incomplete instructions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Question gate:&lt;/strong&gt; receive the brief with instructions to ask consequential questions before designing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Answer pack:&lt;/strong&gt; receive the brief and missing context together, then design.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every condition started fresh. The final round never saw the model’s earlier questions, so it tested whether supplied context improved the design independently of a conversation.&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%2F5qr12a8hu7ucb0p7zej5.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%2F5qr12a8hu7ucb0p7zej5.png" alt="Can Open Models Replace GPT and Claude? I Tested Five. - What the Test Compared" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That produced 30 saved responses, one per model per condition. The records describe fresh context with no tools or web access.&lt;/p&gt;

&lt;p&gt;The task text matched, but the delivery routes differed. Open models ran through Fireworks, Claude through Anthropic’s API, and GPT through Codex with its surrounding instructions. &lt;strong&gt;These are comparisons of the setups I used.&lt;/strong&gt; The results don’t isolate model behavior from the environment serving it.&lt;/p&gt;

&lt;p&gt;The records also have limits. The runner scripts and metadata sidecars referenced in the run notes aren’t available in the evidence folder. The saved answers support inspection of the output, but they don’t let someone independently reconstruct every execution detail.&lt;/p&gt;

&lt;p&gt;Across both cohorts, every model delivered a design from the incomplete brief. With the question gate, all ten stopped short of delivering flows, although some supplied assumptions or default answers. The joint article explores the professional value of those questions. My inspection here concentrates on the final round, when the missing context was already present.&lt;/p&gt;

&lt;h2&gt;
  
  
  Following One Rule
&lt;/h2&gt;

&lt;p&gt;The answer pack included this instruction:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Before any action that can’t be reversed, the agent escalates first.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The original brief granted permissions. The answer pack restricted when those permissions applied. A refund below €50 still needed a handoff if it was irreversible.&lt;/p&gt;

&lt;p&gt;I followed that requirement from the general principles into the eligibility tables and individual action flows. I checked whether an irreversible action remained blocked pending human review, and whether another passage introduced an exception.&lt;/p&gt;

&lt;p&gt;This distinction mattered because several responses repeated the rule correctly in one section and changed it elsewhere. Finding the words “escalate first” would have missed those contradictions.&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%2Ft78t9j7ntqho2jq2oy9g.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%2Ft78t9j7ntqho2jq2oy9g.png" alt="Can Open Models Replace GPT and Claude? I Tested Five. - Following One Rule" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This was a manual inspection of written plans. No support agent executed a refund or cancellation, and I haven’t converted these observations into a professional UX score. Ileana’s grading is still pending.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the Rule Changed
&lt;/h2&gt;

&lt;p&gt;Three kinds of repair kept appearing: removing invented exceptions, separating customer confirmation from human review, and reconciling conflicting sections.&lt;/p&gt;

&lt;h3&gt;
  
  
  Exceptions to the requirement
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;GLM 5.3&lt;/strong&gt; built a detailed eligibility matrix. Its refund row allowed autonomous execution below €50 while marking the action as irreversible. The response used bounded risk to justify an exception the answer pack hadn’t granted.&lt;/p&gt;

&lt;p&gt;GLM also proposed a policy distinction between discretionary and transactional refunds. It marked that proposal for resolution, but parts of the design already depended on it. I’d keep the useful structure and block those branches until the policy was settled.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MiniMax M3&lt;/strong&gt; repeatedly required escalation for irreversible actions “under ambiguity.” Adding those two words narrowed the rule. A certain but irreversible action still required human review under the supplied instructions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Opus 5&lt;/strong&gt; qualified its irreversible-action escalation entry with customer detriment. Its cancellation discussion also allowed confirmation or escalation where policy required it. Both passages needed reconciliation with the unconditional requirement.&lt;/p&gt;

&lt;h3&gt;
  
  
  Confirmation replacing human review
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Kimi K3&lt;/strong&gt; described cancellation as irreversible, then proposed previewing the consequences, obtaining customer confirmation, and executing. It explicitly asked stakeholders to approve an interpretation that exempted the listed authorized actions.&lt;/p&gt;

&lt;p&gt;That warning made the disagreement visible. The flow nevertheless depended on approval it hadn’t received.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Sonnet 5&lt;/strong&gt; also flagged its interpretation for review while allowing cancellation after a confirmation checkpoint. It distinguished confirmation from escalation, then treated confirmation as a possible reading of the requirement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Fable 5.1&lt;/strong&gt; made a provisional assumption that pre-fulfilment cancellation could proceed after customer confirmation, pending a decision about reversibility. I’d carry that unresolved decision into the action branch itself so the flow couldn’t be read as approved.&lt;/p&gt;

&lt;h3&gt;
  
  
  Contradictions across sections
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Qwen 3.8 Max&lt;/strong&gt; explicitly required escalation before irreversible cancellation. Later, it offered confirmation if policy deemed the action safe, or escalation if it couldn’t be reversed. Customer confirmation had become an alternative inside a passage about irreversible actions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GPT-5.6 Luna&lt;/strong&gt; preserved escalation in its cancellation flow, but added “where policy requires it” in its opening principles. I’d make the requirement consistent before using the plan.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DeepSeek V4 Pro&lt;/strong&gt; preserved pre-action escalation in the cancellation section and explained that the refund ceiling didn’t guarantee eligibility. Its opening nevertheless allowed actions when safe and reversible “or explicitly allowed.” That clause needed removal or clarification so it couldn’t override the handoff.&lt;/p&gt;

&lt;p&gt;DeepSeek also invented an exact address-change cutoff before packing or shipping. The answer pack made eligibility dependent on fulfilment and carrier state without specifying that cutoff.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Terra&lt;/strong&gt; gave me the clearest cancellation path on this check: confirmation followed by human review unless company policy established a safely reversible window. Its cancellation row repeated the handoff requirement. It still proposed return-label generation, a capability the supplied material hadn’t established.&lt;/p&gt;

&lt;p&gt;These differences give me specific repairs to test. They don’t establish that one model is generally better at product work, or that any response is ready to use without review.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Cost of Review
&lt;/h2&gt;

&lt;p&gt;Qwen’s final-round answer contained roughly 6,000 whitespace-delimited words, including Markdown and table syntax. Terra’s contained about 900. Those counts describe the visible files rather than billed tokens.&lt;/p&gt;

&lt;p&gt;Qwen’s conflicting passage appeared far below its main flows. In this case, reviewing the complete answer meant checking considerably more text for agreement with the same requirement.&lt;/p&gt;

&lt;p&gt;The run notes recorded about 45 seconds for MiniMax’s informed design, 194 for GLM’s, and 26 for Terra’s. These are single observations through different serving setups. They don’t establish repeatable speed differences.&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%2Fl2ba15lqiaeclpzy9q60.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%2Fl2ba15lqiaeclpzy9q60.png" alt="Can Open Models Replace GPT and Claude? I Tested Five. - The Cost of Review" width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I didn’t measure human correction time or reconstruct comparable bills across the three routes. This experiment therefore doesn’t establish the cheapest replacement. It identifies review work that a cost comparison would need to include.&lt;/p&gt;

&lt;p&gt;For the next round, I’d record inference cost, elapsed time, review time, and unresolved requirement violations separately. A fast response still needs repair if its cancellation flow grants the wrong permission.&lt;/p&gt;

&lt;h2&gt;
  
  
  Before Switching Models
&lt;/h2&gt;

&lt;p&gt;For a repeat test, I’d start with &lt;strong&gt;DeepSeek as the open candidate and Terra as the closed reference&lt;/strong&gt;. Both explicitly preserved the cancellation handoff in the passages I checked. DeepSeek still needs its opening exception and invented cutoff addressed. Terra needs review for added capabilities.&lt;/p&gt;

&lt;p&gt;I’d keep Kimi in the comparison because it exposed its disputed interpretation clearly. My next instruction would require unresolved policy choices to remain blocked inside the flows. That’s a proposed change to test, not an improvement I’ve measured.&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%2Ffet8b6w5blr30jazj2s1.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%2Ffet8b6w5blr30jazj2s1.png" alt="Can Open Models Replace GPT and Claude? I Tested Five. - Before Switching Models" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For GLM and MiniMax, I’d check whether revised instructions prevent the specific exceptions above. For Qwen, I’d also test a shorter output requirement and inspect consistency across sections. The Sonnet response shows why the incumbent needs the same scrutiny.&lt;/p&gt;

&lt;p&gt;To run this comparison on your own work:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Choose a task you know well enough to review, and give both setups identical task text and reference material. Record differences in surrounding instructions and tool access.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Before reading the answers, identify the requirement whose violation would make the output unusable.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Follow that requirement into each proposed action. Check the tables and exceptions as well as the opening explanation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Record the repair needed and the time spent finding it. Repeat with model names hidden during review where possible.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A written plan is also only one part of a working system. Actual permissions need enforcement where actions execute, which is the implementation question I covered in &lt;a href="https://allagentsconsidered.substack.com/p/how-to-add-approval-gates-to-your" rel="noopener noreferrer"&gt;my approval-gates article&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Our upcoming joint article with Ileana at &lt;a href="https://ileanamarcut.substack.com/" rel="noopener noreferrer"&gt;UX+AI&lt;/a&gt; examines whether the models’ questions help a product professional make better decisions. I’ll add the link when it’s live. This companion gives me a narrower result: an open candidate worth retesting, a closed reference, and concrete failures to check before moving the work.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Subscribe to All Agents Considered for the follow-up comparison, including the corrections these models still need.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>hermes</category>
      <category>benchmark</category>
    </item>
    <item>
      <title>I Built an Open Source MCP To Analyze Your Substack Data With Hermes And Codex</title>
      <dc:creator>cucoleadan</dc:creator>
      <pubDate>Tue, 25 Aug 2026 13:51:27 +0000</pubDate>
      <link>https://dev.to/cucoleadan/i-built-an-open-source-mcp-to-analyze-your-substack-data-with-hermes-and-codex-54pf</link>
      <guid>https://dev.to/cucoleadan/i-built-an-open-source-mcp-to-analyze-your-substack-data-with-hermes-and-codex-54pf</guid>
      <description>&lt;p&gt;&lt;em&gt;This was originally published on &lt;a href="https://allagentsconsidered.com/blog/i-built-an-open-source-mcp-to-analyze" rel="noopener noreferrer"&gt;All Agents Considered&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;A little while ago, I shared &lt;a href="https://allagentsconsidered.com/blog/how-i-built-a-substack-api-with-hermes" rel="noopener noreferrer"&gt;how I built a Substack API with Hermes and Codex&lt;/a&gt;, and covered how a missing scheduling feature turned into the &lt;a href="https://github.com/cucoleadan/unofficial-substack-sdk" rel="noopener noreferrer"&gt;Unofficial Substack SDK&lt;/a&gt;. That article explained how I built the SDK, which was focused more on developers. Since then, I have added an MCP to it that runs directly on your computer.&lt;/p&gt;

&lt;p&gt;This guide explains how to install and use it.&lt;/p&gt;

&lt;p&gt;The premise was simple: I wanted Codex and Hermes (though it also works with Claude) to find my strongest posts, review my Notes, and run data analysis. The usual workaround involves copying figures from several Substack pages and pasting them into a chat, which was tedious.&lt;/p&gt;

&lt;p&gt;So I added a read-only connection that lets Codex fetch the information it needs from Substack. You can install it without writing code, and the only technical part is copying a small settings block and adding your own publication details.&lt;/p&gt;

&lt;p&gt;I’ll explain every step in plain English, including what the unfamiliar terms mean and where you need to be careful.&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%2Fo1vpi982eeqqdft9e5v5.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%2Fo1vpi982eeqqdft9e5v5.png" alt="Diagram of the read-only Substack MCP connection between an AI agent and publication data" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  In This Edition
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;What the Substack connection does&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How to add it to Codex safely&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How to confirm that you connected the right account&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Five prompts you can copy and adapt&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What You’re Installing
&lt;/h2&gt;

&lt;p&gt;You’ll configure an MCP server that runs exclusively on your computer and doesn’t rely on any external services. This means your data will only be shared between your Substack profile and your AI, so nobody else can see it.&lt;/p&gt;

&lt;p&gt;Moreover, the connection is read-only. It can look at your profile, posts, Notes, subscriber totals, and recent activity. I specifically left out every action that would change your account, so Codex can’t publish, delete, comment, restack, or change your settings through this MCP.&lt;/p&gt;

&lt;p&gt;The GitHub project also contains an SDK, which is a toolkit for developers who want to build their own software. You won’t use that part in this guide, and please make sure you know what you’re doing if you feel like you want to access the full capabilities of this project.&lt;/p&gt;

&lt;h2&gt;
  
  
  What You Need
&lt;/h2&gt;

&lt;p&gt;The setup requires three items:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Node.js 18 or newer:&lt;/strong&gt; This free program lets your computer run the MCP.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Your publication address:&lt;/strong&gt; For example &lt;code&gt;yourname.substack.com&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Your Substack session cookie:&lt;/strong&gt; A private login value stored by your browser.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The word “cookie” sounds harmless, but this one proves that you’re logged in. Anyone who gets it may be able to access your account.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Treat it like your password.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Check Node.js
&lt;/h3&gt;

&lt;p&gt;Open Terminal on macOS or Windows Terminal on Windows. Paste this command and press Enter:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;node --version
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you see a version beginning with &lt;code&gt;v18&lt;/code&gt; or a higher number, continue. If the command isn’t recognised, install the current supported version of Node.js from its &lt;a href="https://nodejs.org/en/download" rel="noopener noreferrer"&gt;official website&lt;/a&gt;, then run the check again.&lt;/p&gt;

&lt;p&gt;You can close the terminal after this check as the rest of the setup happens in a Codex settings file.&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%2F0c8v5gy8ci0xgnzt7dt9.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%2F0c8v5gy8ci0xgnzt7dt9.png" alt="Terminal window showing the node --version check" width="800" height="220"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Find Your Login Cookie
&lt;/h2&gt;

&lt;p&gt;Start by logging in to Substack in your browser.&lt;/p&gt;

&lt;p&gt;You can get it super easily by installing the &lt;a href="https://chromewebstore.google.com/detail/editthiscookie-v3/ojfebgpkimhlhcblbalbfjblapadhbol" rel="noopener noreferrer"&gt;EditThisCookie (V3)&lt;/a&gt;Chrome extension and copying the value of &lt;code&gt;substack.sid=&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;If you don’t want that then you must use your browser’s developer tools. On Windows and Linux, the usual shortcut is &lt;code&gt;Ctrl+Shift+I&lt;/code&gt;. On macOS, use &lt;code&gt;Cmd+Option+I&lt;/code&gt;, or just press &lt;code&gt;F12&lt;/code&gt; on your keyboard. The shortcut or tab name can vary slightly between browsers.&lt;/p&gt;

&lt;p&gt;Look for a tab named &lt;strong&gt;Application&lt;/strong&gt; or &lt;strong&gt;Storage&lt;/strong&gt; , then open the cookie list for Substack. Find the row named &lt;code&gt;substack.sid&lt;/code&gt; and copy the value column.&lt;/p&gt;

&lt;p&gt;Copy the long value alone. Leave out &lt;code&gt;substack.sid=&lt;/code&gt; and any other cookie entries.&lt;/p&gt;

&lt;p&gt;I can’t stress this enough but you HAVE to keep this value private. It shouldn’t appear in a public prompt, screenshot, shared project folder, support ticket, or shared document.&lt;/p&gt;

&lt;h2&gt;
  
  
  Add It To Codex
&lt;/h2&gt;

&lt;p&gt;There are 2 ways to do this. First, just go to &lt;code&gt;Plugins&lt;/code&gt;, then click on the gear icon up top &lt;code&gt;Manage&lt;/code&gt;, then click on MCPs and &lt;code&gt;Add Server&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Complete it 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;Name: substack
Type: STDIO

Command to launch:
npx

Arguments:
-y
unofficial-substack-sdk

Environment variables:
SUBSTACK_SESSION_TOKEN = eyJ...
SUBSTACK_PUBLICATION_URL = yoursubstack.substack.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then just save and restart Codex. Everything should work once you open it up again.&lt;/p&gt;

&lt;p&gt;The second way to install the MCP is a bit more complicated and manual. Codex keeps its personal settings in a file named &lt;code&gt;config.toml&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;On macOS and Linux, the usual location is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="err"&gt;~/.codex/config.toml&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On Windows, it sits inside your user folder:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;C:\Users\YOUR-NAME\.codex\config.toml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Folders whose names begin with a dot are sometimes hidden. On Windows, open File Explorer and paste the full path into the address bar after replacing &lt;code&gt;YOUR-NAME&lt;/code&gt;. On macOS, open Finder, choose &lt;strong&gt;Go&lt;/strong&gt; , then &lt;strong&gt;Go to Folder&lt;/strong&gt; , and enter &lt;code&gt;~/.codex&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Open &lt;code&gt;config.toml&lt;/code&gt; in a plain text editor such as Notepad or TextEdit. Create it if it doesn’t exist. If the file already contains settings, keep them and paste the block below at the end:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[mcp_servers.substack]&lt;/span&gt;
&lt;span class="py"&gt;command&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"npx"&lt;/span&gt;
&lt;span class="py"&gt;args&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"unofficial-substack-sdk"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="nn"&gt;[mcp_servers.substack.env]&lt;/span&gt;
&lt;span class="py"&gt;SUBSTACK_SESSION_TOKEN&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"your-substack.sid-value"&lt;/span&gt;
&lt;span class="py"&gt;SUBSTACK_PUBLICATION_URL&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"https://your-publication.substack.com"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You don’t need to understand the formatting. Change only the two values inside quotation marks at the bottom.&lt;/p&gt;

&lt;p&gt;Replace &lt;code&gt;your-substack.sid-value&lt;/code&gt; with the private cookie value you copied. Replace the example publication address with your real Substack address, including &lt;code&gt;https://&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;If the file already has a section beginning with &lt;code&gt;[mcp_servers.substack]&lt;/code&gt;, edit that section instead of adding a second copy. When creating the file in Notepad, check that it ends in &lt;code&gt;.toml&lt;/code&gt; rather than &lt;code&gt;.toml.txt&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Use the personal settings file for this connection. Settings kept inside a project can accidentally be copied or uploaded with the rest of its files, which creates an unnecessary risk for the cookie.&lt;/p&gt;

&lt;p&gt;Save the file and restart Codex. The Codex desktop app, command-line app, and editor extension use the same MCP settings on the same computer, according to the &lt;a href="https://developers.openai.com/codex/mcp" rel="noopener noreferrer"&gt;official Codex MCP documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The first request may take a little longer because &lt;code&gt;npx&lt;/code&gt;, a helper installed with Node.js, downloads the MCP package before starting it. You don’t need to open the package or install a separate Substack app.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check The Connection
&lt;/h2&gt;

&lt;p&gt;Begin with a small request. This confirms the account before Codex pulls a larger set of publication statistics.&lt;/p&gt;

&lt;p&gt;Paste this prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use my Substack MCP to confirm which account is connected and list my five most recent posts with their publication dates.

Stop after the list. Say so if the account or publication doesn't match.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check the account name and post titles yourself. These three messages cover the most common setup problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The wrong publication appears:&lt;/strong&gt; Correct the publication address in &lt;code&gt;config.toml&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;You see a login error:&lt;/strong&gt; The cookie has probably expired or was copied incorrectly. Log in to Substack again, copy a fresh &lt;code&gt;substack.sid&lt;/code&gt; value, and replace the old one.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Codex couldn’t start the MCP:&lt;/strong&gt; Repeat the Node.js check from the earlier section.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Restart Codex after every change to the settings file.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ask A Focused Question
&lt;/h2&gt;

&lt;p&gt;A broad request such as “analyze my Substack” gives Codex too much freedom. It has to guess the period, the measurement that matters, and the kind of answer you want.&lt;/p&gt;

&lt;p&gt;Your prompt should make four choices clear:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The goal:&lt;/strong&gt; State the decision you’re trying to make.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The material:&lt;/strong&gt; Name the post, Note, or period you want reviewed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The limit:&lt;/strong&gt; Ask for a short summary before requesting detailed records.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The standard:&lt;/strong&gt; Tell Codex to label facts and guesses separately.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can refer to an article by title instead of hunting for the behind-the-scenes number Substack assigned to it. Ask Codex to find the title first, confirm the match, and then inspect it.&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%2Fqg4zxdz4ycin2u92csvh.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%2Fqg4zxdz4ycin2u92csvh.png" alt="Example Codex prompt asking for a focused Substack post review" width="800" height="220"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Five Prompts Worth Saving
&lt;/h2&gt;

&lt;p&gt;These prompts use normal language. Codex chooses the appropriate Substack tools behind the scenes.&lt;/p&gt;

&lt;p&gt;Text inside square brackets is a blank for you to replace. For example, change &lt;code&gt;[POST TITLE]&lt;/code&gt; to the exact title of your article. You can also change quantities such as “top 10” or “20 most recent” without touching your settings.&lt;/p&gt;

&lt;h3&gt;
  
  
  Review Your Publication
&lt;/h3&gt;

&lt;p&gt;Use this when you want a broad view of what happened during a month or quarter.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use my Substack MCP to review my publication from [START DATE] through [END DATE].

Rank the top 10 posts by new subscribers. Summarize the totals and average rates that Substack provides, then group the posts by section and content type.

Keep the detailed post rows out of the response. Separate the numbers Substack returned from your interpretation, then suggest two ideas I can test next month.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Review One Post
&lt;/h3&gt;

&lt;p&gt;You can use the post title here. Codex can find its behind-the-scenes number for you.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Find the Substack post titled “[POST TITLE]” and confirm the title and date before analyzing it.

Summarize the available delivery, subscriber, link, referral, and reader-engagement figures. Point out anything Substack didn't provide instead of estimating it.

Give me two strengths, two weak points, and one follow-up question. Keep reported facts separate from your interpretation.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Compare Your Notes
&lt;/h3&gt;

&lt;p&gt;Substack doesn’t always provide a reliable view count for Notes. This prompt uses visible reactions and conversations instead.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use my Substack MCP to review my 20 most recent Notes.

Choose five Notes with the strongest visible response, then compare their reactions, restacks, direct replies, and replies inside those conversations.

Tell me if any reply count is incomplete. Don't rank the Notes by views unless Substack supplied a real view number.

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  Sort Your Notifications
&lt;/h3&gt;

&lt;p&gt;This prompt asks Codex to prepare a shortlist. The read-only MCP can’t send the replies.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use my Substack MCP to check my 20 most recent unread activity items.

Put replies and mentions ahead of restacks and lower-priority activity. Choose the five items that most deserve my attention.

Summarize the context and suggest one response angle for each. Leave every reply as a draft for my review.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Check Subscriber Totals
&lt;/h3&gt;

&lt;p&gt;This prompt keeps individual subscriber records out of the conversation.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use my Substack MCP to return a privacy-safe subscriber summary.

Show the total subscriber count and any overall figures Substack provides. Don't request names, email addresses, or individual subscriber records.

Explain what this snapshot tells me and where the available information stops. Don't calculate growth or churn unless Substack returned the history required for that calculation.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Ask For Summaries First
&lt;/h2&gt;

&lt;p&gt;Codex has a limited amount of working memory in each conversation. Large blocks of raw data occupy space that the model could use to compare results and explain them.&lt;/p&gt;

&lt;p&gt;Think of that working memory as a desk. A neat summary leaves room to reason. Hundreds of copied rows cover the desk before the useful work begins.&lt;/p&gt;

&lt;p&gt;The MCP already reduces many responses before returning them. A publication review can read the email data Substack makes available while sending Codex a compact summary. Detailed rows stay out unless you request them.&lt;/p&gt;

&lt;p&gt;Follow the same habit in your prompts. Start with a summary, choose the one post or Note that deserves attention, then ask a narrower follow-up question.&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%2F0c46mnjoit8lw9a1dahk.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%2F0c46mnjoit8lw9a1dahk.png" alt="Codex returning a compact summary instead of raw subscriber rows" width="800" height="220"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Read-Only Protects
&lt;/h2&gt;

&lt;p&gt;The MCP leaves every account-changing action unavailable. A mistaken prompt can’t publish a Note or delete a comment through this connection.&lt;/p&gt;

&lt;p&gt;But read-only access still requires care. Your cookie opens the connection, and the information Codex receives becomes part of the conversation. Keep the cookie in your personal settings file and leave individual subscriber records out of your requests.&lt;/p&gt;

&lt;p&gt;This project connects through parts of Substack’s website that aren’t documented for outside apps. Substack can change them without warning, meaning that a request that worked yesterday might fail today. If that’s the case then you might want to check the &lt;a href="https://github.com/cucoleadan/unofficial-substack-sdk" rel="noopener noreferrer"&gt;GitHub project page&lt;/a&gt; for an update or reported problem.&lt;/p&gt;

&lt;p&gt;People building custom software can use the developer toolkit for Note publishing and other account actions. That route requires code, testing, and a human approval step. The read-only MCP is the better fit when you want to ask questions about your publication.&lt;/p&gt;

&lt;h2&gt;
  
  
  Your First Ten Minutes
&lt;/h2&gt;

&lt;p&gt;Use this sequence:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Check that Node.js 18 or newer is installed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Copy the value of your &lt;code&gt;substack.sid&lt;/code&gt; cookie.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Paste the settings block into your personal Codex settings file.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Restart Codex and run the account-check prompt.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose one focused prompt from this guide.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Check important figures against your Substack dashboard while you learn how the connection behaves. Save the prompts that help, while keeping the private answers out of public screenshots and repositories.&lt;/p&gt;

&lt;p&gt;The MCP finds the information. You decide what it means and what deserves to change.&lt;/p&gt;

&lt;p&gt;You can find the public project on &lt;a href="https://github.com/cucoleadan/unofficial-substack-sdk" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; and its installation package on &lt;a href="https://www.npmjs.com/package/unofficial-substack-sdk" rel="noopener noreferrer"&gt;npm&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>substack</category>
      <category>codex</category>
      <category>analytics</category>
    </item>
    <item>
      <title>What Hermes Thinks I Do When I'm Not Talking To It</title>
      <dc:creator>cucoleadan</dc:creator>
      <pubDate>Tue, 11 Aug 2026 12:44:11 +0000</pubDate>
      <link>https://dev.to/cucoleadan/what-hermes-thinks-i-do-when-im-not-talking-to-it-3pj9</link>
      <guid>https://dev.to/cucoleadan/what-hermes-thinks-i-do-when-im-not-talking-to-it-3pj9</guid>
      <description>&lt;p&gt;&lt;em&gt;This was originally published on &lt;a href="https://allagentsconsidered.com/blog/what-hermes-thinks-i-do-when-im-not" rel="noopener noreferrer"&gt;All Agents Considered&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;I’ve spent months teaching Hermes the shape of my work, from where each project lives to the point where it should stop for a decision.&lt;/p&gt;

&lt;p&gt;Last week I reversed the arrangement by giving Hermes a limited view of my recent work and asking it to describe the person behind those files.&lt;/p&gt;

&lt;p&gt;My official title is full-stack AI engineer, but Hermes came back with something far less suitable for LinkedIn:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;AI Workflow Field Reporter With a Side Cart of Websites&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The phrase was ridiculous enough to make me laugh, yet it was accurate enough to keep me reading.&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%2Fhlu0ti5tz8ch4ug71m3w.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%2Fhlu0ti5tz8ch4ug71m3w.png" alt="Hero illustration of Hermes describing the person behind the files: AI Workflow Field Reporter With a Side Cart of Websites" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  In This Edition
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Hermes used my recent files to describe what I appear to do all day.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The audit exposed a gap between my engineering title and my visible output.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Editorial work left a clearer trail than many technical decisions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The read-only boundary hid large parts of my actual working day.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can reuse my prompt to audit a safe corner of your own workspace.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Here’s How It Works
&lt;/h2&gt;

&lt;p&gt;Most AI tools learn about us through the tidy summaries we write before asking them to do any work.&lt;/p&gt;

&lt;p&gt;A profile explains the job we claim to have, while a project note gives the agent a clean version of whatever we’re trying to finish. The result is a useful identity for the agent, although it rarely resembles the mess of an ordinary week.&lt;/p&gt;

&lt;p&gt;On a normal day, I can move from researching an AI release to debugging a TypeScript problem without feeling that I’ve changed jobs. By evening, the useful part of either task may have become an article that still needs editing before I can publish it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I wanted to see what Hermes would say if I stopped describing myself and allowed the artifacts to make the introduction.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This exercise was possible because most of my agent work already lives in plain files that both Hermes and I can inspect. I described that setup in &lt;a href="https://allagentsconsidered.com/blog/why-my-best-agent-workflow-is-mostly-files" rel="noopener noreferrer"&gt;Why My Best Agent Workflow Is Mostly Files&lt;/a&gt;, where a small amount of structure made the workspace easier for an agent to follow.&lt;/p&gt;

&lt;p&gt;For this audit, I limited Hermes to the parts of my vault that record published work and the planning behind it. I also included working notes and a small set of professional documents, although I did have to sanitize the answer.&lt;/p&gt;

&lt;p&gt;I treated each file modification as proof that some work had happened, while leaving effort and time outside the audit. Also, every conclusion needed a visible piece of evidence from inside that boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Job Title
&lt;/h2&gt;

&lt;p&gt;Hermes sorted my work into a few basic categories and I observed that the actual connections mattered way more than the labels.&lt;/p&gt;

&lt;p&gt;Publishing and research created the most visible output. These are the articles and guides people actually read.&lt;/p&gt;

&lt;p&gt;Workflow design sat right underneath that surface layer. It mapped out how every project should move and also decided exactly where human input was needed.&lt;/p&gt;

&lt;p&gt;The audit also looked way beyond my newsletter (&lt;em&gt;I generalized that outside work for privacy&lt;/em&gt;). This gave Hermes the full picture of my career., basically stopping the system from treating AAC like an isolated hobby.&lt;/p&gt;

&lt;p&gt;Seeing everything together produced a surprisingly accurate description. I never would have written it for myself.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You appear to be an AI workflow educator and operator who turns technical research and firsthand build stories into practical published guidance, while keeping several professional and commercial projects moving in the background.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That sentence would look totally ridiculous on LinkedIn, but it perfectly describes my actual daily life.&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%2F17uqzwhfgf5fv64edlc7.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%2F17uqzwhfgf5fv64edlc7.png" alt="Diagram of the audit categories: publishing, workflow design, and commercial projects behind them" width="800" height="220"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Strongest Trail
&lt;/h2&gt;

&lt;p&gt;The playful title gave me the opening for this article, but the strongest finding came from the evidence underneath it.&lt;/p&gt;

&lt;p&gt;Hermes found the clearest record in my editorial work because I preserved the full path of each article from uncertainty to publication.&lt;/p&gt;

&lt;p&gt;I traced ideas taking shape in the early files, then saw which claims actually survived my checks before publication.&lt;/p&gt;

&lt;p&gt;Hermes saw way more than finished articles because I had documented the whole system behind them.&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%2Fts54d6c25uxf9y7uypjg.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%2Fts54d6c25uxf9y7uypjg.png" alt="Diagram tracing an article from early idea files through checks to publication" width="800" height="220"&gt;&lt;/a&gt;&lt;br&gt;
Hermes called the pattern &lt;strong&gt;editorial systems work&lt;/strong&gt; , and the phrase stuck with me because people only see the writing at the end. I spend most of my effort deciding whether an idea deserves attention or whether a claim has earned the confidence I want behind it.&lt;/p&gt;

&lt;p&gt;Part of my editorial work involves removing weak signals before they ever reached a draft, then shaped the surviving claims into explanations another person could follow.&lt;/p&gt;

&lt;p&gt;I expected building to dominate the audit, but Hermes found that I built a lot of infrastructure just to support the workflows around my technical work.&lt;/p&gt;

&lt;p&gt;Reading the files back, I saw engineering and writing as different stages of the same loop rather than two unrelated jobs sharing a calendar.&lt;/p&gt;

&lt;p&gt;I build until something teaches me a useful lesson, then I preserve that lesson in a form another person can inspect.&lt;/p&gt;

&lt;p&gt;That description fits AAC way better than saying I write about AI.&lt;/p&gt;
&lt;h2&gt;
  
  
  Uncovering the Weak Points
&lt;/h2&gt;

&lt;p&gt;Hermes also found a gap between the identity I lead with and the work that left the most evidence behind. I foreground engineering because I build production AI systems that extend from the interface to the infrastructure underneath it.&lt;/p&gt;

&lt;p&gt;But the recent artifacts told a broader story. I kept turning that technical work into explanations another person can use.&lt;/p&gt;

&lt;p&gt;Inside the selected folders, engineering showed up more as the thing I was explaining than the thing I was building. That observation stung on the first read because it sounded like a challenge to an identity I know is accurate.&lt;/p&gt;

&lt;p&gt;The audit boundary explained most of the tension since editorial work leaves a thicker paper trail than most engineering decisions. I might produce several visible drafts for one article, while the hardest technical decision of the week survives as a single changed line in a repository outside the audit.&lt;/p&gt;

&lt;p&gt;Visibility favors work that documents itself, and that gave the editorial side of my week an obvious advantage.&lt;/p&gt;

&lt;p&gt;Even with that limitation, the audit made it harder for me to dismiss publishing as a layer wrapped around my real work.&lt;/p&gt;
&lt;h2&gt;
  
  
  What Disappeared
&lt;/h2&gt;

&lt;p&gt;Keeping the audit safe forced me to hide a huge part of my working day from Hermes. I kept my engineering work in separate folders and repositories and left almost no trace of my private interactions. This blind spot also swallowed any experiment that failed before I wrote down the results. Hermes just described my best-documented work instead of reconstructing my actual calendar.&lt;/p&gt;

&lt;p&gt;The system captured that limitation perfectly in one line:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A file trail records exhaust. rather than the engine.&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%2Fr71inz8p3h3to0cccxez.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%2Fr71inz8p3h3to0cccxez.png" alt="Illustration contrasting the visible file trail with the engine doing the work" width="800" height="220"&gt;&lt;/a&gt;&lt;br&gt;
That distinction keeps the exercise useful since the agent only describes visible work instead of pretending to value everything outside the frame. A polished plan might represent a project I never started. Meanwhile, a single modest code diff might represent the hardest afternoon of my month.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The audit also exposed a smaller operational problem.&lt;/p&gt;

&lt;p&gt;Some article projects contained several drafts without a clear current version. Those files proved I did the editing, but they forced Hermes to waste extra effort deciding which draft actually mattered.&lt;/p&gt;

&lt;p&gt;I previously found the larger version of this mess when I ran &lt;a href="https://allagentsconsidered.com/blog/the-twenty-minute-audit-that-found" rel="noopener noreferrer"&gt;the twenty-minute audit that showed where Hermes was getting lost&lt;/a&gt;. Seeing this exact problem pop up as a footnote today tells me even my digital biographer needs stricter file naming.&lt;/p&gt;
&lt;h2&gt;
  
  
  There’s A Valuable Lesson Here
&lt;/h2&gt;

&lt;p&gt;The audit gave me a much clearer description of the loop I repeat across all my projects. A technical problem always starts the cycle, and the useful lesson becomes the only thing worth preserving once I finish the immediate work. I often turn that lesson into an article because writing forces me to explain exactly what happened without relying on the original conversation.&lt;/p&gt;

&lt;p&gt;This exact loop explains why I ditched isolated prompts and started building workflows that leave evidence between steps.&lt;/p&gt;

&lt;p&gt;I described this process in &lt;a href="https://allagentsconsidered.com/blog/how-to-build-ai-workflows" rel="noopener noreferrer"&gt;How to Build AI Workflows When You’re Tired of Optimizing Prompts&lt;/a&gt; by showing how one step writes something the next step can read. Hermes reconstructed my recent work entirely from the residue of those handoffs.&lt;/p&gt;

&lt;p&gt;That happy accident turned the whole audit into a live test of my system.&lt;/p&gt;

&lt;p&gt;The weak spots in the final answer showed exactly where my ongoing projects still need a better handle for the next session. Dropping a small current-state note into the folder usually saves a project when it needs to survive beyond the original conversation. Passing thoughts can still disappear naturally without forcing me to turn my whole workspace into a diary.&lt;/p&gt;

&lt;p&gt;And those existing files gave Hermes just enough evidence to spot my patterns (&lt;em&gt;to a point&lt;/em&gt;) without relying on constant activity tracking or screen recording.&lt;/p&gt;
&lt;h2&gt;
  
  
  Your Turn
&lt;/h2&gt;

&lt;p&gt;You can run a smaller version of the same exercise over a few folders you already control.&lt;/p&gt;

&lt;p&gt;Choose a recent time window and keep the task read-only so the audit can’t reorganize the evidence while inspecting it.&lt;/p&gt;

&lt;p&gt;Exclude private material before the run, then require the agent to cite the files behind each conclusion.&lt;/p&gt;

&lt;p&gt;This is the prompt I used:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;I want you to describe what I appear to do for work based on the
artifacts I leave behind.

This is a read-only audit. Don't create, edit, move, rename, or
delete anything.

Inspect work produced or modified during the last 30 days inside
these folders only:

[LIST SAFE FOLDERS]

Skip credentials and private material.

Treat file changes as evidence that work happened, without using
them to estimate time or effort.

Give me a one-sentence description of what I appear to do.

Give me a playful job title based only on the evidence.

Describe the strongest pattern you found and cite the files that
support it.

Explain which part of my work is likely invisible to this audit.

Compare the evidence with my official job title only after reaching
your conclusion.

Separate direct evidence from inference.

End with a short section called "Where I Might Be Wrong."

Keep the tone observant and lightly humorous rather than judgmental.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Read the result as a mirror whose frame you chose rather than a performance review with any authority over your working life.&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%2Fvcxyqenxkbn0r2cobkj7.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%2Fvcxyqenxkbn0r2cobkj7.png" alt="Illustration of the reusable read-only workspace audit prompt" width="800" height="220"&gt;&lt;/a&gt;&lt;br&gt;
Correct the parts it gets wrong before removing anything too private to share outside the workspace.&lt;/p&gt;

&lt;p&gt;Then pay attention to the work it can’t see, since missing evidence may explain more than the confident conclusions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Behind the Title
&lt;/h2&gt;

&lt;p&gt;My official title still says full-stack AI engineer, but the weird title Hermes generated remains way too strange for my next family gathering.&lt;/p&gt;

&lt;p&gt;That strange title highlighted a habit I usually downplay because my writing grows naturally straight from my technical work.&lt;/p&gt;

&lt;p&gt;My commercial projects sit right next to those two main areas since I apply that exact same habit to my business work. I always turn useful builds into plain explanations that other people can actually use.&lt;/p&gt;

&lt;p&gt;My public work creates very clean file folders while private conversations leave almost zero evidence behind for an AI to read. Hermes only analyzed this heavily documented version of my career, yet I still completely recognized myself inside that incomplete picture.&lt;/p&gt;

&lt;p&gt;This exercise proved I built a clear enough trail for a machine to follow without pretending this final summary captures my entire reality. My official job title just names the foundation, and these files show exactly what I keep building on top of it.&lt;/p&gt;




</description>
      <category>audit</category>
      <category>files</category>
      <category>identity</category>
      <category>hermes</category>
    </item>
    <item>
      <title>The One File That Made Hermes Finally Learn From Its Mistakes</title>
      <dc:creator>cucoleadan</dc:creator>
      <pubDate>Tue, 04 Aug 2026 12:57:20 +0000</pubDate>
      <link>https://dev.to/cucoleadan/the-one-file-that-made-hermes-finally-learn-from-its-mistakes-5aoj</link>
      <guid>https://dev.to/cucoleadan/the-one-file-that-made-hermes-finally-learn-from-its-mistakes-5aoj</guid>
      <description>&lt;p&gt;&lt;em&gt;This was originally published on &lt;a href="https://allagentsconsidered.com/blog/the-one-file-that-made-hermes-finally" rel="noopener noreferrer"&gt;All Agents Considered&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Some time ago, I covered my Hermes research workflow. It runs every week, sorts through tens of tech news publications and forums, and filters out the fluff so I can stay on top of everything that is going on. It took me a few tries to get it right, but now I can safely rely on it.&lt;/p&gt;

&lt;p&gt;That trust came from two early mistakes. On the first real run, Hermes ranked a generic news item too highly because my definition of practical tech news was too loose. I tightened the instruction and ran it again.&lt;/p&gt;

&lt;p&gt;On the second run, a vendor press release passed the filter because I never told Hermes to exclude vendor press releases. I added that rule, ran it a third time, and got a clean result.&lt;/p&gt;

&lt;p&gt;The workflow got better, but &lt;strong&gt;the reason&lt;/strong&gt; why it got better simply vanished.&lt;/p&gt;

&lt;p&gt;If you’d open my final instruction file now, you’ll see one clean rule: reject vendor press releases. You do not see the bad output that created the rule, why the first wording failed, or the result that proved the fix worked.&lt;/p&gt;

&lt;p&gt;Hermes still remembers my projects, files, and old conversations. It also squeezed the useful lessons from those failed runs into one line with no history. And that bothers me because the next mistake it makes might be less obvious. A tool may fail only on one server. An API may accept a believable field name and ignore it. A workflow may write to the wrong folder and still report success.&lt;/p&gt;

&lt;p&gt;So I figured we can’t let the AI bury these critical lessons in old chat logs.&lt;/p&gt;

&lt;p&gt;That’s why I started adding one file to each repeated workflow:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;MISTAKE_LEDGER.md&lt;/code&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%2F3611l5j45v5dr5wc7b3l.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%2F3611l5j45v5dr5wc7b3l.png" alt="Screenshot of a Markdown MISTAKE_LEDGER.md file showing the per-workflow lesson format" width="800" height="417"&gt;&lt;/a&gt;&lt;br&gt;
This article explains what belongs in it, what does not, and the small instruction I use to stop an agent from turning every failed attempt into permanent bad advice.&lt;/p&gt;
&lt;h2&gt;
  
  
  In this edition
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Why persistent memory still loses operational lessons&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Where a Mistake Ledger fits inside a file-based workflow&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The four-step rule that keeps guesses out of the ledger&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A complete instruction you can paste into Hermes or Codex&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The failure modes that make a mistake ledger worse than no ledger&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Memory Keeps Context
&lt;/h2&gt;

&lt;p&gt;I have argued for months that memory changes what an AI agent can do.&lt;/p&gt;

&lt;p&gt;An agent that carries project details and preferences across sessions beats a blank chat window every time. I wrote about this shift in &lt;a href="https://allagentsconsidered.com/blog/forgetting-to-forget-how-infinite" rel="noopener noreferrer"&gt;Forgetting to Forget&lt;/a&gt; when persistent memory made long-running agent work feel possible.&lt;/p&gt;

&lt;p&gt;I still believe that.&lt;/p&gt;

&lt;p&gt;The mistake was treating memory and learning as the same thing. &lt;a href="https://github.com/nousresearch/hermes-agent/blob/v2026.6.5/website/docs/user-guide/features/memory.md" rel="noopener noreferrer"&gt;Hermes Agent v2026.6.5&lt;/a&gt; describes its built-in memory as a bounded, curated set of user preferences, project details, environmental context, and learned information. Session logs preserve more of what the system did.&lt;/p&gt;

&lt;p&gt;An operational lesson serves a different purpose. It tells you what failed, what fixed it, and when that fix applies again.&lt;/p&gt;

&lt;p&gt;Those are three different layers.&lt;/p&gt;

&lt;p&gt;The exact correction may still exist in an old conversation, but that does not mean it will enter the context of a new run six weeks later. Hermes built-in memory is injected as a bounded snapshot at the start of a session rather than retrieved as a complete archive of every old chat. The useful lesson can remain buried in conversation history even while the agent remembers the project.&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%2Fmx2dnxfmk7fd2mdwy88o.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%2Fmx2dnxfmk7fd2mdwy88o.png" alt="Illustration of an agent experience cache bridging raw session logs and a bounded memory snapshot" width="800" height="220"&gt;&lt;/a&gt;&lt;br&gt;
On March 21, 2026, an &lt;a href="https://news.ycombinator.com/item?id=47462910" rel="noopener noreferrer"&gt;Ask HN post about operational memory&lt;/a&gt; called this missing layer an “Agent Experience Cache.” The post listed tool quirks, repeatable workflow patterns, environment-specific knowledge, and failure modes that cost too much time to rediscover.&lt;/p&gt;

&lt;p&gt;That idea made sense to me, but I wanted a smaller version that I could read without adding another memory service.&lt;/p&gt;

&lt;p&gt;One Markdown file beside the workflow felt like the right size.&lt;/p&gt;
&lt;h2&gt;
  
  
  Keep Mistakes Local
&lt;/h2&gt;

&lt;p&gt;My first instinct was to create one global file containing every mistake made by Hermes or Codex.&lt;/p&gt;

&lt;p&gt;That file would become useless fast.&lt;/p&gt;

&lt;p&gt;My content research workflow, Substack analytics tools, server deployments, and draft-writing system fail for different reasons. A rule learned while deploying software should not make Hermes cautious while sorting research. Likewise, a correction about brand sources should not influence how Codex handles a server path. &lt;em&gt;Both Hermes and Codex share the same files and workflows through my Obsidian vault.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The mistakes should live where the work happens.&lt;/p&gt;

&lt;p&gt;I already use an &lt;code&gt;INDEX.md&lt;/code&gt; file to map large workflows. I explained that setup in &lt;a href="https://allagentsconsidered.com/blog/why-my-best-hermes-workflow-consists" rel="noopener noreferrer"&gt;Why My Best Agent Workflow Is Mostly Files&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Inside the project, each repeated workflow gets its own small folder. My research sorter came from the four-file pattern in &lt;a href="https://allagentsconsidered.com/blog/tear-down-your-ai-workflow-and-rebuild" rel="noopener noreferrer"&gt;Tear Down Your AI Workflow and Rebuild It Like This&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;01.Research Sorter/
├── 01.instructions.md
├── 02.input.md
├── 03.output.md
├── 04.review.md
└── MISTAKE_LEDGER.md

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

&lt;/div&gt;



&lt;p&gt;The first four files tell Hermes how to run the work. The fifth preserves the verified lessons produced by running it.&lt;/p&gt;

&lt;p&gt;If a project contains one workflow, project-specific and workflow-specific mean the same thing. Once a project contains several repeated processes, separate ledgers keep the lessons scoped.&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%2Fqxrrn4m36bj2tfpvvq6v.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%2Fqxrrn4m36bj2tfpvvq6v.png" alt="Diagram showing separate MISTAKE_LEDGER.md files scoped to individual workflow folders" width="800" height="220"&gt;&lt;/a&gt;&lt;br&gt;
Because the ledger is visible and readable, I can challenge an entry, edit its scope, or retire the advice after a tool changes. I do not have to rely on a memory entry or session log that sits apart from the workflow it affects.&lt;/p&gt;

&lt;p&gt;If the same lesson appears across several workflow ledgers, I can promote it into a wider agent instruction after reviewing it.&lt;/p&gt;
&lt;h2&gt;
  
  
  What an Entry Holds
&lt;/h2&gt;

&lt;p&gt;The file needs enough detail to stop the same error without becoming a diary of everything that went wrong.&lt;/p&gt;

&lt;p&gt;Each entry records seven fields:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Date&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Task&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;What went wrong&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Confirmed cause&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Verified fix&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;When this applies&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;When to recheck or retire it&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the ledger had existed when I built my research workflow, the vendor PR entry would have looked like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## YYYY-MM-DD: Vendor PR passed the research filter&lt;/span&gt;

&lt;span class="gs"&gt;**Task:**&lt;/span&gt; Sort research items into All Agents Considered article observations.

&lt;span class="gs"&gt;**What went wrong:**&lt;/span&gt; A vendor announcement was kept as a strong
article signal even though no independent technical source discussed it.

&lt;span class="gs"&gt;**Confirmed cause:**&lt;/span&gt; The filter excluded broad news but did not
explicitly exclude vendor PR as a daily input.

&lt;span class="gs"&gt;**Verified fix:**&lt;/span&gt; Add vendor PR to the exclusions and require an
independent technical source before keeping a vendor announcement.

&lt;span class="gs"&gt;**When this applies:**&lt;/span&gt; Every All Agents Considered research-sorting run.

&lt;span class="gs"&gt;**Recheck or retire:**&lt;/span&gt; Recheck if the source policy changes.

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

&lt;/div&gt;



&lt;p&gt;This is a reconstruction from the failure I documented in the earlier article.&lt;/p&gt;

&lt;p&gt;I did not have a ledger then, so I am taking a pattern already hidden inside my workflows and making it visible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Verify Before Recording
&lt;/h2&gt;

&lt;p&gt;AI agents write terrible rules when they update their own instructions after every failure. One plausible guess can harden into a permanent constraint before anyone checks whether it explains what went wrong.&lt;/p&gt;

&lt;p&gt;During one weekly research run, Hermes kept a promotional article from a vendor’s own website and treated it as independent reporting. When I told it to remove the article, Hermes guessed that the missing ingredient was a deep technical quote. It proposed a permanent rule requiring one in every future submission.&lt;/p&gt;

&lt;p&gt;The diagnosis sounded plausible, but it focused on the article’s format when the source was the real warning sign. The piece appeared on the vendor’s corporate domain and repeated the company’s marketing claims without support from independent reporting. The useful lesson was to treat articles on vendor-owned domains as promotional unless an independent source supported them. Recording Hermes’s first guess would have taught the workflow to reject legitimate news briefs because the reporter did not include a direct quote.&lt;/p&gt;

&lt;p&gt;That is why I have to verify the root cause with my own eyes before the agent turns a plausible explanation into a permanent lesson.&lt;/p&gt;

&lt;p&gt;Building my unofficial Substack SDK exposed the same problem in code. Hermes proposed &lt;code&gt;scheduled_at&lt;/code&gt; as the field for scheduling a post. The choice looked logical because plenty of other APIs use that naming convention. The Substack scheduling endpoint I tested expected &lt;code&gt;trigger_at&lt;/code&gt; instead.&lt;/p&gt;

&lt;p&gt;An &lt;a href="https://github.com/cucoleadan/unofficial-substack-sdk/blob/main/test/client.test.ts" rel="noopener noreferrer"&gt;automated test&lt;/a&gt; now checks the request body and fails if the implementation sends a different field. That gives me proof outside the conversation instead of another confident answer from an agent.&lt;/p&gt;

&lt;p&gt;I covered the full story in &lt;a href="https://allagentsconsidered.com/blog/how-i-built-a-substack-api-with-hermes" rel="noopener noreferrer"&gt;How I Built a Substack API With Hermes and Codex&lt;/a&gt;. Without that hard check, neither field name would deserve a permanent spot in a Mistake Ledger.&lt;/p&gt;

&lt;p&gt;Based on that experience, I created a strict four-step rule that keeps guesses out of my final documentation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Catch:&lt;/strong&gt; Workflows fail, I correct the AI, or the AI spots a bad assumption.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; I finish the task before writing down a lesson.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Verify:&lt;/strong&gt; I prove the fix works using a result outside our chat.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Record:&lt;/strong&gt; I add one specific entry to the workflow ledger.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fvwkvhk652gzxqfij2kot.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%2Fvwkvhk652gzxqfij2kot.png" alt="Vertical diagram of the four-step rule: Catch, Fix, Verify, Record" width="800" height="1067"&gt;&lt;/a&gt;&lt;br&gt;
Real proof makes or breaks the verification step. It can come from passing code tests, live API responses, correct files landing in the right folders, or final outputs meeting exact standards. AI confidence alone proves nothing.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Tiny Instruction
&lt;/h2&gt;

&lt;p&gt;The working version fits in one instruction-only skill. There is no script, service, database, or download.&lt;/p&gt;

&lt;p&gt;You can paste the text into a Hermes or Codex task. If you want it available across repeated sessions, save the same block as &lt;code&gt;SKILL.md&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mistake-ledger&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Record a verified reusable lesson after a workflow&lt;/span&gt;
&lt;span class="s"&gt;failure or user correction, and check the current workflow's&lt;/span&gt;
&lt;span class="s"&gt;MISTAKE_LEDGER.md before running related work.&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gh"&gt;# Mistake Ledger&lt;/span&gt;

Before running a repeated workflow, check whether its folder contains
MISTAKE_LEDGER.md. Read only that workflow's ledger and apply relevant
active lessons. State which lesson you are applying.

When a task fails, the user corrects you, or you discover a wrong
assumption:
&lt;span class="p"&gt;
1.&lt;/span&gt; Fix the problem first.
&lt;span class="p"&gt;2.&lt;/span&gt; Verify the replacement through an observable result.
&lt;span class="p"&gt;3.&lt;/span&gt; Record a lesson only when it is concrete, reusable, and scoped to
   this workflow.
&lt;span class="p"&gt;4.&lt;/span&gt; Append one entry to MISTAKE_LEDGER.md with:
&lt;span class="p"&gt;   -&lt;/span&gt; date
&lt;span class="p"&gt;   -&lt;/span&gt; task
&lt;span class="p"&gt;   -&lt;/span&gt; what went wrong
&lt;span class="p"&gt;   -&lt;/span&gt; confirmed cause
&lt;span class="p"&gt;   -&lt;/span&gt; verified fix
&lt;span class="p"&gt;   -&lt;/span&gt; when this applies
&lt;span class="p"&gt;   -&lt;/span&gt; when to recheck or retire it

Do not record speculation, secrets, private content, or one-off user
preferences. Do not turn an unverified diagnosis into a permanent rule.
Mark outdated lessons as retired instead of deleting them.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hermes users can keep the repeated version under &lt;code&gt;~/.hermes/skills/&lt;/code&gt;, or add a shared folder to &lt;code&gt;skills.external_dirs&lt;/code&gt; in &lt;code&gt;~/.hermes/config.yaml&lt;/code&gt;. The &lt;a href="https://github.com/nousresearch/hermes-agent/blob/v2026.6.5/website/docs/user-guide/features/skills.md" rel="noopener noreferrer"&gt;Hermes Agent v2026.6.5 skill documentation&lt;/a&gt; describes both routes.&lt;/p&gt;

&lt;p&gt;If you keep the instruction inside the workflow folder without configuring that folder as a skill directory, ask Hermes to read the file before the run.&lt;/p&gt;

&lt;p&gt;Codex users can save the same instruction at &lt;code&gt;.agents/skills/mistake-ledger/SKILL.md&lt;/code&gt; inside a repository. The current &lt;a href="https://learn.chatgpt.com/docs/build-skills.md" rel="noopener noreferrer"&gt;OpenAI Build skills documentation&lt;/a&gt; describes the required &lt;code&gt;SKILL.md&lt;/code&gt; format.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test the Next Run
&lt;/h2&gt;

&lt;p&gt;Creating the file proves nothing by itself. The next run must show that the recorded lesson changed the workflow’s behavior.&lt;/p&gt;

&lt;p&gt;My next research test is straightforward. I will place a vendor announcement in &lt;code&gt;02.input.md&lt;/code&gt; beside several independent technical stories. I will then run the workflow and check three things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Did Hermes read &lt;code&gt;MISTAKE_LEDGER.md&lt;/code&gt; before scoring the items?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Did it state that the vendor PR lesson applied?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Did it exclude the announcement unless an independent technical source supported it?&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The same test works for other workflows. First, reproduce the conditions that caused the original failure. Then check whether the agent applies the relevant lesson without being reminded.&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%2Fw6feotnqi208mp3l5o41.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%2Fw6feotnqi208mp3l5o41.png" alt="Test checklist diagram: the next run must read the ledger, apply the lesson, and exclude the vendor announcement" width="800" height="220"&gt;&lt;/a&gt;&lt;br&gt;
I also need to measure the cost of using the ledger. If Hermes starts citing irrelevant history on every run, the ledger has created a new problem. It should reduce repeated work without becoming a compliance manual that the agent must review before every task.&lt;/p&gt;

&lt;p&gt;This method still needs several real repetitions before I make stronger claims about it. I expect the trigger wording, retirement rules, and promotion threshold to change as I use it across more workflows. That uncertainty belongs in the build log. A clean ending would give the method more confidence than it has earned.&lt;/p&gt;

&lt;h2&gt;
  
  
  When the Ledger Lies
&lt;/h2&gt;

&lt;p&gt;A Mistake Ledger creates five failure modes of its own. Any one of them can make the workflow worse:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;False causality:&lt;/strong&gt; The agent records a symptom as the cause. It then applies the wrong fix every time the workflow runs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Bad scope:&lt;/strong&gt; The agent promotes a useful lesson from one workflow into a universal rule. That rule starts interfering with unrelated work.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stale advice:&lt;/strong&gt; APIs change, tools get updated, and folder structures move. A correct fix can eventually become a new bug.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Noise:&lt;/strong&gt; Every typo, failed search, and abandoned idea enters the ledger. Hermes then has to sort through a second pile of clutter before starting the real task.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Exposure:&lt;/strong&gt; A careless entry preserves credentials, private customer information, session cookies, or sensitive tool output. None of that information belongs in a file the agent keeps reading.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some repeated failures reveal a broken workflow structure rather than a reusable lesson.&lt;/p&gt;

&lt;p&gt;If Hermes keeps selecting an archived file because current and old drafts live together, the folder structure needs fixing. If every output lands in a new location, the workflow needs a defined destination. Recording “pick the current file next time” only hides those structural problems from the next run.&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%2Fglqwaqhera12g2eqiz7i.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%2Fglqwaqhera12g2eqiz7i.png" alt="Balanced scale illustration comparing structural fixes to recorded lessons under the ledger" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
Before turning that kind of confusion into a permanent lesson, run the audit from &lt;a href="https://allagentsconsidered.com/blog/the-twenty-minute-audit-that-found" rel="noopener noreferrer"&gt;The Twenty Minute Audit That Found Where Hermes Was Getting Lost&lt;/a&gt;. The audit will show whether the agent’s map of the work is the real problem.&lt;/p&gt;

&lt;p&gt;My dividing line is simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If Hermes cannot find the right work, fix the map. If it finds the right files and still repeats the same operational error, record the lesson.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It in 60 Seconds
&lt;/h2&gt;

&lt;p&gt;Open one workflow that you run more than once. Think of the last correction you gave the agent. Then confirm that the replacement worked outside the conversation where you suggested it.&lt;/p&gt;

&lt;p&gt;If you still do not know what caused the failure, stop there. An unverified correction has not earned a permanent entry.&lt;/p&gt;

&lt;p&gt;Once the fix is verified, create &lt;code&gt;MISTAKE_LEDGER.md&lt;/code&gt; inside the workflow folder. Record the seven fields while the evidence is still easy to inspect.&lt;/p&gt;

&lt;p&gt;On the next run, ask the agent to read the ledger first and state which lesson applies. Do not remind it of the original error or steer it toward the answer.&lt;/p&gt;

&lt;p&gt;That run is the test. You do not need a new model, an extra memory service, or a global database containing everything your agent has ever done. One workflow and one verified mistake are enough to test whether the lesson survives the conversation where it was learned.&lt;/p&gt;

&lt;h2&gt;
  
  
  Give Failure a Job
&lt;/h2&gt;

&lt;p&gt;The clean version of my research workflow hides the two failed runs that shaped it. The final instructions preserve the rules without showing which mistakes forced me to add them.&lt;/p&gt;

&lt;p&gt;That makes the instructions easier to read. It also removes the operating history I will need when a rule starts causing trouble.&lt;/p&gt;

&lt;p&gt;Six months from now, I want to know why a rule exists before I delete it. Hermes should understand when the rule applies without searching old conversations. Both of us should see when the advice has expired.&lt;/p&gt;

&lt;p&gt;These tools support different parts of the same system. Project maps and workflow folders make the work findable and repeatable. Audits expose structural defects before they become permanent instructions. The Mistake Ledger preserves verified failures after the immediate problem has been fixed.&lt;/p&gt;

&lt;p&gt;The ledger does not turn Hermes into an agent that trains itself. It gives the next run a short piece of reviewed evidence from the last one. That is enough for version one.&lt;/p&gt;

&lt;p&gt;If the broader stack is what you are after, I wrote about &lt;a href="https://allagentsconsidered.com/blog/the-30-hermes-stack-that-makes-claude" rel="noopener noreferrer"&gt;the full cost breakdown&lt;/a&gt; and &lt;a href="https://allagentsconsidered.com/blog/how-to-automate-your-morning-with" rel="noopener noreferrer"&gt;the morning workflow that runs on it&lt;/a&gt;. Both depend on the same file-based workflow structure to stay reliable across sessions.&lt;/p&gt;

&lt;p&gt;Capability is cheap when the foundation is broken. Audit one folder. Fix one thing. Then decide whether you need another tool.&lt;/p&gt;




</description>
      <category>mistakes</category>
      <category>memory</category>
      <category>workflows</category>
      <category>hermes</category>
    </item>
    <item>
      <title>How Pangram Decides What Looks Like AI</title>
      <dc:creator>cucoleadan</dc:creator>
      <pubDate>Tue, 28 Jul 2026 12:37:08 +0000</pubDate>
      <link>https://dev.to/cucoleadan/how-pangram-decides-what-looks-like-ai-n9j</link>
      <guid>https://dev.to/cucoleadan/how-pangram-decides-what-looks-like-ai-n9j</guid>
      <description>&lt;p&gt;&lt;em&gt;This was originally published on &lt;a href="https://allagentsconsidered.com/blog/how-pangram-decides-what-looks-like" rel="noopener noreferrer"&gt;All Agents Considered&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;I have no doubt you already know that last week Substack just attached an AI detector to every article on the platform.&lt;/p&gt;

&lt;p&gt;The new &lt;a href="https://support.substack.com/hc/en-us/articles/50891130623508-How-can-I-detect-AI-on-Substack" rel="noopener noreferrer"&gt;“Scan for AI” feature&lt;/a&gt; lets readers analyze a post, Note, comment, or reply with &lt;a href="https://www.pangram.com/research/how-it-works" rel="noopener noreferrer"&gt;Pangram&lt;/a&gt;, which estimates how much of the writing is human, AI-assisted or written by AI.&lt;/p&gt;

&lt;p&gt;And the percentage it returns might looks precise, like a speed camera telling you exactly how fast you were going.&lt;/p&gt;

&lt;p&gt;But Pangram did not watch the person type, check their browsing history, or find a hidden signature left by ChatGPT or Claude. It looked at the finished text and decided what the writing resembled.&lt;/p&gt;

&lt;p&gt;That distinction sits at the center of the argument happening across the &lt;a href="https://www.reddit.com/r/Substack/comments/1v2pokv/substack_now_works_with_pangram_to_let_readers/" rel="noopener noreferrer"&gt;Substack&lt;/a&gt;, &lt;a href="https://www.reddit.com/r/Professors/comments/1nr17ue/thoughts_on_pangram/" rel="noopener noreferrer"&gt;professor&lt;/a&gt;, and &lt;a href="https://www.reddit.com/r/slatestarcodex/comments/1v2p1b8/substack_partners_with_pangram_to_offer_oneclick/" rel="noopener noreferrer"&gt;AI research&lt;/a&gt; subreddits.&lt;/p&gt;

&lt;p&gt;Some people think these detectors generate little more than a random number. Others treat the score like a confession.&lt;/p&gt;

&lt;p&gt;Both sides are missing the point.&lt;/p&gt;

&lt;p&gt;Pangram is pretty good at identifying obvious AI writing, and it has more behind it than the early tools that made AI detection a laughing stock. In &lt;a href="https://www.nber.org/papers/w34223" rel="noopener noreferrer"&gt;independent testing from the University of Chicago&lt;/a&gt;, it identified writing from widely available AI models with low error rates under the conditions studied.&lt;/p&gt;

&lt;p&gt;But it is not perfect. &lt;a href="https://arxiv.org/abs/2605.19516" rel="noopener noreferrer"&gt;Some model output and repeated paraphrasing can evade it&lt;/a&gt;, and human writing can still be classified incorrectly.&lt;/p&gt;

&lt;p&gt;A low AI score does not prove that no AI was used, just as a high score does not prove an algo wrote the text. Pangram is a serious pattern detector, not a yes-or-no authorship test. It cannot magically settle the question of authorship. So today I am going a bit out of the way with the main topics of AAC to show you the truth behind Pangram and AI detectors.&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%2Fiyfowjz2ndo56howk8wx.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%2Fiyfowjz2ndo56howk8wx.png" alt="Pangram AI detection interface showing a text analysis with human and AI-assisted percentage breakdown" width="800" height="417"&gt;&lt;/a&gt;&lt;br&gt;
In this edition I’ll cover how Pangram is trained, what its score measures, why it differs from older detectors, and where it fails, without pretending the tool can prove with 100% certainty who wrote a piece a text.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In this article:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Why older AI detectors earned so much distrust&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How Pangram learns to identify AI patterns&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What its percentage does and does not mean&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The strongest evidence that it works&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The known ways it can fail&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How to use a result without accusing the wrong person&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Everyone Hates AI Detectors
&lt;/h2&gt;

&lt;p&gt;Early AI detectors often leaned heavily on two ideas called &lt;strong&gt;perplexity&lt;/strong&gt; (&lt;em&gt;not the tool&lt;/em&gt;) and &lt;strong&gt;burstiness&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Perplexity&lt;/strong&gt; asks how surprised a language model is by the next word. AIs are trained to predict the next word, that’s literally written in the DNA of all LLMs. On the other hand, our human writing patterns are less predictable just because our writing tends to be messier.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Burstiness&lt;/strong&gt; asks whether sentence lengths and structures vary. Humans may write one clipped sentence, then an overgrown paragraph, followed by a shorter sentences. AI models usually settle into a steady rhythm (like the Rule of 3’s).&lt;/p&gt;

&lt;p&gt;You don’t need me to point out that these “AI detection” techniques are fundamentally flawed. Imagine judging whether bread came from a factory by checking whether every slice has the same thickness. That clue may help in some cases, but it doesn’t tell you exactly who baked the loaf.&lt;/p&gt;

&lt;p&gt;A safety manual is predictable because it needs to be. A legal form repeats itself because consistency matters. A non-native writer may use simpler sentence patterns.&lt;/p&gt;

&lt;p&gt;A poet may produce language so unusual that the detector has little familiar ground beneath it.&lt;/p&gt;

&lt;p&gt;This is why old detectors produced absurd headlines. In 2023, &lt;a href="https://arstechnica.com/information-technology/2023/07/why-ai-detectors-think-the-us-constitution-was-written-by-ai/" rel="noopener noreferrer"&gt;Ars Technica reported&lt;/a&gt; that one detector labeled part of the US Constitution as likely AI-generated. A &lt;a href="https://link.springer.com/article/10.1007/s40979-023-00146-z" rel="noopener noreferrer"&gt;2023 academic review of detection tools&lt;/a&gt; also found serious reliability problems, especially after text was edited or paraphrased. Pangram argues that those two measures alone &lt;a href="https://www.pangram.com/blog/why-perplexity-and-burstiness-fail-to-detect-ai" rel="noopener noreferrer"&gt;fail as a basis for detection&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thus an online myth was born: AI detectors don’t work.&lt;/p&gt;

&lt;p&gt;Before we go into why Pangram is truly different, we really have to get this out of the way. Pangram is not the only trained detector in 2026. GPTZero describes a multiclass model for human, mixed, polished, generated, and paraphrased text. Originality says its &lt;a href="https://originality.ai/blog/how-does-ai-content-detection-work" rel="noopener noreferrer"&gt;current detector uses a trained transformer model&lt;/a&gt; built from human and generated examples.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pangram Does Not Search for an Em Dash
&lt;/h2&gt;

&lt;p&gt;Pangram is a trained classifier.&lt;/p&gt;

&lt;p&gt;Researchers train it on many documents labeled by source: human-written or AI-generated. From those examples, the detector learns which combinations of patterns tend to distinguish one group from the other.&lt;/p&gt;

&lt;p&gt;Think of it like teaching someone to recognize counterfeit passports rather than giving them a checklist of what a document should contain. &lt;em&gt;Side note: this reminded me of the game Papers, Please.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Pangram says its flagship detector uses a transformer model adapted to classify sequences of text. Its &lt;a href="https://www.pangram.com/research/how-it-works" rel="noopener noreferrer"&gt;technical explanation&lt;/a&gt; and &lt;a href="https://arxiv.org/abs/2402.14873" rel="noopener noreferrer"&gt;original research paper&lt;/a&gt; describe a system that learns from human writing and model-generated writing. Basically they created an AI that can detect AIs.&lt;/p&gt;

&lt;p&gt;It does not call OpenAI to ask whether ChatGPT wrote the paragraph. It does not recover the prompt. It does not compare the post with a giant database of every answer an AI company has produced. There’s literally no need for that.&lt;/p&gt;

&lt;p&gt;Pangram learns what different kinds of writing tend to look like, then it analyzes the text you feed it against that map.&lt;/p&gt;

&lt;p&gt;This should also clear up the em dash frenzy.&lt;/p&gt;

&lt;p&gt;Pangram can show human-readable supporting clues such as em dashes, lists, headings, stock phrases, Markdown, and groups of. But Pangram says those visible clues &lt;a href="https://www.pangram.com/supporting-evidence" rel="noopener noreferrer"&gt;are separate from the flagship detector&lt;/a&gt;. They help a reader inspect the text and show that they are not the inputs driving the main model.&lt;/p&gt;

&lt;p&gt;To better put this into perspective, imagine a prisoner just escaped from incarceration. Deleting every em dash is like removing their striped shirt before a facial-recognition scan. The prisoner changed something visible without necessarily changing what the system recognizes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pangram Trains on Twins
&lt;/h2&gt;

&lt;p&gt;The most interesting difference is how Pangram constructs its training set.&lt;/p&gt;

&lt;p&gt;Suppose we trained a detector using personal diaries as the human examples and software landing pages as the AI examples. It might appear accurate while learning the wrong lesson. Instead of detecting AI, it could learn that feelings are human and product features are synthetic.&lt;/p&gt;

&lt;p&gt;Pangram tries to prevent that shortcut with what it calls &lt;strong&gt;synthetic mirroring&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For each human document, it creates an AI counterpart about the same subject, in a similar tone and style, carrying similar information. A human book review is compared with an AI book review of the same material. A human essay is paired with its AI twin.&lt;/p&gt;

&lt;p&gt;The detector must find differences between twins rather than compare a shopping list with a sales 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%2F3baafnledk74gs1i04ce.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%2F3baafnledk74gs1i04ce.png" alt="Diagram showing Pangram's synthetic mirroring training method where human text is paired with AI-generated counterparts" width="800" height="220"&gt;&lt;/a&gt;&lt;br&gt;
Pangram’s &lt;a href="https://www.pangram.com/research/model-card/pangram-3-1" rel="noopener noreferrer"&gt;model card&lt;/a&gt; says its human training material covers essays, reviews, books, creative writing, news, scientific papers, Wikipedia, and general web text. Its AI side is generated in-house to create those matched comparisons. Then it makes the exam even harder.&lt;/p&gt;

&lt;p&gt;Pangram scans large collections of known human writing and looks for passages the detector wrongly calls AI. Researchers add those mistakes back into the training data, create AI mirrors for them, and train again.&lt;/p&gt;

&lt;p&gt;This technique is called &lt;strong&gt;hard-negative mining&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;There’s a famous story from World War II based on the statistician Abraham Wald. The military engineers were asked to examine aircraft that returned from battle and map where they had been hit. In most cases, the wings and fuselage were covered in bullet holes, so the obvious response was to reinforce those areas.&lt;/p&gt;

&lt;p&gt;Wald argued that the military was looking only at surviving aircraft, but if those planes could return despite being hit in the wings and fuselage, then those areas were not the most vulnerable. That’s how he figured out the places with few bullet holes (like the engines) needed more protection.&lt;/p&gt;

&lt;p&gt;Hard-negative mining follows a similar principle. The most useful evidence often comes from the cases a system mishandles. So instead of repeatedly training a detector on obvious AI writing, researchers study the difficult human passages Pangram (&lt;em&gt;initially&lt;/em&gt;) falsely identified as AI and feed those mistakes back into the training process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pangram’s Open Model Is Not the Substack Model
&lt;/h2&gt;

&lt;p&gt;Pangram has released public code, data links, and model weights through its &lt;a href="https://github.com/pangramlabs/EditLens" rel="noopener noreferrer"&gt;EditLens repository&lt;/a&gt;. The project accompanies a paper accepted at ICLR 2026 on measuring degrees of AI editing.&lt;/p&gt;

&lt;p&gt;That is meaningful transparency. It lets researchers inspect and reproduce part of the method without trusting a marketing page.&lt;/p&gt;

&lt;p&gt;What it doesn’t reveal is the complete system running inside Pangram’s commercial product.&lt;/p&gt;

&lt;p&gt;The public repository contains two smaller research models and instructions for training them. Pangram’s &lt;a href="https://www.pangram.com/blog/introducing-open-pangram" rel="noopener noreferrer"&gt;Open Pangram announcement&lt;/a&gt; explicitly says the release is a research baseline and should not be used to enforce AI policies in schools or workplaces.&lt;/p&gt;

&lt;p&gt;The current commercial model described by Pangram is version 3.3. Its &lt;a href="https://www.pangram.com/research/model-card/pangram-3-3" rel="noopener noreferrer"&gt;model card&lt;/a&gt; documents a larger production system with later training and scanning changes. Substack publicly confirms the Pangram integration, but its help page does not name the exact model version or threshold it uses.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the Percentage Means
&lt;/h2&gt;

&lt;p&gt;We can all agree that teal writing has made binary detection obsolete.&lt;/p&gt;

&lt;p&gt;A writer may create the first draft, ask Claude to tighten one section, run the result through Grammarly, dictate a new ending, and then rewrite every sentence by hand. Which words belong to whom?&lt;/p&gt;

&lt;p&gt;Pangram’s EditLens research tries to measure that grey area. Researchers begin with human text, ask models to edit it at different intensities, and compare each edited version with the original. A classifier then learns to estimate the degree of editing from the final text.&lt;/p&gt;

&lt;p&gt;The full &lt;a href="https://arxiv.org/abs/2510.03154" rel="noopener noreferrer"&gt;EditLens paper&lt;/a&gt; states the important limitation of its method. When the detector checks your article, it doesn’t receive your original draft. It only sees the final text.&lt;/p&gt;

&lt;p&gt;The estimate is like a restorer examining a painting and guessing how much has been retouched. They may recognize signs of later work, but they can’t count the extra brushstrokes.&lt;/p&gt;

&lt;p&gt;For long documents, Pangram breaks the text into overlapping windows, checks each window, then makes a finer pass near uncertain boundaries. Its &lt;a href="https://www.pangram.com/research/model-card/pangram-3-2" rel="noopener noreferrer"&gt;3.2 model card&lt;/a&gt; describes an approximate resolution of 50 words.&lt;/p&gt;

&lt;p&gt;Pangram can then describe shares of a document as Human, Lightly AI-assisted, Moderately AI-assisted, or AI. A result such as 30% AI refers to the share of classified text segments assigned to that category.&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%2Fit5mxs4e7r0kjwmgomwl.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%2Fit5mxs4e7r0kjwmgomwl.png" alt="Chart showing Pangram's overlapping window analysis method for breaking long documents into text segments" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
It does not mean:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;There is a 30% chance the writer used AI&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A machine typed exactly 30% of the words&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pangram found the original prompt&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The writer contributed only 70% of the thinking&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ideas, wording, structure, research, and final judgment are different contributions. No detector can reduce all of them to one authorship percentage by reading the final copy.&lt;/p&gt;

&lt;p&gt;This is where Substack’s interface creates a social problem. A percentage looks like a measurement, but underneath it’s just a classification.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Evidence That Pangram Works
&lt;/h2&gt;

&lt;p&gt;The strongest independent evidence I found comes from the 2025 University of Chicago working paper &lt;a href="https://www.nber.org/papers/w34223" rel="noopener noreferrer"&gt;Artificial Writing and Automated Detection&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The researchers gathered 1,992 verified human passages across blogs, novels, résumés, essays, business writing, and other genres. They produced matched AI versions using GPT-4.1, Claude Opus 4, Claude Sonnet 4, and Gemini 2.0 Flash.&lt;/p&gt;

&lt;p&gt;On medium and long passages in that test, Pangram produced essentially zero false positives and false negatives. It outperformed GPTZero, OriginalityAI, and an open RoBERTa detector in the same experiment.&lt;/p&gt;

&lt;p&gt;That should clear up the myth that “AI detectors never work”.&lt;/p&gt;

&lt;p&gt;But this should also be taken with a grain of salt. The paper was, after all, a working paper. The test used a controlled set of matched human and synthetic documents. It evaluated the Pangram service available in May 2025 and it did not test every Substack voice, mixed editing workflow, new model, humanizer, or unusual format.&lt;/p&gt;

&lt;p&gt;Pangram’s current numbers come from Pangram. Its &lt;a href="https://www.pangram.com/research/model-card/pangram-3-3" rel="noopener noreferrer"&gt;3.3 model card&lt;/a&gt; reports a 0.01% false-positive rate for long-form creative writing, 0.02% for academic writing, 0.04% for multilingual how-to articles, and 0.49% for poetry.&lt;/p&gt;

&lt;p&gt;It also reports a 1.5% false-negative rate on a random Chatbot Arena set.&lt;/p&gt;

&lt;p&gt;Those are impressive company-reported results, but they shouldn’t be treated as promises about the next text you scan.&lt;/p&gt;

&lt;p&gt;The clearest warning comes from a competing test. In February 2026, &lt;a href="https://gptzero.me/news/gptzero-ai-detection-benchmarking-the-industry-standard-in-accuracy-transparency-and-fairness/" rel="noopener noreferrer"&gt;GPTZero published its own benchmark&lt;/a&gt; and reported that GPTZero 4.3b beat Pangram 3.2 on its datasets.&lt;/p&gt;

&lt;p&gt;That does not prove GPTZero is better. It proves the winner changes with the test set, model version, threshold, and person running the test.&lt;/p&gt;

&lt;p&gt;I made the same argument in &lt;a href="https://allagentsconsidered.com/blog/why-ai-benchmarks-fail-agent-workflows" rel="noopener noreferrer"&gt;my breakdown of why AI benchmarks fail real agent workflows&lt;/a&gt;. A leaderboard compresses the conditions into one number, but conditions change and can be picked arbitrarily.&lt;/p&gt;




&lt;h2&gt;
  
  
  Where Pangram Messes Up
&lt;/h2&gt;

&lt;p&gt;Pangram’s own documentation says it works best on long-form prose written in complete sentences, like a Substack post.&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%2Fsoa508bsrbyaxiy1v8dq.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%2Fsoa508bsrbyaxiy1v8dq.png" alt="Diagram illustrating Pangram's limitations including bullet lists, technical instructions, poetry, and short text" width="800" height="220"&gt;&lt;/a&gt;&lt;br&gt;
Its &lt;a href="https://www.pangram.com/research/model-card/pangram-3-3" rel="noopener noreferrer"&gt;3.3 limitations&lt;/a&gt; warn about bullet lists, technical instructions, tables of contents, references, templates, equations, headers, and footers. Poetry has a much higher reported false-positive rate than long creative prose.&lt;/p&gt;

&lt;p&gt;Short text creates another problem. Just as a smoke detector cannot identify much from a few molecules in the air, Pangram can not correctly classify a short text.&lt;/p&gt;

&lt;p&gt;Then there are false negatives.&lt;/p&gt;

&lt;p&gt;A May 2026 preprint titled &lt;a href="https://arxiv.org/abs/2605.19516" rel="noopener noreferrer"&gt;Base Models Look Human To AI Detectors&lt;/a&gt; found that output from base language models often looked human to both Pangram and GPTZero. Instruction-tuned chat models were easier to identify than base models. Researchers also used repeated paraphrasing to make AI text appear more human to the detectors.&lt;/p&gt;

&lt;p&gt;That suggests detectors may be especially good at recognizing the habits produced by chat-model training, rather than detecting one universal substance called “AI writing.”&lt;/p&gt;

&lt;p&gt;The Atlantic found another crack. A reporter sent ChatGPT and Claude output through the &lt;a href="https://walterwrites.ai/" rel="noopener noreferrer"&gt;Walter Writes humanizer&lt;/a&gt;, then watched Pangram label the result human. Pangram has since described better humanizer detection in version 3.3, so one test does not freeze the system forever, but it does show the shape of the fight.&lt;/p&gt;

&lt;p&gt;The detector learns the disguise, and the disguise keeps changing. It’s just like with police figuring out a new way to transport illicit substances, then traffickers come up with something new and the wheel keeps spinning.&lt;/p&gt;

&lt;p&gt;This arms race creates an important asymmetry:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A result of “AI” can be a false accusation&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A result of “Human” can be successfully disguised AI&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Neither side provides proof.&lt;/p&gt;

&lt;p&gt;Pangram CEO Max Spero told &lt;a href="https://www.theatlantic.com/technology/2026/05/pangram-ai-detection-accuracy/687381/" rel="noopener noreferrer"&gt;The Atlantic&lt;/a&gt; the detector should never be the final arbiter. The company setting limits on its own tool carries more weight than a critic attacking it from outside.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Read a Pangram Result
&lt;/h2&gt;

&lt;p&gt;A Pangram result is closer to weather radar than a fingerprint.&lt;/p&gt;

&lt;p&gt;Radar detects conditions associated with a storm. It can tell you when the signal is strong, where to look, and whether you should carry an umbrella. A fingerprint connects a person to an object through physical evidence, and Pangram has no such access to the writing process.&lt;/p&gt;

&lt;p&gt;I also don’t use Pangram as a moral scorecard. I write about technical subjects, and I use AI heavily to structure my thoughts and explain difficult concepts to less technical readers. My first question when I read something is much simpler: &lt;strong&gt;Did I get anything valuable from it?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If an article teaches me something new, gives me a useful idea, or makes a complicated subject easier to understand, I’m satisfied with the time I spent reading it; whether AI helped produce it comes second.&lt;/p&gt;

&lt;p&gt;I take the same approach to Duolingo, where I’m currently learning German. Duolingo has &lt;a href="https://investors.duolingo.com/node/10901/pdf" rel="noopener noreferrer"&gt;openly described using generative AI to create and validate course content&lt;/a&gt;. I also know that &lt;a href="https://blog.duolingo.com/ending-honoring-our-volunteer-contributor-program-2/" rel="noopener noreferrer"&gt;more than 1,000 volunteers helped create dozens of its original language courses&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I have serious ethical problems with that history. I personally believe that Duolingo owes an enormous debt to the community that helped build it, and embracing automation does not erase that debt. But I cannot reverse the company’s decisions, and I still want to learn German, so I keep on using the app and embrace the technology for what it can do.&lt;/p&gt;

&lt;p&gt;That is roughly how I approach AI-assisted writing. I care about the quality of the thinking, the usefulness of the result, and whether the article rewards my attention. A detector score may tell me something about how the prose was produced, but it cannot decide whether the prose was worth reading.&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%2Fx5xkncfzw80uwrop36j2.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%2Fx5xkncfzw80uwrop36j2.png" alt="Four-step guide for interpreting Pangram results: check material type, read as resemblance, don't reconstruct process, ask what question to answer" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
With that in mind, I use four rules when reading a Pangram result:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Check the material.&lt;/strong&gt; Is it long-form prose, or a short Note, poem, list, technical manual, reference section, or template? &lt;a href="https://www.pangram.com/research/model-card/pangram-3-2" rel="noopener noreferrer"&gt;Pangram’s own model card&lt;/a&gt; says the detector is intended for long-form writing in complete sentences and warns that lists, instructions, reference sections, templates, and dense equations are more susceptible to false positives.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Read the label as resemblance.&lt;/strong&gt; Pangram is a trained classifier. It studies patterns in human and AI writing and estimates which group a new passage most closely resembles. &lt;a href="https://www.pangram.com/research/how-it-works" rel="noopener noreferrer"&gt;Pangram describes the process&lt;/a&gt; as turning the text into a numerical representation and passing it through a classifier. It does not observe who typed the words or watch the document being created.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Do not mistake the score for a reconstruction of the writing process.&lt;/strong&gt; A high result does not tell me which ideas came from a model, how much work the writer contributed, or whether AI only helped with editing. A low result does not prove that no AI was involved. The detector sees the finished prose, not the conversation, research, prompting, or revision behind it. This is also why &lt;a href="https://allagentsconsidered.com/blog/why-my-best-agent-workflow-is-mostly-files" rel="noopener noreferrer"&gt;my best agent workflow is mostly files&lt;/a&gt;. Files preserve the trail between research, drafting, and editing, even when AI is part of the process.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ask what question I actually want answered.&lt;/strong&gt; If I want to know whether the prose resembles AI-generated writing, Pangram provides a useful signal. If I want to know whether the article is accurate, original, insightful, or worth reading, I have to judge those things myself. A strong idea does not become worthless because AI helped express it, just as a completely human-written article does not become valuable merely because a person typed every word.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I apply the same discipline when AI gives me a technical answer because &lt;a href="https://allagentsconsidered.com/blog/accepting-ais-first-answer-is-bad" rel="noopener noreferrer"&gt;accepting AI’s first answer without checking it&lt;/a&gt; replaces judgment with convenience. I do not reject an answer because a model produced it, and I do not trust it merely because it sounds polished. I ask whether it is accurate, useful, and worth my attention.&lt;/p&gt;

&lt;p&gt;A Pangram result can describe patterns in the writing, but it cannot tell me whether I learned something. That would be dystopian.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Verdict On Pangram
&lt;/h2&gt;

&lt;p&gt;Pangram is different from the crude detectors people remember.&lt;/p&gt;

&lt;p&gt;Its classifier learns from paired human and AI documents.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Its synthetic mirrors reduce topic shortcuts. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Its hard-negative mining feeds human false positives back into training. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Its calibration favors avoiding false accusations. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;EditLens attempts to model mixed editing rather than forcing every document into a human-or-machine box.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Independent researchers found that this approach performed extremely well on their tested medium and long passages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Those are facts.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Pangram still sees only the finished text. It cannot observe the actual writing process.&lt;/p&gt;

&lt;p&gt;Its published research does not reveal every part of the production system, and its accuracy varies by domain. Short and formulaic formats remain particularly difficult.&lt;/p&gt;

&lt;p&gt;New model types and paraphrasing can also evade detection. Not to mention independent benchmarks do not always agree with Pangram’s own results.&lt;/p&gt;

&lt;p&gt;And even the percentage can be misleading. Readers may mistake it for a probability or a record of the writing process, but it is neither.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Those limitations are facts too.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The reasonable conclusion lies somewhere between “all detectors are useless” and “the algorithm knows the absolute truth”.&lt;/p&gt;

&lt;p&gt;Pangram has earned the right to be treated as evidence, but it hasn’t earned the right to be treated as a verdict.&lt;/p&gt;




</description>
      <category>pangram</category>
      <category>detectors</category>
      <category>substack</category>
      <category>authorship</category>
    </item>
  </channel>
</rss>
