<?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: Lucian Lature</title>
    <description>The latest articles on DEV Community by Lucian Lature (@lucianlature).</description>
    <link>https://dev.to/lucianlature</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%2F36739%2F39e74591-16b4-47d6-93b6-7b9e802b2142.jpg</url>
      <title>DEV Community: Lucian Lature</title>
      <link>https://dev.to/lucianlature</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lucianlature"/>
    <language>en</language>
    <item>
      <title>Alerts aren’t controls: soft warn / hard stop for Cursor and Claude Code loops</title>
      <dc:creator>Lucian Lature</dc:creator>
      <pubDate>Tue, 28 Jul 2026 14:21:21 +0000</pubDate>
      <link>https://dev.to/lucianlature/alerts-arent-controls-soft-warn-hard-stop-for-cursor-and-claude-code-loops-2afc</link>
      <guid>https://dev.to/lucianlature/alerts-arent-controls-soft-warn-hard-stop-for-cursor-and-claude-code-loops-2afc</guid>
      <description>&lt;p&gt;If you run Cursor or Claude Code hard, you already know the shape of the bill:&lt;/p&gt;

&lt;p&gt;The session feels cheap while you're in the loop.&lt;br&gt;
The meter (or the invoice) shows up later.&lt;br&gt;
By then the damage is done — or you're rate-limited mid-task with no useful receipt for finance.&lt;/p&gt;

&lt;p&gt;Cloud FinOps solved a version of this years ago: budgets that only notify aren't a control plane. Agentic coding has the same gap. Autoscale had traffic as a natural ceiling. An agent spends on &lt;em&gt;intent&lt;/em&gt;. There's no gentle slope — just a wall.&lt;/p&gt;

&lt;p&gt;I built &lt;a href="https://loopbudget.com" rel="noopener noreferrer"&gt;LoopBudget&lt;/a&gt; for that surface: soft warn, hard stop, and a session receipt for Cursor and Claude Code.&lt;/p&gt;

&lt;p&gt;This post is the honest version of what "hard stop" means in early access, how the sidecars/hooks fit, and what we're deliberately not claiming yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why vendor meters fail mid-loop
&lt;/h2&gt;

&lt;p&gt;Vendor UIs optimize for account-level or period-level usage. That's fine for finance at month-end. It's the wrong resolution for a coding agent.&lt;/p&gt;

&lt;p&gt;While the loop is running you care about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;This session&lt;/strong&gt; — not the whole seat&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;This task&lt;/strong&gt; — not "AI line item"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Now&lt;/strong&gt; — not the invoice three weeks later&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What teams actually do today:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Upgrade to Max and hope&lt;/li&gt;
&lt;li&gt;Spreadsheet leftovers after the fact (&lt;code&gt;ccusage&lt;/code&gt;-style)&lt;/li&gt;
&lt;li&gt;Slack when someone notices the bill&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of those are a live policy. An alert that fires after the spend already happened is still just an alert.&lt;/p&gt;

&lt;h2&gt;
  
  
  Soft warn vs hard stop (what we ship today)
&lt;/h2&gt;

&lt;p&gt;LoopBudget attaches to the session trail and evaluates spend against a policy:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Mode&lt;/th&gt;
&lt;th&gt;What happens&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Soft warn&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cross the soft cap → warn on the receipt + alert members. Session keeps going.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Hard stop&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cross the hard cap → &lt;code&gt;stop&lt;/code&gt; decision, alerts, session marked stopped in LoopBudget.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Path A honesty:&lt;/strong&gt; in early access, hard stop is a &lt;strong&gt;policy decision + receipt + alert&lt;/strong&gt;. It is &lt;em&gt;not&lt;/em&gt; a guaranteed vendor SIGKILL. Cursor and Claude Code don't expose a perfect "kill this agent now" primitive to third parties the way people wish they did.&lt;/p&gt;

&lt;p&gt;So when we say soft warn / hard stop, we mean:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You see the trip live on the session receipt&lt;/li&gt;
&lt;li&gt;Your team gets notified&lt;/li&gt;
&lt;li&gt;You have something finance (or your future self) can point at&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Blocking the &lt;em&gt;next&lt;/em&gt; tool call after a turn completes — a real ceiling — is the next step. Soft warn exists so you can wind down before you need that.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cursor sidecar vs Claude Code Stop hook (high level)
&lt;/h2&gt;

&lt;p&gt;Two connectors, same policy engine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cursor&lt;/strong&gt; — a sidecar watches session transcripts, estimates tokens from the trail, and ingests into LoopBudget. Decisions show in the dashboard. Cursor itself is not force-stopped by us today.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Code&lt;/strong&gt; — a Stop-hook path sends deltas after a turn. Same ingest → same soft/hard evaluation → same receipt. Claude Code is not killed mid-loop unless you later add a blocking hook that checks LoopBudget first.&lt;/p&gt;

&lt;p&gt;Public CLI (static binaries, no Node on the GA path):&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/LoopBudget/cli" rel="noopener noreferrer"&gt;github.com/LoopBudget/cli&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Estimates can lag vendor invoices. We don't pretend to replace the cloud bill. We aim to make &lt;em&gt;mid-loop&lt;/em&gt; visible and policy-shaped.&lt;/p&gt;

&lt;h2&gt;
  
  
  Half-written files: why we don’t kill mid-edit today
&lt;/h2&gt;

&lt;p&gt;Someone on Product Hunt asked the right question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Does the hard stop kill the run mid-edit, or wait for the current tool call so you don’t get a half-written file?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Today we &lt;strong&gt;don't&lt;/strong&gt; yank the vendor mid-tool-call. That means LoopBudget isn't the thing leaving a half-written file via a hard kill — because we aren't cutting the edit mid-flight.&lt;/p&gt;

&lt;p&gt;The safer control plane looks like:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Soft warn while there's still runway&lt;/li&gt;
&lt;li&gt;Let the current tool call finish&lt;/li&gt;
&lt;li&gt;Refuse or gate the &lt;em&gt;next&lt;/em&gt; tool call once the hard cap trips&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's the design target. Shipping "we killed your agent" before we can do (2)–(3) cleanly would create worse outages than surprise spend.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try early access
&lt;/h2&gt;

&lt;p&gt;LoopBudget is invite-only early access:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Site: &lt;a href="https://loopbudget.com" rel="noopener noreferrer"&gt;https://loopbudget.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Product Hunt: &lt;a href="https://www.producthunt.com/products/loopbudget" rel="noopener noreferrer"&gt;https://www.producthunt.com/products/loopbudget&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;CLI: &lt;a href="https://github.com/LoopBudget/cli" rel="noopener noreferrer"&gt;https://github.com/LoopBudget/cli&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're an eng lead (or power IC) watching AI tooling become a real cost line, I'd love feedback on where soft vs hard should trip for your team — and whether "wait for current tool call, block the next" matches how you already think about agent risk.&lt;/p&gt;

&lt;p&gt;Alerts aren't controls. Soft warn / hard stop is the missing primitive for coding-agent loops.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>devtools</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
