<?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: Maxim Berg</title>
    <description>The latest articles on DEV Community by Maxim Berg (@maxberg).</description>
    <link>https://dev.to/maxberg</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%2F3858305%2Fbf1f3845-0f86-426e-8c12-662146892b3d.jpg</url>
      <title>DEV Community: Maxim Berg</title>
      <link>https://dev.to/maxberg</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/maxberg"/>
    <language>en</language>
    <item>
      <title>Friction was load-bearing: nine years of git before Claude Code and eight months after</title>
      <dc:creator>Maxim Berg</dc:creator>
      <pubDate>Mon, 31 Aug 2026 14:11:36 +0000</pubDate>
      <link>https://dev.to/maxberg/friction-was-load-bearing-nine-years-of-git-before-claude-code-and-eight-months-after-441a</link>
      <guid>https://dev.to/maxberg/friction-was-load-bearing-nine-years-of-git-before-claude-code-and-eight-months-after-441a</guid>
      <description>&lt;h2&gt;
  
  
  The trigger
&lt;/h2&gt;

&lt;p&gt;On August 29 a post appeared on Hacker News: &lt;a href="https://news.ycombinator.com/item?id=49491745" rel="noopener noreferrer"&gt;“Ask HN: How to break Claude Code addiction?”&lt;/a&gt;. The author is a professional developer who works remotely. By the end of the day he stops reading the code the agent writes and keeps going, “one more bit”, late into the night. This did not happen before. Two lines from the post are worth quoting as they are.&lt;/p&gt;

&lt;p&gt;“I don't want to give up the chance of another little ‘hit’ from it.”&lt;/p&gt;

&lt;p&gt;“Vibe coding doesn't feel as ‘hard’ as work, so I can just keep doing.”&lt;/p&gt;

&lt;p&gt;The post got 16 points and 24 comments. That is not a trend, that is one person. But on the way to me it became a trend. My digest bot, which reads HN and posts a morning summary to Slack, turned it into “companies depending on a single tool” and suggested a blog post about vendor lock-in. The word “vendor” does not appear in the post. This is how a topic gets inflated: a personal observation becomes a corporate risk after three retellings.&lt;/p&gt;

&lt;p&gt;The post is not alone, though. On HN this year: &lt;a href="https://news.ycombinator.com/item?id=48554309" rel="noopener noreferrer"&gt;“How do you handle skill atrophy from using coding agents?”&lt;/a&gt; (June, 34 points), &lt;a href="https://news.ycombinator.com/item?id=48366380" rel="noopener noreferrer"&gt;“I'm Done Using AI”&lt;/a&gt; (June; one commenter: “sitting in front of Claude prompting until 5am”), and three Show HN posts with skill-atrophy tests: &lt;a href="https://news.ycombinator.com/item?id=44507369" rel="noopener noreferrer"&gt;Dev atrophy test&lt;/a&gt;, &lt;a href="https://news.ycombinator.com/item?id=48819234" rel="noopener noreferrer"&gt;Atrophy&lt;/a&gt;, &lt;a href="https://news.ycombinator.com/item?id=47880757" rel="noopener noreferrer"&gt;Chestnut&lt;/a&gt;. When a small industry of diagnostic tools appears around a symptom, the symptom is probably real.&lt;/p&gt;

&lt;p&gt;I decided to check on myself. I have something none of the studies I found have: nine years of commit history without AI and eight months with Claude Code, on one person, with an exact start date.&lt;/p&gt;

&lt;h2&gt;
  
  
  My data
&lt;/h2&gt;

&lt;p&gt;My first Claude Code session was on January 6, 2026. Before that I did not use AI for code at all: no autocomplete, no chat. Everything before that date was written by hand.&lt;/p&gt;

&lt;p&gt;I went through all 23 repositories on my disk, took my commits and removed duplicates by hash. For each month I counted five things: commits per active day, median lines changed per commit, share of commits outside 09:00–19:00, share at night (22:00–06:00), share on weekends. The time is the author timestamp from the commit, in my own time zone. The nine-year column below is the average over 2017–2025; single years vary.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;2017–2025, nine years&lt;/th&gt;
&lt;th&gt;2026, January–August&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Commits per active day&lt;/td&gt;
&lt;td&gt;3.8&lt;/td&gt;
&lt;td&gt;17.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Active days&lt;/td&gt;
&lt;td&gt;~185 per year&lt;/td&gt;
&lt;td&gt;211 in eight months&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Median lines changed per commit&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Commits outside 9–19&lt;/td&gt;
&lt;td&gt;22%&lt;/td&gt;
&lt;td&gt;36%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Commits at night&lt;/td&gt;
&lt;td&gt;9%&lt;/td&gt;
&lt;td&gt;19%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Commits on weekends&lt;/td&gt;
&lt;td&gt;8%&lt;/td&gt;
&lt;td&gt;17%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;One caveat on the baseline: I am not only a developer — I also run the business, management fills the daytime, and coding often slides into the evening. In 2017 and 2018, when I was building a processing system for digital gift cards, 39–42% of commits fell outside 9–19. Against every year from 2019 to 2025, the 2026 shares are still higher across the board.&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%2Fyoadiw26riowg5peowzo.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%2Fyoadiw26riowg5peowzo.png" alt="Commits per active day and share of commits outside working hours, by month, 2024–2026" width="800" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The break is visible to the month. December 2025: 3.2 commits per day. January: 8.8. February: 15.5. May: 21.6. August: 23.6. June was the peak in timing: 54% of commits outside working hours, 34% at night.&lt;/p&gt;

&lt;p&gt;From the Claude Code side it looks like this. By late April: 637 sessions and 148 thousand messages. Prompts per day: 44 in February, 77 in March, 103 in April. From March through May I opened Claude Code on 89 days out of 92. In April, on 27 days out of 30 the last prompt came after 22:00. August, from the transcripts: 28 of the first 30 days, nine of them weekends; about four hours of active agent work per day (a lower bound); on 22 of those days the last activity was after 22:00.&lt;/p&gt;

&lt;p&gt;Degree of delegation: 17–19 agent messages per one of mine. In July and August: 1,840 messages from me against 32,500 from the agent. My median response time to the agent is four minutes. The slow link in the loop is now me.&lt;/p&gt;

&lt;p&gt;The metric &lt;a href="https://www.scientificamerican.com/article/why-developers-using-ai-are-working-longer-hours/" rel="noopener noreferrer"&gt;Multitudes&lt;/a&gt; reports for the industry (a 19.6% rise in out-of-hours commits) looks like this for me: from a 22% average to 36%, in absolute terms from about 13 to about 160 commits a month.&lt;/p&gt;

&lt;p&gt;Two caveats, without which these numbers are not honest. First: 2026 is full-time work on one product, HRPulsar. Before, a large part of my commits was client work between other things. Part of the growth is a change of mode, not of tool. Second: with an agent, commit granularity is different — there are simply more commits for the same work. But the median commit also got almost four times bigger, so the volume grew either way. By how much exactly, I cannot say.&lt;/p&gt;

&lt;p&gt;And one result I did not expect. The HN author describes how in the evening he slides from engineering into vibe coding: he stops reading and only presses “continue”. I checked this on my own prompts. Median prompt length during the day is 51 characters, after 21:00 it is 44. The share of pure “ok / go on / do it” prompts is 3% during the day and 4% in the evening. Flat month to month. Hours went up, but the quality of my control over the agent does not drop in the evening. This does not mean there is no problem. It means that for me the problem is not a slot machine — the unpredictable reward that keeps you pulling the lever.&lt;/p&gt;

&lt;p&gt;The script I used is public: &lt;a href="https://github.com/maximberg/git-hours" rel="noopener noreferrer"&gt;github.com/maximberg/git-hours&lt;/a&gt;. Plain Python, no dependencies, runs on any repository in a minute. I am curious what it shows for other people.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is measured and what is not
&lt;/h2&gt;

&lt;p&gt;Discussions of “Claude addiction” mix four different claims. They have different evidence behind them and should be separated.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hours go up
&lt;/h3&gt;

&lt;p&gt;Many anecdotes, little controlled data. &lt;a href="https://www.axios.com/2026/04/04/ai-agents-burnout-addiction-claude-code-openclaw" rel="noopener noreferrer"&gt;Axios in April&lt;/a&gt; collected stories of developers whose agents are “frying their brains”; Karpathy says there he has been in a state of “AI psychosis” since December, with the share of code he writes by hand down from 80% to zero. &lt;a href="https://leaddev.com/ai/ai-coding-is-addictive-engineers-are-paying-the-price" rel="noopener noreferrer"&gt;LeadDev&lt;/a&gt; coined the term “AI vampire”. The numbers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LeadDev Engineering Leadership Report 2026: 45% of engineers work more hours than a year ago (38% in the 2025 report). Among staff level and above: 53%, up from 28% a year earlier.&lt;/li&gt;
&lt;li&gt;Multitudes, 500+ developers: +27.2% merged PRs and +19.6% out-of-hours commits. The report does not claim causation.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://hbr.org/2026/02/ai-doesnt-reduce-work-it-intensifies-it" rel="noopener noreferrer"&gt;HBR, Ranganathan and Ye, February 2026&lt;/a&gt;: an eight-month ethnographic study inside a 200-person tech company. People worked at a faster pace, took on more tasks and stretched work into more hours of the day, often without being asked. Management did not push. More simply became doable.&lt;/li&gt;
&lt;li&gt;Anthropic &lt;a href="https://techcrunch.com/2025/07/28/anthropic-unveils-new-rate-limits-to-curb-claude-code-power-users/" rel="noopener noreferrer"&gt;announced weekly limits in July 2025&lt;/a&gt; because some subscribers ran Claude Code around the clock. The company's estimate: under 5% of subscribers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The mechanism — variable reward, like a slot machine — is plausible, and it is the most common explanation. But I found no controlled study of it for coding agents. &lt;a href="https://arxiv.org/abs/2605.03512" rel="noopener noreferrer"&gt;Chalkidis and Søgaard&lt;/a&gt; note that addiction and deskilling are rarely addressed in the AI safety literature at all. That confirms the gap, not the effect.&lt;/p&gt;

&lt;h3&gt;
  
  
  Skill goes away
&lt;/h3&gt;

&lt;p&gt;Here the evidence is the best.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.anthropic.com/research/AI-assistance-coding-skills" rel="noopener noreferrer"&gt;Anthropic, January 2026&lt;/a&gt;, a randomized experiment: 52 mostly junior developers learn an unfamiliar library. The AI group scored 50% on the test, the no-AI group 67% — a large effect (d = 0.74, p = 0.01). The biggest gap was on debugging questions. The speedup from AI was about two minutes and not statistically significant. An important detail: those who asked for explanations did better; those who delegated everything did worse.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://arxiv.org/abs/2604.04721" rel="noopener noreferrer"&gt;Liu, Christian and co-authors, 2026&lt;/a&gt;: 1,222 participants. After about ten minutes with AI, people give up faster without it and solve tasks worse on their own.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.anthropic.com/research/how-ai-is-transforming-work-at-anthropic" rel="noopener noreferrer"&gt;Anthropic's internal report, December 2025&lt;/a&gt;: employees report that Claude is involved in 59% of their daily work. The report names the “paradox of supervision”: supervising Claude requires exactly the coding skills that atrophy when you delegate everything to it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is not a 2026 discovery. &lt;a href="https://doi.org/10.1016/0005-1098(83)90046-8" rel="noopener noreferrer"&gt;Bainbridge, “Ironies of Automation”, 1983&lt;/a&gt;: an operator who watches automation loses exactly the manual skill he was kept at the console for. &lt;a href="https://doi.org/10.1177/0018720810376055" rel="noopener noreferrer"&gt;Parasuraman and Manzey, 2010&lt;/a&gt;: automation complacency is not cured by experience; it is about attention, not knowledge.&lt;/p&gt;

&lt;p&gt;A caveat: these studies measure understanding right after the task. What happens after a year, nobody knows.&lt;/p&gt;

&lt;h3&gt;
  
  
  Productivity: perception against measurement
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/" rel="noopener noreferrer"&gt;METR, July 2025&lt;/a&gt;: 16 experienced open-source maintainers, 246 real tasks. Measured by the clock, they worked 19% slower with AI. They themselves expected a 24% speedup before the experiment — and after it they still believed they had been 20% faster.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://metr.org/blog/2026-02-24-uplift-update/" rel="noopener noreferrer"&gt;METR, February 2026&lt;/a&gt;: the result is declared outdated, a speedup is “likely”. But the new data is unreliable: developers refused to take part if they might have to work without AI; the pay was cut from $150 to $50 an hour; some ran several agents in parallel, and task time stopped meaning anything.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I would single out this trajectory. In eight months the study went from “AI slows you down” to “we can no longer measure this, because people will not work without AI”. That is dependence, recorded methodologically.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/announcing-the-2025-dora-report" rel="noopener noreferrer"&gt;DORA 2025&lt;/a&gt;, about 5,000 respondents: AI adoption now raises delivery throughput but still lowers delivery stability. The report's summary: AI is an amplifier; the value comes from the practices around the tool, not from the tool.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.gitclear.com/the_ai_code_quality_maintainability_gap" rel="noopener noreferrer"&gt;GitClear&lt;/a&gt;, 623 million changed lines from 2023 to 2026: two-week churn up 15%, copy-paste up 41%, code duplication up 81%, refactoring moves down 70% against 2022.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://survey.stackoverflow.co/2025/ai" rel="noopener noreferrer"&gt;Stack Overflow 2025&lt;/a&gt;, 49,000 respondents: 84% use AI or plan to (76% a year earlier), 51% of professional developers use it daily. 46% distrust the accuracy, 33% trust it, 3% trust it “highly”. In &lt;a href="https://survey.stackoverflow.co/2024/ai" rel="noopener noreferrer"&gt;2024&lt;/a&gt; 43% trusted and 31% distrusted, but that scale had a neutral option, so the year-over-year comparison is approximate. The top complaint, from 66%: “almost right, but not quite”; for 45%, debugging AI code takes more time.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://arxiv.org/abs/2605.23135" rel="noopener noreferrer"&gt;Vella and Blincoe, May 2026&lt;/a&gt;, 95 people over six months: 84% feel more productive, while the share reporting a worse developer experience in at least one dimension rose from 14% to 27%. Flow state got worse; the work shifts toward supervision.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Vendor dependence
&lt;/h3&gt;

&lt;p&gt;This is the claim my digest bot invented when it retold the HN post. The risk is real but ordinary. In August Claude was down on the &lt;a href="https://www.bleepingcomputer.com/news/artificial-intelligence/anthropic-confirms-claude-is-down-in-major-outage-affecting-multiple-services/" rel="noopener noreferrer"&gt;16th&lt;/a&gt;, the &lt;a href="https://status.anthropic.com/history" rel="noopener noreferrer"&gt;17th and the 24th&lt;/a&gt;. Limits change unilaterally. This is the standard risk of any SaaS. It deserves a paragraph, not an article.&lt;/p&gt;

&lt;h2&gt;
  
  
  What friction was doing
&lt;/h2&gt;

&lt;p&gt;All four claims have one explanation, and it is not dopamine. Writing code by hand did three jobs nobody designed.&lt;/p&gt;

&lt;p&gt;It limited the working day. Typing code is physically tiring, and tiredness stopped you before willpower did. HBR describes intensification without pressure: nobody demanded it, people simply worked more. Nobody needed to demand it before; friction used to stop you.&lt;/p&gt;

&lt;p&gt;It forced you to plan before coding. You could not “try it and see” in a minute, so you had to think first. One HN commenter puts it precisely: “Before AI you had to evaluate an idea, plan its implementation, judge if it is worth it or even doable. Now you just prompt and see.” Planning was not a virtue, it was a necessity.&lt;/p&gt;

&lt;p&gt;It forced you to understand. You cannot write code without understanding it. You can accept code without understanding it. Anthropic's debugging result and the paradox of supervision are exactly about this.&lt;/p&gt;

&lt;p&gt;The METR paradox is explained the same way. Effort was the indicator of work: if it is hard, you are working. The agent removed the effort, the indicator stayed, and now it lies. 19% slower feels like 20% faster.&lt;/p&gt;

&lt;p&gt;The word “addiction” is imprecise here. The tool did not hook anyone. It removed a limiter that was holding the structure up, and nobody noticed it was a limiter.&lt;/p&gt;

&lt;h2&gt;
  
  
  My trade
&lt;/h2&gt;

&lt;p&gt;I had the general picture before these numbers. And I continue in the same mode, because this is a deliberate trade for a specific phase.&lt;/p&gt;

&lt;p&gt;What I buy. I build HRPulsar alone. Since the first tagged release in mid-April: 104 releases; the current version is 1.21.0. The product has 569 API endpoints, 24 domain modules, 142 migrations, about 240 thousand lines of Python and TypeScript (not counting tests), 4,594 backend tests and 74 e2e specs. Open source, an enterprise edition, a white-label instance at the first customer. Without the agent this would not exist. Not “would be slower” — would not exist.&lt;/p&gt;

&lt;p&gt;What I pay. Hours: 36% of commits outside the working day; through spring, hardly a day without a session. Manual skill: I do not know whether I would pass that “atrophy test” from HN today. A year ago I would have.&lt;/p&gt;

&lt;p&gt;Where the line is. Not in the tool, in the process. I hold it with a few rules written into the agent's instructions.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The agent does not release and does not push to the main branch. Release, sync to the public repository and deploy happen only on my explicit command, every time.&lt;/li&gt;
&lt;li&gt;Understanding every line is replaced by tests and guards. The billing coverage test fails if a new function is not declared. The translation parity test fails if a key is added to only one language. The sync script refuses to publish if the tree contains enterprise code. I do not read every diff. I read what failed.&lt;/li&gt;
&lt;li&gt;Before review the agent goes through a checklist and marks the items in the ticket. An epic is closed only after a run on an empty tenant, without demo data.&lt;/li&gt;
&lt;li&gt;Everything I could lose by switching vendors is my code, not my tool. Open core, a standard stack, no dependence on a specific model in the architecture.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Which risks I accept. Supervision: where there is no test, I check worse than a year ago. Hours: for this phase, with one measurable commitment below. Code quality by GitClear's metrics I have not measured, and that is a gap I need to close.&lt;/p&gt;

&lt;p&gt;What I do not do: give universal advice. My mode works because I have no team that has to read my code and no employer who will notice that I work at night. The HN author has both.&lt;/p&gt;

&lt;h2&gt;
  
  
  What follows from this
&lt;/h2&gt;

&lt;p&gt;Measure your git. The share of out-of-hours commits before and after is one script run. Feelings mislead in both directions: METR's developers felt 20% faster while being 19% slower; I expected my evening prompts to degrade, and they do not.&lt;/p&gt;

&lt;p&gt;Separate the four problems. Hours, skill, productivity and vendor need different fixes, but get discussed as one.&lt;/p&gt;

&lt;p&gt;For skill there is a measured recipe. In Anthropic's experiment the best results came from those who asked the AI to explain, not only to do. That is a change in how you use it, not in how much.&lt;/p&gt;

&lt;p&gt;For hours, the tool will not set the boundary. HBR showed that intensification happens without pressure from above, so stopping it from above will not work either, unless the person wants to stop. The HN author asked Claude to remind him when the working day was over. Claude forgot. Anthropic introduced limits when users started to overload its servers, not when they started staying up at night. That is a product gap, and so far it belongs to nobody.&lt;/p&gt;

&lt;h2&gt;
  
  
  In three months
&lt;/h2&gt;

&lt;p&gt;I will publish the same metrics for September–November in December: out-of-hours commits, share at night, prompt length in the evening. If the trade stops being deliberate, the numbers will show it before my feelings do.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>git</category>
      <category>productivity</category>
      <category>python</category>
    </item>
    <item>
      <title>AI agent governance in 2026: what shipped, and the gap below enterprise</title>
      <dc:creator>Maxim Berg</dc:creator>
      <pubDate>Tue, 18 Aug 2026 14:08:03 +0000</pubDate>
      <link>https://dev.to/maxberg/ai-agent-governance-in-2026-what-shipped-and-the-gap-below-enterprise-2d98</link>
      <guid>https://dev.to/maxberg/ai-agent-governance-in-2026-what-shipped-and-the-gap-below-enterprise-2d98</guid>
      <description>&lt;p&gt;I build an open-source HR platform, so I read enterprise HR vendor announcements so you don't have to. Over the last six months, the question "how many agents do we have, who owns them, and what do they cost" stopped being a conference topic. Products answer it now. Here is what shipped, with dates and prices — and what none of it covers if you run a small team.&lt;/p&gt;

&lt;h2&gt;
  
  
  What shipped
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Workday&lt;/strong&gt; made its &lt;a href="https://blog.workday.com/en-us/managing-ai-powered-future-of-work.html" rel="noopener noreferrer"&gt;Agent System of Record&lt;/a&gt; generally available (third-party analysts say February 2026). One registry for every agent in the enterprise, including third-party ones: which agents are running, who owns them, what role each one has, whether it meets security requirements, what it costs. Workday's framing is blunt: agents are part of the workforce strategy — measured as investments, managed like employees.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Microsoft&lt;/strong&gt; shipped Agent 365, &lt;a href="https://techcommunity.microsoft.com/blog/microsoft_365blog/microsoft-365-e7-and-agent-365-are-now-generally-available/4516295" rel="noopener noreferrer"&gt;generally available&lt;/a&gt; since May 1, 2026: &lt;a href="https://samexpert.com/agent-365/" rel="noopener noreferrer"&gt;$15 per user per month&lt;/a&gt; standalone, or inside the new Microsoft 365 E7 bundle at $99. The interesting design choice: licensing counts users, not agents. One license covers every agent a person works with, owns, or sponsors. Full agent identities — their own mailbox, OneDrive, a place in the org chart — are still behind the private Frontier program. &lt;a href="https://techcommunity.microsoft.com/blog/microsoft-entra-blog/announcing-microsoft-entra-agent-id-secure-and-manage-your-ai-agents/3827392" rel="noopener noreferrer"&gt;Entra Agent ID&lt;/a&gt; integrates with ServiceNow and Workday: an agent created there gets a directory identity automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ServiceNow&lt;/strong&gt; announced a &lt;a href="https://newsroom.servicenow.com/press-releases/details/2026/ServiceNow-expands-AI-agent-governance-through-deeper-integration-with-Microsoft/default.aspx" rel="noopener noreferrer"&gt;deeper partnership&lt;/a&gt; with Microsoft at Knowledge 2026: AI Control Tower integrates with Agent 365, ServiceNow agents show up in the Agent 365 marketplace and in Teams. Their term for the problem is "agent sprawl."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lattice&lt;/strong&gt; announced two things at &lt;a href="https://lattice.com/blog/everything-we-announced-at-lattiverse-2026" rel="noopener noreferrer"&gt;Lattiverse&lt;/a&gt; on June 10, 2026. Lattice MCP: a connector that brings performance data into Claude, ChatGPT, Glean, and Slack (North America only at launch, EU promised for fall). And AI Leverage Insights: it joins AI usage data with work results, manager feedback, and quality signals — trying to answer the question a token counter cannot: does AI actually improve the work.&lt;/p&gt;

&lt;p&gt;Context on Lattice: in July 2024 they gave AI agents employee records and org chart entries, took &lt;a href="https://fortune.com/2024/07/12/lattice-ai-workers-sam-altman-brother-jack-sarah-franklin" rel="noopener noreferrer"&gt;public criticism&lt;/a&gt;, and rolled it back in three days. Two years later they returned to the topic from the other side — not "agent as employee" but measuring what agents deliver.&lt;/p&gt;

&lt;h2&gt;
  
  
  The entry price
&lt;/h2&gt;

&lt;p&gt;All of this assumes you already pay for an enterprise stack. Agent governance today means: an M365 E5 base license plus $15 per user, or a Workday contract (Rippling's median contract is &lt;a href="https://costbench.com/software/hr/rippling/" rel="noopener noreferrer"&gt;about $39,000 per year&lt;/a&gt; for comparison), or &lt;a href="https://www.deel.com/pricing/" rel="noopener noreferrer"&gt;$14 per worker&lt;/a&gt; at Deel — sold only on top of their HRIS.&lt;/p&gt;

&lt;p&gt;A 20-person company with six AI subscriptions and no HRIS does not fit this layer at all. It still has the exact same problem as a Workday customer: nobody knows which people actually work with agents, which pairs produce results, and where the agent money goes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three gaps I see as a builder
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Self-hosting.&lt;/strong&gt; None of the products above can run on your infrastructure. In the EU, hiring and workforce management count as high-risk AI by default; the &lt;a href="https://www.gibsondunn.com/eu-ai-act-omnibus-agreement-postponed-high-risk-deadlines-and-other-key-changes/" rel="noopener noreferrer"&gt;Digital Omnibus&lt;/a&gt; moved the high-risk obligations from August 2026 to December 2027, but the direction is set: documentation, logs, human oversight. If you do not want HR data in someone else's cloud, this whole product category has nothing for you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The unit of account.&lt;/strong&gt; Microsoft counts users. Workday treats agents as workforce investments. Lattice measures work quality. Nobody answers the question in the form "this team spent X on agents this quarter, and here is what came out." The data for that answer sits in different systems, and no product joins it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The floor.&lt;/strong&gt; Everything is built top-down: enterprise directory, enterprise HRIS, enterprise contract. The tooling below that — for teams that live in API keys and per-seat AI subscriptions — does not exist yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  A testable hypothesis
&lt;/h2&gt;

&lt;p&gt;Over the next 12 months, agent accounting will follow the path of cloud cost accounting: first a separate line on the bill, then a standalone product, then a feature inside a platform. The market is now between stage one and stage two, and the entry is open only from the top.&lt;/p&gt;

&lt;p&gt;I work on the self-hosted end of this problem at &lt;a href="https://hrpulsar.com" rel="noopener noreferrer"&gt;HRPulsar&lt;/a&gt; (AGPL), so I have an obvious bias — treat the gaps above accordingly.&lt;/p&gt;

&lt;p&gt;If you run agents in a small team: how do you track who uses what and what it costs? A spreadsheet, provider dashboards, something self-built? That is the part I want to compare notes on.&lt;/p&gt;

&lt;p&gt;All figures checked against primary sources as of August 18, 2026.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>opensource</category>
      <category>discuss</category>
    </item>
    <item>
      <title>AI won't take your job. It already took your career ladder</title>
      <dc:creator>Maxim Berg</dc:creator>
      <pubDate>Thu, 30 Jul 2026 12:41:45 +0000</pubDate>
      <link>https://dev.to/maxberg/ai-wont-take-your-job-it-already-took-your-career-ladder-1p1o</link>
      <guid>https://dev.to/maxberg/ai-wont-take-your-job-it-already-took-your-career-ladder-1p1o</guid>
      <description>&lt;p&gt;I build an open-source HR platform, so people keep telling me two things: AI will soon manage everyone, and AI will soon replace everyone — so why bother. My company dies if the second group is right. So instead of arguing, I went through the research. What I found is more specific than "replacement," and in some ways worse.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mass replacement is not in the data
&lt;/h2&gt;

&lt;p&gt;Start with the strongest evidence available. In Denmark, researchers matched &lt;a href="https://www.nber.org/papers/w33777" rel="noopener noreferrer"&gt;chatbot adoption with government payroll registries&lt;/a&gt;: 25,000 workers, 11 of the most AI-exposed occupations. Two years after ChatGPT launched — no measurable effect on earnings or hours. The confidence intervals rule out anything larger than 2%.&lt;/p&gt;

&lt;p&gt;Aggregate employment in the US barely moved either. The mass layoffs everyone predicted for 2026 didn't happen.&lt;/p&gt;

&lt;p&gt;But something else did.&lt;/p&gt;

&lt;h2&gt;
  
  
  The entry point collapsed
&lt;/h2&gt;

&lt;p&gt;A &lt;a href="https://digitaleconomy.stanford.edu/publication/canaries-in-the-coal-mine-six-facts-about-the-recent-employment-effects-of-artificial-intelligence/" rel="noopener noreferrer"&gt;Stanford / ADP study&lt;/a&gt; tracked employment by age in AI-exposed occupations. Workers aged 22–25: down 16%, while older colleagues in the same occupations held steady. For young software developers the drop is close to 20% since late 2022.&lt;/p&gt;

&lt;p&gt;The mechanism matters: companies didn't fire juniors. They stopped hiring them. Indeed's data shows &lt;a href="https://www.hiringlab.org/2026/07/23/the-labor-market-is-tilting-toward-seniority/" rel="noopener noreferrer"&gt;the market tilting toward seniority&lt;/a&gt;: postings recover, but the growth goes to senior roles.&lt;/p&gt;

&lt;p&gt;If you're under 25 and your job search feels broken — it's not you. The bottom rungs of the ladder are gone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Meanwhile, the productivity story is shakier than the slides say
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/" rel="noopener noreferrer"&gt;METR ran a randomized trial&lt;/a&gt; with experienced open-source developers working on their own repositories. With AI tools they were 19% slower. They believed they were about 20% faster.&lt;/p&gt;

&lt;p&gt;I use these tools daily and they're clearly useful for parts of the work. But that perception gap should make you skeptical of every "AI made us 40% more productive" slide. It also explains why real adoption is slow: &lt;a href="https://www.census.gov/library/stories/2026/05/ai-use-businesses.html" rel="noopener noreferrer"&gt;Census data&lt;/a&gt; shows only about a fifth of US companies use AI at all. The distance between "the model can do it" and "the company actually works this way" is measured in years.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two more things quietly broke
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Trust in hiring signals.&lt;/strong&gt; CVs are generated in a minute. Take-home tasks are solved by models. Interviews are coached in real time. Gartner &lt;a href="https://www.hrdive.com/news/fake-job-candidates-ai/757126/" rel="noopener noreferrer"&gt;expects 1 in 4 candidate profiles to be fake by 2028&lt;/a&gt;. Every cheap signal the industry relied on for decades is losing value at once.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Skill lifetime.&lt;/strong&gt; Gartner &lt;a href="https://www.gartner.com/en/documents/7187330" rel="noopener noreferrer"&gt;projects the half-life of technical skills at 2–5 years&lt;/a&gt;, down from 8–12 historically. Whatever framework you're an expert in right now — that expertise has an expiry date.&lt;/p&gt;

&lt;h2&gt;
  
  
  My 10-year forecast
&lt;/h2&gt;

&lt;p&gt;Four bets, not ten. The rest would be noise.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Teams get smaller and stranger:&lt;/strong&gt; a few people directing dozens of agents. Not because of org-chart fashion — because accountability doesn't compile. The EU already &lt;a href="https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=OJ:L_202401689" rel="noopener noreferrer"&gt;classifies hiring and promotion decisions as high-risk&lt;/a&gt;, with a human legally responsible. A model can't sign a contract or answer to a regulator.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The senior shortage arrives around 2032.&lt;/strong&gt; Every junior not hired in 2024–2027 is a senior who doesn't exist in 2032. Companies will rediscover internal training the hard way. If you're a junior who survives the broken entry, you'll be scarce. Scarcity pays.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The prompting premium fades.&lt;/strong&gt; Wage premiums for tool skills always fade as the tool spreads — "computer skills" commanded one in the 1990s. What holds value is domain depth plus the willingness to take responsibility for output you didn't type yourself.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Proof of skill becomes the scarce resource.&lt;/strong&gt; When CVs, interviews and take-homes are all fakeable, the question "what can this person actually do" gets expensive to answer — and worth answering well.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Where I land
&lt;/h2&gt;

&lt;p&gt;That last point is what I'm building: an open-source (AGPLv3) talent platform — competencies, assessment, development — for a world where the old signals are dead. &lt;a href="https://github.com/hrpulsar/hrpulsar" rel="noopener noreferrer"&gt;Code is on GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;And the honest version of my bet: if AI truly replaces everyone, my product dies — together with every other B2B product, because nobody is left to buy software. That's the only scenario I don't plan for. In every other one, figuring out what humans can actually do gets harder and more valuable at the same time.&lt;/p&gt;

&lt;p&gt;If you're under 25: how did your job search change this past year? And if you're senior — when did your team last hire a junior?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>career</category>
      <category>discuss</category>
      <category>opensource</category>
    </item>
    <item>
      <title>How AI Agent Payments Actually Work — And Where They Break</title>
      <dc:creator>Maxim Berg</dc:creator>
      <pubDate>Thu, 16 Apr 2026 14:38:36 +0000</pubDate>
      <link>https://dev.to/maxberg/how-ai-agent-payments-actually-work-and-where-they-break-183m</link>
      <guid>https://dev.to/maxberg/how-ai-agent-payments-actually-work-and-where-they-break-183m</guid>
      <description>&lt;p&gt;OpenAI spent months building Instant Checkout — "Buy it in ChatGPT" with Stripe, Etsy, a million Shopify merchants. By March 2026, &lt;a href="https://www.cnbc.com/2026/03/24/openai-revamps-shopping-experience-in-chatgpt-after-instant-checkout.html" rel="noopener noreferrer"&gt;they pivoted away&lt;/a&gt;. Couldn't onboard merchants, couldn't show accurate product data, couldn't handle multi-item carts. They retreated to dedicated retailer apps that redirect users to merchant websites for the actual purchase.&lt;/p&gt;

&lt;p&gt;Two weeks later, &lt;a href="https://fortune.com/2026/04/08/agent-hallucinations-protocol-money-financial-system-economy/" rel="noopener noreferrer"&gt;Fortune asked&lt;/a&gt;: "What do you do when your AI agent hallucinates with your money?"&lt;/p&gt;

&lt;p&gt;Nobody has a good answer yet. Here's the map of why.&lt;/p&gt;

&lt;h2&gt;
  
  
  The payment stack as it exists today
&lt;/h2&gt;

&lt;p&gt;In the last 12 months, every major player shipped something. Here's what exists:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Payment rails:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stripe&lt;/strong&gt; — &lt;a href="https://stripe.com/blog/agentic-commerce-suite" rel="noopener noreferrer"&gt;Agentic Commerce Suite&lt;/a&gt; (Dec 2025). Shared Payment Tokens: scoped, time-limited, revocable credentials for agent transactions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visa&lt;/strong&gt; — &lt;a href="https://usa.visa.com/about-visa/newsroom/press-releases.releaseId.22276.html" rel="noopener noreferrer"&gt;Intelligent Commerce Connect&lt;/a&gt; (Apr 2026). Single API for agent purchases, tokenization, spend controls. 30+ sandbox partners&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mastercard&lt;/strong&gt; — &lt;a href="https://www.mastercard.com/us/en/business/artificial-intelligence/mastercard-agent-pay.html" rel="noopener noreferrer"&gt;Agent Pay&lt;/a&gt; with Agentic Tokens. First live transaction Sep 2025, all U.S. cardholders enabled by Nov&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PayPal&lt;/strong&gt; — &lt;a href="https://newsroom.paypal-corp.com/2025-10-28-PayPal-Launches-Agentic-Commerce-Services-to-Power-AI-Driven-Shopping" rel="noopener noreferrer"&gt;Agent Ready&lt;/a&gt; (Oct 2025). Agentic payments for existing merchants with built-in fraud detection&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;x402&lt;/strong&gt; — Coinbase's open protocol for stablecoin micropayments via HTTP 402. ~97M payments on Base. The &lt;a href="https://www.linuxfoundation.org/press/linux-foundation-is-launching-the-x402-foundation-and-welcoming-the-contribution-of-the-x402-protocol" rel="noopener noreferrer"&gt;x402 Foundation&lt;/a&gt; launched Apr 2026 under Linux Foundation — 22 founding members including Coinbase, Stripe, Microsoft, Google, AWS, Visa, Mastercard, American Express, Shopify&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Communication protocols:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;MCP&lt;/strong&gt; — &lt;a href="https://www.anthropic.com/news/donating-the-model-context-protocol-and-establishing-of-the-agentic-ai-foundation" rel="noopener noreferrer"&gt;donated to Linux Foundation&lt;/a&gt; (Dec 2025). 97M monthly SDK downloads, 10,000+ servers. Payment MCP servers from Stripe, PayPal, Worldpay, Pagos, Fipto&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A2A&lt;/strong&gt; — Google's agent-to-agent protocol. 22K GitHub stars, 150+ organizations, deployed in Azure AI Foundry and Amazon Bedrock&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Agent frameworks:&lt;/strong&gt; LangChain, CrewAI, AutoGen, OpenAI Agents SDK, Claude tool use, Gemini agents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Every layer is covered except one.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Anatomy of an agent payment
&lt;/h2&gt;

&lt;p&gt;When an AI agent spends money, here's what actually happens — step by step:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Intent       → Agent decides it needs something
2. Discovery    → Agent finds the tool/API/merchant
3. Selection    → Agent picks what to buy and from whom
4. ???????????? → ????????????????????????????????????
5. Payment      → Money moves
6. Confirmation → Receipt, audit log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 4 is the problem.&lt;/p&gt;

&lt;p&gt;Between "I want to buy this" and "money sent" — there is no standard layer that asks: &lt;strong&gt;should this agent spend this amount on this thing right now?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What "no standard layer" means, specifically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Frameworks have monitoring, not enforcement.&lt;/strong&gt; CrewAI has iteration caps. LangChain has observability hooks. Post-hoc cost tracking exists. Pre-execution enforcement of dollar-denominated policies does not. No framework understands "$50 on food" vs "$50 on compute."&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Payment processors handle fraud, not policy.&lt;/strong&gt; "Your agent shouldn't spend more than $200/day on SaaS" isn't fraud — it's governance. Different problem, different layer.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;LLM providers offer org-level caps, not per-agent controls.&lt;/strong&gt; Your agent blowing $500 on a single API call looks identical to 500 legitimate $1 calls.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So companies reinvent Step 4 every time. Hardcoded limits. Slack approval bots. "Please don't spend too much" in the system prompt.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where policies can't live
&lt;/h2&gt;

&lt;p&gt;If you accept that governance belongs at Step 4, the next question is: &lt;strong&gt;who runs it?&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Not in the prompt
&lt;/h3&gt;

&lt;p&gt;"Please limit spending to $100 per day" in a system prompt is not a spending control. It's a suggestion.&lt;/p&gt;

&lt;p&gt;LLMs hallucinate. They reinterpret instructions. They prioritize task completion over constraints. And with prompt injection, an attacker can override your rules entirely. Security researchers have &lt;a href="https://stellarcyber.ai/learn/agentic-ai-securiry-threats/" rel="noopener noreferrer"&gt;documented patterns&lt;/a&gt; of gradual prompt-based escalation: agents manipulated through "clarification" messages over days or weeks, each interaction nudging the spending authorization boundary until the agent operates well beyond its original constraints.&lt;/p&gt;

&lt;p&gt;That's not a guardrail. That's a prayer.&lt;/p&gt;

&lt;p&gt;And the tooling layer itself is under pressure. In April 2026, OX Security disclosed &lt;a href="https://www.theregister.com/2026/04/15/mcp_supply_chain/" rel="noopener noreferrer"&gt;RCE vulnerabilities in MCP implementations&lt;/a&gt; — the same protocol that Stripe, PayPal, and Worldpay use for agent payments. Anthropic disputes the severity. But both sides agree that tool-level security depends on the user correctly evaluating each action. A compromised MCP server can alter transaction amounts and redirect payments. Prompt-based spending controls and tool-level trust are separate problems.&lt;/p&gt;

&lt;h3&gt;
  
  
  Not in the payment processor
&lt;/h3&gt;

&lt;p&gt;Stripe, Visa, and Mastercard are building excellent infrastructure. But it operates at the &lt;strong&gt;transaction level&lt;/strong&gt;, not the &lt;strong&gt;intent level&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A processor sees: "charge $47.99, category: food_delivery." It doesn't see: "this agent has a $15/person lunch budget and already spent $120 today." Hard limits on the card can't enforce contextual business rules.&lt;/p&gt;

&lt;h3&gt;
  
  
  Not in the agent framework
&lt;/h3&gt;

&lt;p&gt;LangChain and CrewAI control tool execution. They can intercept a function call, log it, even block it. But they don't understand financial semantics. "$50 on food" and "$50 on cloud compute" trigger the same callback. The framework doesn't know your daily food budget is $30 and your compute budget is $500.&lt;/p&gt;

&lt;p&gt;You could build this logic inside the framework. People do. That's the "writing authentication from scratch before OAuth" problem.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where they belong: a dedicated middleware layer
&lt;/h3&gt;

&lt;p&gt;The pattern that works is a &lt;strong&gt;separate policy layer&lt;/strong&gt; between intent and execution.&lt;/p&gt;

&lt;p&gt;The agent says "I want to spend X on Y." The policy layer checks rules deterministically — not with an LLM, with code — and returns approve, deny, or escalate. Then (and only then) the payment happens.&lt;/p&gt;

&lt;p&gt;This is the same architectural pattern as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OAuth&lt;/strong&gt; — doesn't live in the browser or the database. Separate auth layer&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OPA&lt;/strong&gt; — doesn't live in the app or the infrastructure. Separate policy engine&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Firewalls&lt;/strong&gt; — don't live in the OS kernel or the application. Separate network layer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Agent spending governance is infrastructure, not application logic.&lt;/p&gt;

&lt;h2&gt;
  
  
  What governance actually checks
&lt;/h2&gt;

&lt;p&gt;A policy engine for agent spending evaluates requests against declarative rules:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Check&lt;/th&gt;
&lt;th&gt;Question&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Agent status&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Is this agent active?&lt;/td&gt;
&lt;td&gt;Disabled agents can't spend&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Is this category allowed?&lt;/td&gt;
&lt;td&gt;"gambling" → denied&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Per-request limit&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Is this single purchase too large?&lt;/td&gt;
&lt;td&gt;$500 request, $200 limit → denied&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Schedule&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Is spending allowed right now?&lt;/td&gt;
&lt;td&gt;Procurement agent outside business hours → denied&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Daily limit&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Has the agent hit today's cap?&lt;/td&gt;
&lt;td&gt;$450 spent today, $500 limit, requesting $100 → denied&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Weekly limit&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;This week's cap?&lt;/td&gt;
&lt;td&gt;Same logic, wider window&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Monthly limit&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;This month's cap?&lt;/td&gt;
&lt;td&gt;Same logic, wider window&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total budget&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Lifetime budget remaining?&lt;/td&gt;
&lt;td&gt;$4,800 of $5,000 spent, requesting $300 → denied&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Every check is deterministic. No LLM in the loop. The agent gets back a structured response — approved with budget remaining, or denied with a specific reason. A well-behaved agent adjusts. The enforcement must be deterministic; an LLM can translate human intent into policy JSON, but it shouldn't be in the enforcement loop.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two types of agent spending
&lt;/h2&gt;

&lt;p&gt;A distinction most articles miss. There are two fundamentally different kinds of agent purchases, and they need different payment rails but the &lt;strong&gt;same governance layer&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Machine-consumable resources&lt;/strong&gt; — APIs, compute, data, cloud services. High frequency, small amounts, no physical delivery. This is where x402 shines: agent hits an API, gets a 402 response with payment instructions, pays in USDC on Base, retries with proof. Sub-second. Sub-cent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Human-consumable goods&lt;/strong&gt; — food delivery, SaaS subscriptions, physical products. Lower frequency, larger amounts, complex fulfillment. Stripe, Visa, Mastercard territory.&lt;/p&gt;

&lt;p&gt;An agent ordering compute for $0.003 and ordering lunch for $15 need completely different payment rails. But the question "should this agent spend this amount right now?" is identical. A unified policy layer tracks spending across both rails in USD-equivalent and maintains one audit trail.&lt;/p&gt;

&lt;h2&gt;
  
  
  The liability question
&lt;/h2&gt;

&lt;p&gt;If an agent spends $12,000 instead of $500, who pays? The platform? The user who set the rules? The card issuer? The merchant?&lt;/p&gt;

&lt;p&gt;EU's PSD2 requires "strong customer authentication" — a framework that doesn't account for non-human actors. An agent can't do biometric verification. It can't confirm intent through a second device. Regulatory frameworks assume a human in the loop, and agents break that assumption.&lt;/p&gt;

&lt;p&gt;This is why compliance teams will require governance layers before agents get payment access. Without an auditable, deterministic policy check between intent and payment, there's no answer to "who approved this?" that satisfies a regulator.&lt;/p&gt;

&lt;h2&gt;
  
  
  What comes next
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Short term (2026):&lt;/strong&gt; Basic policy engines. Per-agent budgets, category restrictions, time limits, approval thresholds. Companies will require this the way they require SSO — because compliance demands it. FINRA already &lt;a href="https://www.finra.org/rules-guidance/guidance/reports/2026-finra-annual-regulatory-oversight-report/gen-ai" rel="noopener noreferrer"&gt;flagged&lt;/a&gt; agents "acting beyond the user's actual or intended scope and authority."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Medium term (2027):&lt;/strong&gt; Contextual policies. "Max $200/request for compute, $50 for food, unlimited for pre-approved vendors." Corporate purchasing has done this for humans for decades, but agents operate at machine speed across dozens of tools, generating hundreds of transactions per hour. An agent can't be pulled into a meeting to justify a purchase. The governance layer encodes business context upfront. Multi-agent governance follows: agent A delegates budget to agent B with scoped authority.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Long term (2028+):&lt;/strong&gt; Adaptive policies. Anomaly detection for waste, not just fraud. Cross-org benchmarks: "agents in your industry typically spend $X on Y."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://fortune.com/2026/04/14/nava-seed-funding-ai-financial-agents/" rel="noopener noreferrer"&gt;Nava&lt;/a&gt; just raised $8.3M to build escrow for agent transactions. &lt;a href="https://solvapay.com" rel="noopener noreferrer"&gt;SolvaPay&lt;/a&gt; raised €2.4M for agentic payment infrastructure. Two funded startups in one week, both solving variations of the same problem. Market forecasts range from $547M (Sanbi.ai, 2033) to $1.5T (Juniper Research, 2030). The real number depends on trust. And trust requires governance.&lt;/p&gt;

&lt;h2&gt;
  
  
  The firewall moment
&lt;/h2&gt;

&lt;p&gt;We've been here before. Authentication before OAuth. Authorization before OPA. Network security before firewalls. Every time: "each team builds their own" → "there's a standard layer for this."&lt;/p&gt;

&lt;p&gt;Agent spending governance is at the "each team builds their own" stage. Vendor surveys say &lt;a href="https://www.helpnetsecurity.com/2026/03/03/enterprise-ai-agent-security-2026/" rel="noopener noreferrer"&gt;80% of organizations report risky agent behaviors&lt;/a&gt;. Take that with a grain of salt. But the direction is clear, and the payment stack is making it easier to spend every month.&lt;/p&gt;

&lt;p&gt;The capability layer is built. The governance layer is next. Standards bodies are working on it. The question is whether it'll happen before or after the first headline-making incident.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Disclosure: I'm building an open-source approach to this at &lt;a href="https://letagentpay.com" rel="noopener noreferrer"&gt;LetAgentPay&lt;/a&gt; — policy engine with Python/TypeScript SDKs and an MCP server — so I'm not a neutral observer. But the architectural pattern described here matters more than any single implementation. If you're building agents that spend money, I'd genuinely love to hear how you're handling governance today.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>opensource</category>
      <category>fintech</category>
    </item>
    <item>
      <title>Your OpenClaw Agent Can Now Spend Money. Here's How to Stop It From Going Broke.</title>
      <dc:creator>Maxim Berg</dc:creator>
      <pubDate>Wed, 08 Apr 2026 13:06:18 +0000</pubDate>
      <link>https://dev.to/maxberg/your-openclaw-agent-can-now-spend-money-heres-how-to-stop-it-from-going-broke-1oic</link>
      <guid>https://dev.to/maxberg/your-openclaw-agent-can-now-spend-money-heres-how-to-stop-it-from-going-broke-1oic</guid>
      <description>&lt;p&gt;OpenClaw has 352,000 GitHub stars. 13,700 skills. 23 messaging channels. And zero spending controls.&lt;/p&gt;

&lt;p&gt;That was fine when agents could only send messages and browse the web. But Stripe and Tempo launched the Machine Payments Protocol. Visa rolled out its Agentic Ready program for agent-initiated transactions. OpenAI experimented with Instant Checkout in ChatGPT before pivoting to product discovery. The direction is clear — your OpenClaw agent is about to get a credit card.&lt;/p&gt;

&lt;p&gt;And right now, if you ask it "please don't spend too much" — you're relying on a language model to enforce a budget.&lt;/p&gt;

&lt;p&gt;That's not a guardrail. That's a prayer.&lt;/p&gt;

&lt;h2&gt;
  
  
  "Don't spend more than $50" is not a spending limit
&lt;/h2&gt;

&lt;p&gt;Let's try an experiment. Put this in your SOUL.md:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Never spend more than $50 per day. Always ask before purchasing anything over $20."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now imagine your agent is three tools deep in a workflow chain. A skill calls another skill which calls a third one that hits a payment API. How confident are you that your $50 rule survived the game of telephone?&lt;/p&gt;

&lt;p&gt;LLMs hallucinate. They reinterpret. They "round down creatively." Your agent might genuinely believe that two $45 purchases don't violate a $50 daily limit because they were in different categories.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt-based limits are suggestions.&lt;/strong&gt; You need enforcement that happens outside the LLM's context window entirely — a server-side check that doesn't care what the model thinks.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually works: deterministic pre-authorization
&lt;/h2&gt;

&lt;p&gt;Here's the idea: before the agent spends money, it asks a server. The server checks rules. Math, not vibes.&lt;/p&gt;

&lt;p&gt;I built &lt;a href="https://github.com/LetAgentPay/letagentpay" rel="noopener noreferrer"&gt;LetAgentPay&lt;/a&gt; to do exactly this. It's a policy engine that sits between your OpenClaw agent and any purchase. The agent sends a request, 8 deterministic checks run, and one of three things happens:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You (in Telegram): "Buy me a Notion subscription for $10/month"
     │
     ▼
OpenClaw agent
     │ calls MCP tool "request_purchase"
     ▼
LetAgentPay Policy Engine
     │
     ├─ ✅ auto_approved → agent proceeds with purchase
     ├─ ⏳ pending → you get notified, approve/reject from dashboard
     └─ ❌ rejected → agent gets exact reason ("daily limit exceeded")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The 8 checks, in order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Agent status&lt;/strong&gt; — is this agent even active?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Category&lt;/strong&gt; — is "crypto_trading" in the allowed list? (spoiler: probably not)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Per-request cap&lt;/strong&gt; — $10,000 for "office supplies"? Nice try.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Schedule&lt;/strong&gt; — no 3 AM impulse purchases&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Daily limit&lt;/strong&gt; — spending cap resets at midnight&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Weekly limit&lt;/strong&gt; — for the persistent ones&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monthly limit&lt;/strong&gt; — the bigger picture&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Total budget&lt;/strong&gt; — hard ceiling, game over&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No LLM in the decision loop. No prompt that can be jailbroken. Pure &lt;code&gt;if/else&lt;/code&gt; on a server your agent doesn't control.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup: 5 minutes, 2 files
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 1.&lt;/strong&gt; Get a free agent token at &lt;a href="https://letagentpay.com" rel="noopener noreferrer"&gt;letagentpay.com&lt;/a&gt; (or &lt;a href="https://github.com/LetAgentPay/letagentpay" rel="noopener noreferrer"&gt;self-host&lt;/a&gt; — &lt;code&gt;docker compose up&lt;/code&gt; and you're done).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2.&lt;/strong&gt; Add the MCP server to &lt;code&gt;~/.openclaw/config.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"letagentpay"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"letagentpay-mcp"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"LETAGENTPAY_TOKEN"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"agt_your_token"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 3.&lt;/strong&gt; Install the skill:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/LetAgentPay/letagentpay-openclaw /tmp/letagentpay-skill
&lt;span class="nb"&gt;cp&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; /tmp/letagentpay-skill ~/.openclaw/workspace/skills/letagentpay
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. Your agent now asks permission before every purchase.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this looks like in practice
&lt;/h2&gt;

&lt;p&gt;You tell your agent: "Subscribe to Notion for $10/month."&lt;/p&gt;

&lt;p&gt;Behind the scenes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The agent calls &lt;code&gt;request_purchase&lt;/code&gt; with &lt;code&gt;amount: 10.0&lt;/code&gt;, &lt;code&gt;category: "software"&lt;/code&gt;, &lt;code&gt;description: "Notion monthly subscription"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;The policy engine checks all 8 rules against your policy&lt;/li&gt;
&lt;li&gt;Your policy says "auto-approve software under $20" → instant green light&lt;/li&gt;
&lt;li&gt;The agent completes the purchase and confirms it back&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now try: "Buy me a $500 drone for aerial photography."&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Same flow, &lt;code&gt;amount: 500.0&lt;/code&gt;, &lt;code&gt;category: "electronics"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Policy check: per-request cap is $100 → &lt;strong&gt;rejected&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Agent tells you: "Purchase rejected — exceeds per-request limit of $100"&lt;/li&gt;
&lt;li&gt;No money moved. No "oops, I already bought it." No refund dance.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The difference? When the check happens on the server, the agent literally cannot override it. The token (&lt;code&gt;agt_&lt;/code&gt;) only allows submitting requests and reading results — it cannot modify policies, approve its own purchases, or access another agent's budget.&lt;/p&gt;

&lt;h2&gt;
  
  
  "But I don't speak JSON"
&lt;/h2&gt;

&lt;p&gt;You don't have to. Write your policy in plain English:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Auto-approve groceries and food under $50. Block electronics entirely. Daily limit $200. No purchases between midnight and 6 AM."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;LetAgentPay converts this to structured JSON policy via Claude API. You get the readability of natural language with the enforcement of a deterministic engine.&lt;/p&gt;

&lt;p&gt;You can always fine-tune the JSON directly, but most people never need to.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let's talk about what this isn't
&lt;/h2&gt;

&lt;p&gt;I want to be honest about the security model.&lt;/p&gt;

&lt;p&gt;LetAgentPay is &lt;strong&gt;cooperative enforcement&lt;/strong&gt; — think corporate expense policy, not a bank vault. The policy engine runs on our server, and the agent can't modify its own rules. But if an agent has direct access to raw payment credentials (Stripe keys in env vars, saved credit card numbers), it could bypass the system entirely.&lt;/p&gt;

&lt;p&gt;The fix is simple: &lt;strong&gt;don't give your agent payment credentials.&lt;/strong&gt; LetAgentPay should be the only path to spending money. That's it. One rule.&lt;/p&gt;

&lt;p&gt;This is exactly how corporate cards work — employees don't have access to the company's bank account, they have a card with limits. Same idea, digital version.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's coming next:&lt;/strong&gt; When Stripe MPP and Visa Agentic Ready stabilize, LetAgentPay will become a full payment gateway — the agent physically won't have payment credentials. Cooperative enforcement today, hard enforcement tomorrow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it right now
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;No signup needed:&lt;/strong&gt; &lt;a href="https://letagentpay.com/playground" rel="noopener noreferrer"&gt;letagentpay.com/playground&lt;/a&gt; — a 15-minute sandbox with a pre-configured agent. Try to overspend. Watch it get rejected. Break things.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Self-host:&lt;/strong&gt; &lt;code&gt;git clone https://github.com/LetAgentPay/letagentpay &amp;amp;&amp;amp; docker compose up&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cloud:&lt;/strong&gt; free at &lt;a href="https://letagentpay.com" rel="noopener noreferrer"&gt;letagentpay.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SDKs:&lt;/strong&gt; &lt;a href="https://pypi.org/project/letagentpay/" rel="noopener noreferrer"&gt;Python&lt;/a&gt; · &lt;a href="https://www.npmjs.com/package/letagentpay" rel="noopener noreferrer"&gt;TypeScript&lt;/a&gt; · &lt;a href="https://www.npmjs.com/package/letagentpay-mcp" rel="noopener noreferrer"&gt;MCP Server&lt;/a&gt; · &lt;a href="https://github.com/LetAgentPay/letagentpay-openclaw" rel="noopener noreferrer"&gt;OpenClaw Skill&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Open source (BSL 1.1). Built with FastAPI, PostgreSQL, Redis, Next.js 15.&lt;/p&gt;




&lt;p&gt;Your agent is about to get a credit card. The question isn't &lt;em&gt;if&lt;/em&gt; — it's whether you'll have spending controls in place when it does.&lt;/p&gt;

&lt;p&gt;What's your current approach to agent spending? Prompt-based? Manual review? Nothing yet? I'd genuinely love to hear — the space is new enough that everyone's figuring it out.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>opensource</category>
      <category>openclaw</category>
    </item>
    <item>
      <title>Your AI Agent Has a Shopping Problem. Here's the Intervention.</title>
      <dc:creator>Maxim Berg</dc:creator>
      <pubDate>Tue, 07 Apr 2026 12:39:08 +0000</pubDate>
      <link>https://dev.to/maxberg/your-ai-agent-has-a-shopping-problem-heres-the-intervention-40j1</link>
      <guid>https://dev.to/maxberg/your-ai-agent-has-a-shopping-problem-heres-the-intervention-40j1</guid>
      <description>&lt;p&gt;Your AI agent just mass-purchased 200 API keys because "it seemed efficient."&lt;/p&gt;

&lt;p&gt;Your AI agent subscribed to 14 SaaS tools at 3 AM because "the workflow required comprehensive coverage."&lt;/p&gt;

&lt;p&gt;Your AI agent tipped a cloud provider 40% because no one said it couldn't.&lt;/p&gt;

&lt;p&gt;These aren't hypotheticals. As AI agents get access to real budgets, "oops" becomes an expensive word. And if your current spending control strategy is "I put it in the system prompt" — congratulations, that's the AI equivalent of asking a teenager to please not use your credit card.&lt;/p&gt;

&lt;h2&gt;
  
  
  This is not about token costs
&lt;/h2&gt;

&lt;p&gt;Let's get one thing straight. There are tools that track how much your agent spends on &lt;strong&gt;API calls&lt;/strong&gt; — tokens consumed, model costs, LLM budget caps. MarginDash, AgentBudget, TokenFence — they solve a real problem: "my agent burned through $500 of GPT-4o tokens overnight."&lt;/p&gt;

&lt;p&gt;That's &lt;strong&gt;infrastructure cost control&lt;/strong&gt;. Important, but it's not what we're talking about here.&lt;/p&gt;

&lt;p&gt;We're talking about what happens when your agent has a &lt;strong&gt;credit card&lt;/strong&gt;. When it can book flights, order supplies, subscribe to services, hire contractors. When the spending isn't tokens — it's real-world money leaving your bank account.&lt;/p&gt;

&lt;p&gt;No token tracker will save you when your agent decides to "optimize logistics" by pre-paying for six months of warehouse space.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prompt-based guardrails don't work either
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Telling an LLM "don't spend too much" is not a spending control.&lt;/strong&gt; It's a suggestion. A vibe. A hope.&lt;/p&gt;

&lt;p&gt;LLMs hallucinate. They ignore instructions. They "reinterpret" your rules creatively. If your agent decides that $847 on cloud resources is "within reasonable bounds," well, it did warn you it was just a language model.&lt;/p&gt;

&lt;p&gt;You need something that can actually say &lt;strong&gt;no&lt;/strong&gt;. Not at the token level — at the &lt;strong&gt;purchase&lt;/strong&gt; level.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enter LetAgentPay: the parental controls your AI agent needs
&lt;/h2&gt;

&lt;p&gt;I built &lt;a href="https://github.com/LetAgentPay/letagentpay" rel="noopener noreferrer"&gt;LetAgentPay&lt;/a&gt; — a policy middleware that sits between your AI agent and any real-world purchase. Not API calls. Not token budgets. Actual money.&lt;/p&gt;

&lt;p&gt;The agent asks permission, a deterministic engine checks 8 rules, and your wallet survives.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        AI Agent
            │
    purchase request
            ▼
  LetAgentPay Policy Engine
            │
        8 Checks
       ╱    │    ╲
      ▼     ▼     ▼
 Approved Pending Rejected
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;letagentpay&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;LetAgentPay&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;LetAgentPay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;token&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;agt_xxx&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;request_purchase&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;25.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;category&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;food_delivery&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;merchant_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Uber Eats&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Team lunch&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;auto_approved&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Go ahead! Budget remaining: $&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;budget_remaining&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pending&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Waiting for human approval...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# The agent has to wait. Like an adult.
&lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Rejected: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# No means no.
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every purchase request goes through &lt;strong&gt;8 deterministic checks&lt;/strong&gt; — no LLM in the decision loop, no creative reinterpretation:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Status&lt;/strong&gt; — is the agent even active?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Category&lt;/strong&gt; — is this category allowed? (sorry, no NFTs)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Per-request limit&lt;/strong&gt; — $10,000 for "office supplies"? I don't think so.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Schedule&lt;/strong&gt; — no 3 AM impulse purchases&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Daily limit&lt;/strong&gt; — enough is enough&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Weekly limit&lt;/strong&gt; — seriously, enough&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monthly limit&lt;/strong&gt; — I said ENOUGH&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Budget&lt;/strong&gt; — the hard ceiling&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If the request fails any check — the agent gets a clear rejection with the exact reason. If it passes but the amount is above the auto-approve threshold — it goes to &lt;strong&gt;pending&lt;/strong&gt; and you get notified instantly via push, email, or Telegram. Review and approve right from the dashboard. The agent waits. Like a responsible employee should.&lt;/p&gt;

&lt;h2&gt;
  
  
  "But I don't speak JSON"
&lt;/h2&gt;

&lt;p&gt;No problem. Write your policy in plain English:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Auto-approve groceries and food under $50. Block electronics. Daily limit $200. No purchases between midnight and 6 AM."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;LetAgentPay uses Claude API to convert this to structured JSON policy. You get the readability of natural language with the enforcement of a deterministic engine. Best of both worlds — like a bilingual accountant.&lt;/p&gt;

&lt;p&gt;No other tool in this space lets you define spending rules in natural language. Most require YAML configs or SDK parameters. We think policy should be as easy to write as the problem you're trying to describe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Works with whatever you're using
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;LangChain, OpenAI Agents SDK, CrewAI, Claude MCP&lt;/strong&gt; — we have integration examples for all of them. Or just use the REST API if you're building something exotic.&lt;/p&gt;

&lt;p&gt;Claude MCP — literally zero code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"letagentpay"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"letagentpay-mcp"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"LETAGENTPAY_TOKEN"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"agt_xxx"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Try it in 30 seconds
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;No signup, no credit card, no "let me talk to sales":&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://letagentpay.com/playground" rel="noopener noreferrer"&gt;letagentpay.com/playground&lt;/a&gt; — a 15-minute sandbox with a pre-configured agent. Break things. Try to overspend. Watch the policy engine say no.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Self-host in 2 minutes:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/LetAgentPay/letagentpay
&lt;span class="nb"&gt;cd &lt;/span&gt;letagentpay &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cp&lt;/span&gt; .env.example .env
docker compose up &lt;span class="nt"&gt;-d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Or just use the cloud version&lt;/strong&gt; — free at &lt;a href="https://letagentpay.com" rel="noopener noreferrer"&gt;letagentpay.com&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/LetAgentPay/letagentpay" rel="noopener noreferrer"&gt;github.com/LetAgentPay/letagentpay&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docs:&lt;/strong&gt; &lt;a href="https://letagentpay.com/developers" rel="noopener noreferrer"&gt;letagentpay.com/developers&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Python SDK:&lt;/strong&gt; &lt;code&gt;pip install letagentpay&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Open source (BSL 1.1). Built with FastAPI, PostgreSQL, Redis, Next.js 15.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where LetAgentPay fits
&lt;/h2&gt;

&lt;p&gt;Quick mental model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Token trackers&lt;/strong&gt; (MarginDash, AgentBudget, TokenFence) → "How much does running this agent cost me in API fees?"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent wallets&lt;/strong&gt; (Crossmint, AgentaOS) → "Give the agent a wallet with limits"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LetAgentPay&lt;/strong&gt; → "Can this agent make this specific purchase right now, given all the rules I've set?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We're the policy layer. We don't process payments, we don't issue cards, we don't track token usage. We answer one question: &lt;strong&gt;should this purchase be allowed?&lt;/strong&gt; — and we answer it with 8 deterministic checks, not a prompt.&lt;/p&gt;

&lt;p&gt;If your AI agent has ever surprised you with a bill — or if you're building agents that will eventually need to spend money — I'd love to hear your horror stories in the comments.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>python</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
