<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Positiveblue’s Substack]]></title><description><![CDATA[My personal Substack]]></description><link>https://positiveblue.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!4fH7!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09bba2bf-6ff7-4943-ac9e-300500198b85_144x144.png</url><title>Positiveblue’s Substack</title><link>https://positiveblue.substack.com</link></image><generator>Substack</generator><lastBuildDate>Sun, 18 Oct 2026 03:48:33 GMT</lastBuildDate><atom:link href="https://positiveblue.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Positiveblue]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[positiveblue@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[positiveblue@substack.com]]></itunes:email><itunes:name><![CDATA[Positiveblue]]></itunes:name></itunes:owner><itunes:author><![CDATA[Positiveblue]]></itunes:author><googleplay:owner><![CDATA[positiveblue@substack.com]]></googleplay:owner><googleplay:email><![CDATA[positiveblue@substack.com]]></googleplay:email><googleplay:author><![CDATA[Positiveblue]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[When wrong becomes right]]></title><description><![CDATA[In some cases the crowd beats first principles]]></description><link>https://positiveblue.substack.com/p/when-wrong-becomes-right</link><guid isPermaLink="false">https://positiveblue.substack.com/p/when-wrong-becomes-right</guid><dc:creator><![CDATA[Positiveblue]]></dc:creator><pubDate>Mon, 29 Sep 2025 15:57:33 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/15f35824-0e19-41c5-8792-faaf33a47838_800x474.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Sometimes everyone is wrong, and that makes them right.</p><p>It happens in situations where correctness isn&#8217;t about first principles but about what everyone else does. </p><p><em>If enough people converge on the same wrong answer, their agreement makes it right.</em> These are coordination problems, and they trip up smart people constantly. </p><p></p><h4>A little game </h4><blockquote><p><em>Everyone picks a number between 0 and 100. The winner is the one closest to two-thirds of the average.</em> </p></blockquote><p>If people guess randomly, the average will be about 50, so the winning number is 33. If you think harder, you realize other people will too, so you pick 22. And if you keep going (imagining an infinite chain of reasoning) the logic collapses to 0.</p><p>But people don&#8217;t reason infinitely. When economists run this experiment, the winning guesses cluster in the 20s or 30s. Sometimes the person who barely thought about it, who just said &#8220;30,&#8221; wins. </p><p><strong>The correct answer depends not on logic in isolation but on how far everyone else reasons. In those cases, a naive player is usually right.</strong></p><p>I call this <strong>expectations lock-in</strong>: the &#8220;right&#8221; choice is where most people stop thinking.</p><p>You see this in real life more often than people expect. Think about parties: people don&#8217;t carefully weigh which event has the best music or food. <strong>They go where they believe most others will go</strong>. If enough people expect the same party to be popular, they all show up, making that belief self-fulfilling.</p><p></p><h4>AI protocol war</h4><p>The same dynamic is starting to play out in AI. New protocols are emerging for how models talk to each other and to applications. MCP, (Model Context Protocol) is one example. It isn&#8217;t necessarily the most elegant design, but it&#8217;s building momentum. </p><p>At the same time, people are already starting to OAuth into AI agents, even though agents have very different constraints from traditional software. The tools don&#8217;t quite fit, but people use them anyway because they expect others will use that too.</p><p><strong>It&#8217;s the subtler, pre-adoption phase </strong>(<em>before</em> classic network effects) <strong>where each choice is a bet on where others will converge.</strong></p><p>History suggests the eventual winner won&#8217;t be the &#8220;best&#8221; solution. It will be the one where enough people stop thinking further, converge, and decide &#8220;this works&#8221;. It&#8217;s not  just a network effect but the same pattern the guessing game reveals: what matters is where the group converges, not what&#8217;s technically best or perfectly reasoned from first principles.</p><p>Entrepreneurs and investors especially need to be careful. Picking the &#8220;best&#8221; technology too early can leave you building in a vacuum. The trick is not just to think deeply, but to think socially. To ask not only &#8220;What&#8217;s correct?&#8221; but &#8220;What will most people decide is correct?&#8221; Sometimes the winning move is to anticipate where others will stop thinking, and meet them there.</p><p>That&#8217;s why OAuth may end up everywhere. And why some AI protocol will soon define the future, whether or not it&#8217;s the most elegant.</p><p></p><h4>Be cautious </h4><p><strong>The lesson isn&#8217;t that reasoning is useless. It&#8217;s that reasoning in coordination problems has to include what other people will reason. If you stop at first principles without asking how far others will go, you risk ending up alone.</strong></p><p>Startups live in the space between what&#8217;s true and what people think is true. Our job is to know both.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://positiveblue.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">             Thanks for reading my post!                 Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Stop giving your AI Agent admin credentials]]></title><description><![CDATA[AI agents don&#8217;t need credentials, tasks do]]></description><link>https://positiveblue.substack.com/p/stop-giving-your-ai-agent-admin-credentials</link><guid isPermaLink="false">https://positiveblue.substack.com/p/stop-giving-your-ai-agent-admin-credentials</guid><dc:creator><![CDATA[Positiveblue]]></dc:creator><pubDate>Thu, 04 Sep 2025 16:22:55 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/2f17896a-b143-4601-a3cb-12261c83c7d3_2360x1380.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Traditional <strong>auth was built for predictable software</strong>: we designed flows, (hopefully) tested them, shipped them. AI agents work diferent. They&#8217;re open-ended, tool-using orchestrators behind a single text endpoint. </p><p>We don&#8217;t know which path they&#8217;ll take for a given input. We just know that they seem incredibly powerful, versatile and (un)reliable.</p><p>The quick fix is to give your agent broad, long-lived admin creds &#8220;just in case.&#8221; It&#8217;s the same thing new hires try: &#8220;<em>make me an admin so I can do my job</em>.&#8221; But in real organizations we don&#8217;t do that: we gate access, escalate rights carefully, and <strong>add process so one person can&#8217;t wipe production on day one.</strong></p><p>With AI agents we drop that discipline. <strong>We hand a probabilistic machine the keys and hope it will only use what it needs.</strong> They&#8217;re fast, literal, and unpredictable, a combination makes them incredibly useful and incredibly dangerous.</p><p>The right unit of authorization for AI isn&#8217;t the <strong>agent</strong>. It&#8217;s the <strong>task</strong>.</p><h3>Not all tasks are equal</h3><p>Take GitHub MCP from your editor as an example. It can:</p><ul><li><p><strong>Commit</strong> (low risk, easy to revert).</p></li><li><p><strong>Push to main</strong> (medium risk, affects everyone immediately).</p></li><li><p><strong>Change branch protections / add collaborator</strong> (high risk, escalates permissions).</p></li></ul><p>These are all &#8220;GitHub actions,&#8221; but they carry radically different risks. We can think about tasks in concrete terms: a <strong>verb</strong>, a <strong>resource</strong>, some <strong>bounds</strong>, and a <strong>time-to-live</strong>. </p><p>Each deserves its own scoped, short-lived authority. Github MCP will ask you to OAuth and give the agent access to ALL scopes ALL the time. </p><p>If I ask you to commit, you shouldn&#8217;t also be able to push. If I ask you to push, you shouldn&#8217;t be able to delete. And if I do ask you to delete, that power should extend only to <em>that repo</em>, and only for a few minutes.</p><p>Your agent shouldn&#8217;t walk around with standing credentials at all. It should assemble just enough permission for the task at hand then drop it.</p><h3>Meet Wafers</h3><p><strong>Wafers are portable, layered capability tokens designed for this new world</strong>. Instead of giving an agent broad, standing credentials, you &#8220;bake&#8221; a wafer for a single task: <em>scoped, time-bound</em>, and c<em>ryptographically sealed</em>. </p><p><strong>Wafers also allow safe delegation.</strong> Each holder can <em>narrow</em> it further tightening the scope, shortening the lifetime, or constraining the actions.</p><p>An app can <strong>hand an agent a wafer trimmed down to exactly what&#8217;s needed</strong>: &#8220;commit this branch in the next 10 minutes.&#8221; When the request comes back, the service can verify the full chain of custody and enforce every constraint. No surprise escalations, no hidden standing privileges.</p><p>Because wafers are offline and auditable, they fit seamlessly into multi-agent workflows too. Each spawned agent gets only what it needs, nothing more, nothing longer. </p><p><strong>If JWTs were made for users, wafers are made for agents.</strong> They bring least privilege, traceability, and safe delegation to a class of software that is powerful, unpredictable, and here to stay.</p><p><a href="https://github.com/sentinelhq/wafers">Wafers are open source</a> with the first reference implementation in Go. </p><p><strong>If you&#8217;re building systems where agents act on behalf of humans, this is your chance to help shape the next layer of the auth stack. Feedback, contributions, and experiments are all welcome.</strong></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://positiveblue.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Positiveblue&#8217;s Substack! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[AI agents broke auth. Wafers fix it.]]></title><description><![CDATA[Authorization tokens for AI agents that don&#8217;t suck]]></description><link>https://positiveblue.substack.com/p/ai-agents-broke-auth-wafers-fix-it</link><guid isPermaLink="false">https://positiveblue.substack.com/p/ai-agents-broke-auth-wafers-fix-it</guid><dc:creator><![CDATA[Positiveblue]]></dc:creator><pubDate>Tue, 02 Sep 2025 15:06:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!VPbV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7a411b1-1ce8-4767-a111-a41047a0c793_2250x1112.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>TLDR: <a href="https://github.com/sentinelhq/wafers">Wafers</a> are a fast, offline capability token with layered caveats that let you safely hand down precise permissions across third-party services.</p><h2>The mess we are in</h2><p>The world model in the 90s model was simple: `user &#8594; browser &#8594; cookie &#8594; server session`. Then came scripts and services acting for users. We added API keys, then &#8220;fine-grained&#8221; tokens, then OAuth. </p><p>It worked until the thing acting for you became a <strong>generic agent</strong> that might need to read invoices now while wire money later.<br><br>These systems are incredible useful and because of that people are doing the simple thing that &#8220;works today&#8221;: handing an agent long-lived admin credentials so it can do whatever you ask it whenever you as it for.</p><p><strong>Long-lived admin credentials to complete small task is madness. </strong></p><p>API keys don&#8217;t work because they&#8217;re just blobs of raw power, fine-grained tokens only scope things within a single service&#8217;s worldview, and OAuth is a consent dance that falls apart when you try to shoehorn it into agent workflows (just look at the MCP mess). The problem isn&#8217;t that people aren&#8217;t trying hard enough, it&#8217;s that these primitives simply don&#8217;t model the new reality of software.<strong><br></strong></p><p>AI agents are different. They&#8217;re generic, unpredictable actors. Developers don&#8217;t know how to handle it, and so the tension is to block bots (Ahem, Cloudflare) while users keep pushing automation forward because the value is obvious.</p><p><strong><br>We need least privilege, traceable, portable authorization tokes for AI Agents.</strong></p><h3><strong>Meet Wafers</strong></h3><p><strong>Wafers are portable capability tokens you can restrict and pass along. </strong>If a JWT says <em>who you are</em>, a Wafer says <em>who this request is on behalf of</em> and <em>exactly what it&#8217;s allowed to do</em>.</p><p>Instead of handing an agent a broad credential that could do anything, you can give it a wafer that carries only the precise actions it needs, bound to a narrow scope and a short lifetime.</p><p>A wafer begins its life when a service &#8220;bakes&#8221; it: the <strong>issuer creates a header</strong> with an ID, an expiry, and a cryptographic anchor that ties it to the service. From there, <strong>each holder can add a layer that only narrows what the wafer permits</strong> (tightening the scope, limiting the time window, constraining the actions). </p><p>Holders can also pass it on, but only by explicitly naming the next key that&#8217;s allowed to extend it. When the wafer finally comes back with a request, <strong>the issuer can verify the full chain of custody, check the integrity of every layer, and enforce the accumulated rules.</strong></p><p>The lifecycle is simple: bake, layer, hand off, verify. What makes it powerful is that every step is cryptographically sealed, auditable, and offline. That means you can safely give an agent a wafer for one task without worrying it will escalate into another, and you&#8217;ll always know exactly who constrained it along the way.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VPbV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7a411b1-1ce8-4767-a111-a41047a0c793_2250x1112.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VPbV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7a411b1-1ce8-4767-a111-a41047a0c793_2250x1112.jpeg 424w, https://substackcdn.com/image/fetch/$s_!VPbV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7a411b1-1ce8-4767-a111-a41047a0c793_2250x1112.jpeg 848w, https://substackcdn.com/image/fetch/$s_!VPbV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7a411b1-1ce8-4767-a111-a41047a0c793_2250x1112.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!VPbV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7a411b1-1ce8-4767-a111-a41047a0c793_2250x1112.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VPbV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7a411b1-1ce8-4767-a111-a41047a0c793_2250x1112.jpeg" width="2250" height="1112" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a7a411b1-1ce8-4767-a111-a41047a0c793_2250x1112.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1112,&quot;width&quot;:2250,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:410914,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://positiveblue.substack.com/i/172545753?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a039911-34c5-4fb2-a42f-8c1c4d114414_2250x3000.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!VPbV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7a411b1-1ce8-4767-a111-a41047a0c793_2250x1112.jpeg 424w, https://substackcdn.com/image/fetch/$s_!VPbV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7a411b1-1ce8-4767-a111-a41047a0c793_2250x1112.jpeg 848w, https://substackcdn.com/image/fetch/$s_!VPbV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7a411b1-1ce8-4767-a111-a41047a0c793_2250x1112.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!VPbV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7a411b1-1ce8-4767-a111-a41047a0c793_2250x1112.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Wafers are also delicious Danish cookies, you should try them with ice cream!</figcaption></figure></div><h3>A real world example</h3><p> Imagine <strong>you use a wallet service and want to grant an app permission to spend up to $300 a month</strong>. Instead of giving it a long-lived admin key<strong>, the wallet issues a wafer tied to your account with that exact limit baked in</strong>. The app can use it directly, or it can narrow it further when it delegates work. <strong>Suppose the app spins up a small automation to pay a $10 invoice. It hands the agent a wafer scoped to just that merchant, that amount, and a ten-minute window.</strong></p><p>When the agent makes the request, the wallet sees the wafer, cryptographically validates the full chain of custody, and checks the caveats. If the agent tries to spend $11, send to a different merchant, or arrive late, the request is denied. </p><p>The wallet doesn&#8217;t need to know the app or the automation vendor in advance. The wafer itself carries the proof of authority, the constraints, and the trace of who restricted it along the way.</p><h3>How does it work?</h3><p>Under the hood, wafers use a mix of symmetric and public-key cryptography. <strong>At any moment a wafer has exactly one holder: that holder can add new constraints and, if needed, hand it over to the next owner.</strong> </p><p>Adding constraints means deriving a shared secret with the end service and sealing the new layer with an HMAC. Handover means nominating the next public key that will be allowed to extend the wafer. <strong>The result is an append-only chain where every layer is tamper-evident.</strong><br><br><strong>Only the end service can verify the full chain and attest the validity of a wafer.</strong> That design choice matters: it lets us rely on fast symmetric crypto for wafers that never change hands, while limiting public-key operations to the moments of handover. And <strong>because handovers use shared secrets instead of signatures, they stay lightweight even when agents are creating and passing wafers frequently.</strong></p><p>There&#8217;s even a variant where the list of holders is encrypted, so each participant only sees their own place in the chain without knowing who came before. This allows privacy-preserving delegation while still giving the issuer full visibility and control when it comes time to enforce a request.</p><h3>What&#8217;s next</h3><p>AI agents are incredibly useful, and we should expect many more of them in the years ahead. Wafers are a way to update your auth stack for that future. If you already use a policy engine like AWS Cedar, OPA/Rego, or Zanzibar, you don&#8217;t need to replace it. Wafers slot right in, carrying the delegation chain and caveats that your engine can evaluate.</p><p>If you&#8217;re building systems where agents act on behalf of humans, you need a stronger primitive than JWTs or OAuth. This is especially valuable for MCP servers, agent frameworks, and APIs that want to be automatable without handing out admin-level credentials.</p><p>The repo contains the canonical implementation of wafers in Go. Encoding isn&#8217;t finalized yet, but the plan is to use CBOR (waf.0.{base64enc}) in the authentication header. Contributions are welcome &#8212; whether that&#8217;s PRs, implementations in other languages, or integrations into your own auth stack.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://positiveblue.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Positiveblue&#8217;s Substack! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Web Does Not Need Gatekeepers]]></title><description><![CDATA[Do you register with Google, Amazon or Microsoft to use the web?]]></description><link>https://positiveblue.substack.com/p/the-web-does-not-need-gatekeepers</link><guid isPermaLink="false">https://positiveblue.substack.com/p/the-web-does-not-need-gatekeepers</guid><dc:creator><![CDATA[Positiveblue]]></dc:creator><pubDate>Fri, 29 Aug 2025 16:25:17 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/508ed5ad-3ced-4ae4-a881-b062861defc3_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Do you register with Google, Amazon or Microsoft to use the web?</p><p>Cloudflare&#8217;s new &#8220;<strong>signed agents</strong>&#8221; pitch sounds like safety but it&#8217;s a wolf in sheep&#8217;s clothing. They&#8217;ve built an allowlist for the open web and told builders to apply for permission. That&#8217;s not how the internet works. An <a href="https://dash.cloudflare.com/?to=/:account/configurations/verified-bots">application form</a> is not a standard.</p><p>Yes, identity for agents is a real problem. But Cloudflare is solving it like a border checkpoint. Get on their list or get treated like a trespasser. That&#8217;s vendor approval  not an internet protocol. An allowlist run by ONE company?</p><p>Authentication for that world isn&#8217;t &#8220;ask Cloudflare for a hall pass.&#8221; It&#8217;s verifiable chains of delegation and request-level proof: open, portable, and independent of any one company.</p><p></p><h2><strong>The Web Must Remain Open</strong></h2><p>The web thrived because <strong>no one owned it</strong>. </p><p>In the 90s, Microsoft tried to &#8220;embrace and extend&#8221; the web, but failed. And that failure was a blessing. Because no single company controlled it, anyone could publish, anyone could innovate, and protocols carried more weight than corporate policies.</p><p>We&#8217;ve seen this movie before. <strong>Open standards beat closed plug-ins.</strong> HTML5 and the Open Web Platform displaced proprietary runtimes like Flash (Adobe) and Silverlight (Microsoft). Flash was formally ended in 2020 and Silverlight in 2021, while HTML5 became a W3C Recommendation back in 2014.</p><p>The pattern is consistent: when the commons defines the interface, innovation compounds; when a vendor hands out permission slips, it stalls.</p><h2><strong>Agents Are Inevitable</strong></h2><p>Agents are inevitable. They will be the next major users of the web: retrieving information, automating workflows, making purchases, negotiating contracts. <strong>Sometimes ai agents will be explicitly directed by humans, other times they&#8217;ll act as subroutines inside bigger tasks</strong>.</p><p>The line between human and agent action will blur. </p><p>When I&#8217;m driving, I hand my phone to a friend and say, &#8220;Reply &#8216;on my way&#8217; to my Mom.&#8221; They act on my behalf, through my identity, even though the software has no built-in concept of delegation. <strong>That is the world we are entering.</strong></p><h2><strong>Authentication vs. Authorization</strong></h2><p><strong>Authentication </strong>asks: <em>who is acting?</em></p><p><strong>Authorization</strong> asks: <em>what are they allowed to do?</em></p><p>They are not the same. Yet Cloudflare treats them as if a single passport could solve both. It can&#8217;t. In the real world, showing a passport is not enough to open a bank account, the actual person must be present!. <br><br>The same is true online. A cryptographic signature that claims &#8220;I am acting on behalf of X&#8221; means nothing unless it is tied to something real, like a verifiable infrastructure or a range of IPs. Without that, I can simply hand the passport to another agent, and they can act as if they were me. The passport becomes nothing more than a token anyone can pass around.</p><p>This is why the whole idea of a &#8220;bot passport&#8221; is deeply flawed. </p><p>Authentication and authorization matter more than ever but they must be rethought for the era of agents and for an authentic web.</p><h2>Authentication</h2><p>And here&#8217;s the truth: on the internet, nobody knows you&#8217;re a dog.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kD6s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fc83fa8-5429-4d44-8edb-a3ba065f8c9d_299x334.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kD6s!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fc83fa8-5429-4d44-8edb-a3ba065f8c9d_299x334.heic 424w, https://substackcdn.com/image/fetch/$s_!kD6s!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fc83fa8-5429-4d44-8edb-a3ba065f8c9d_299x334.heic 848w, https://substackcdn.com/image/fetch/$s_!kD6s!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fc83fa8-5429-4d44-8edb-a3ba065f8c9d_299x334.heic 1272w, https://substackcdn.com/image/fetch/$s_!kD6s!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fc83fa8-5429-4d44-8edb-a3ba065f8c9d_299x334.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kD6s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fc83fa8-5429-4d44-8edb-a3ba065f8c9d_299x334.heic" width="299" height="334" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0fc83fa8-5429-4d44-8edb-a3ba065f8c9d_299x334.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:334,&quot;width&quot;:299,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:34738,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://positiveblue.substack.com/i/172206112?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fc83fa8-5429-4d44-8edb-a3ba065f8c9d_299x334.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kD6s!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fc83fa8-5429-4d44-8edb-a3ba065f8c9d_299x334.heic 424w, https://substackcdn.com/image/fetch/$s_!kD6s!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fc83fa8-5429-4d44-8edb-a3ba065f8c9d_299x334.heic 848w, https://substackcdn.com/image/fetch/$s_!kD6s!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fc83fa8-5429-4d44-8edb-a3ba065f8c9d_299x334.heic 1272w, https://substackcdn.com/image/fetch/$s_!kD6s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fc83fa8-5429-4d44-8edb-a3ba065f8c9d_299x334.heic 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><br>A single signature proves nothing if it can simply be passed along. What we need is a way to prove both the chain of delegation and the authenticity of each request. The chain is like a certificate :<br><br><em>User X on Service Y delegated to Agent Z, who delegated to Agent K</em>. <br><br>But when Agent K actually makes a request to Service Y, it must add its own signature to prove it is truly Agent K. Without both pieces, authentication collapses.</p><p>The system must have a few key features:</p><ul><li><p><strong>Verifiable</strong>: you can check the claim independently.</p></li><li><p><strong>Composable</strong>: it works across chains of delegation.</p></li><li><p><strong>Decentralized</strong>: no single gatekeeper decides who is &#8220;valid.&#8221;</p></li></ul><p>Public key cryptography already gives us a model. Companies prove ownership today through DNS; they could publish public keys in the same way. That would let a service authenticate a third party simply by checking DNS (without anyone filling forms, asking permission, or registering with a central directory). Sites could still blacklist or whitelist as they choose, but the <strong>default is open</strong>.</p><p><strong>This is what authentication for the agentic era should look like: open, verifiable, and decentralized.</strong></p><h2>Authorization </h2><p>Until now, software usually had a <strong>narrow scope</strong>. </p><p>Think a weekly cron job that emails a &#8220;new signups&#8221; report: it gets read-only access to the analytics DB, nothing else. Or a finance app via Plaid to fund your trading account: it can initiate transfers within limits but can&#8217;t browse your transaction history. </p><p>OAuth scopes worked because the software had a clear, predictable purpose.<br><br>Agents are different. They are <strong>general-purpose</strong>. The same agent might book a flight, pay for dinner, and then summarize your bank statement. They may also be short-lived, spun up for a single task and gone after it.</p><p>One way to make this work is to give the agent an &#8220;admin key&#8221;: full access to everything  It&#8217;s convenient, but dangerous. We must resist this pattern.</p><p><strong>Agents should not hold permanent credentials, authorizations must be per-task, not per-agent.</strong></p><p>Think of a bank account: I might tell my agent <em>&#8220;pay for dinner.&#8221;</em> That token should allow payment. But when I ask <em>&#8220;show me three months of spending,&#8221;</em> the agent should not be able to move money. Same agent, different task, different token. <strong>Credentials must follow tasks, not agents.</strong></p><p>Fortunately, cryptography and authorization models have evolved a lot in the last last years. We now have tools that allow us to issue tokens with <strong>constraints</strong>: granular, short-lived, and delegable (like <a href="https://en.wikipedia.org/wiki/Macaroons_(computer_science)">macaroons</a> or <a href="https://github.com/eclipse-biscuit/biscuit">biscuits</a>) and Open policy engines (like <a href="https://www.openpolicyagent.org">OPA</a> or <a href="https://www.cedarpolicy.com/en">AWS Cedar</a>) can also be used for RBAC/ABAC for this use case.</p><p>Imagine:</p><ul><li><p>User X on Service Y holds an admin token.</p></li><li><p>They derive a narrower token for Agent Z to perform one task.</p></li><li><p>Agent Z can then derive an even narrower token for a sub-agent, all without bothering the service.</p></li><li><p>Each request can be verified against the chain.</p></li></ul><p>Coupled with the authentication model above, this approach gives us a foundation for managing agents without creating new gatekeepers.</p><p></p><h2><strong>Protocols, Not Gatekeepers</strong></h2><p>This challenge is bigger than Cloudflare, Google, Microsoft or any single company. The future of the web cannot hinge on who controls the keys. We need protocols, not gatekeepers.</p><p><strong>Authentication, authorization, and monetization must remain open, interoperable, and standardized.</strong></p><p>Cloudflare&#8217;s launch is useful only because it exposes the danger. If we let a handful of companies decide which agents are &#8220;valid,&#8221; the agentic web will collapse into walled gardens. We&#8217;ve seen this movie before.</p><p>Here&#8217;s the line in the sand: I&#8217;m open-sourcing a first cut of these ideas chains of delegation,  request-level authorization , and task-scoped authorization so anyone can implement them, today.</p><p>If this resonates with you, if you want to collaborate, criticize, or help shape the protocols that will keep the web open for agents, please reach out jordi@fewsats.com</p><p>The future should not be about who holds the gates. It should be about <strong>protocols that let everyone build, share, and innovate</strong>.</p><p></p>]]></content:encoded></item><item><title><![CDATA[Building for the Next Million Bitcoin Users]]></title><description><![CDATA[The economy of Intelligent Digital Agents (IDAs)]]></description><link>https://positiveblue.substack.com/p/building-for-the-next-million-bitcoin</link><guid isPermaLink="false">https://positiveblue.substack.com/p/building-for-the-next-million-bitcoin</guid><dc:creator><![CDATA[Positiveblue]]></dc:creator><pubDate>Mon, 22 May 2023 06:17:07 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/8119acfe-3c28-4bdc-bb36-dd5e1af2d613_2514x1627.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2><strong>Introduction</strong></h2><p>The Bitcoin revolution has only just begun. The integration of the Lightning Network (LN) has established Bitcoin as the native internet currency, primed to connect a global market without geographic restrictions. This technological advancement brings consumers and producers closer than ever before, allowing for purely digital exchanges involving services, information, and digital products.<br><br>Imagine an entrepreneur in Nigeria who develops a SaaS project. S/he can now  serve customers in Europe and South America and monetize their project using the Lightning Network. The payments are secure, instant and final. The sats earned from this venture aren't just sitting idle; they can be used to pay for services from providers across Southeast Asia and North America. </p><p>This entire operation, spanning continents, occurs seamlessly without the involvement of any third-party intermediaries such as banks or financial institutions. The control over the funds rests with the entrepreneur from the moment the first satoshi hits their account.<br><br>Morover, the system's benefits don't stop there. Thanks to the diligent efforts of countless open-source contributors worldwide, the technology has matured significantly. Thousands of developers, irrespective of their experience level, can now set up their own payment gateways within hours. This progress democratizes financial transactions, dismantles barriers, and opens up the global market to anyone skilled enough to deploy code.<br><br>Despite Bitcoin's growing maturity, the world hasn't fully realized the potential of this digital revolution. Traditional methods of transaction like credit cards and PayPal, which involve third-party intermediaries, still hold sway. These intermediaries often impose restrictions such as what currency can be used, who can participate in a trade, and even if a transaction can take place or not.</p><p></p><h2><strong>Intelligent Digital Agents (IDAs) enter the room</strong></h2><p>As we explore the Bitcoin revolution's horizons, there's another player making a grand entrance - Large Language Models (LLMs). The LLMs' breakthrough represents a revolution that's nothing short of transformative. These AI-powered models have brought about a paradigm shift, changing the way we interact with digital technology at a fundamental level.</p><p>The LLMs ecosystem is dynamic and rapidly evolving. Every day, we're witnessing an explosion of innovations in the AI landscape. Intelligent digital agents, equipped with the power of LLMs, are becoming increasingly proficient at executing tasks and providing services that were once the exclusive domain of humans.</p><p>This progress is attracting considerable capital and intellectual resources. The market for LLMs and associated intelligent agents is burgeoning, with investors and innovators alike recognizing the tremendous potential. We're seeing a decisive shift towards this domain, as individuals, companies, and institutions invest their money and brainpower into harnessing the LLMs' transformative capabilities.</p><p>The emergence of LLMs underscores a fundamental truth about the digital age - the world waits for no one. While people are slow in embracing Bitcoin/LN, a storm of innovation is brewing with IDAs at is heart.</p><h2><strong><br>A match made in heaven</strong></h2><p>We are on the verge of a new era dominated by Independent Digital Agents (IDAs). In this new world, people will interact with IDAs in a similar way that a CEO interacts with strategic directives to various departments within a company. Just as a CEO doesn't micromanage every operation but sets high-level objectives and budget restrictions on the department, users will soon issue broad directives. IDAs will then interpret these commands, turning intent into action, much like departments execute a CEO's strategy.</p><p><br>While some envision a future dominated by a single "definitive" AI, I propose a different perspective. I envision a vibrant economy inhabited by millions of IDAs. Much like human society, these agents will specialize, trade, and at times opt to purchase computational services from others instead of self-executing tasks. This intricate, digital economy mirrors the diversity and interconnected-ness of our own human society.</p><p>Native digital currency plays a pivotal role in this scenario. IDAs will be tasked with countless computation tasks. From reporting data insights to plan and execute marketing campaings. . Some of this tasks will be performed in the boundaries of the IDAs economy, like reminding a human that need to attend a meeting with a SMS text, while many others will be interactions involving only IDAs. </p><p>But how will IDAs perform economic calculation? How will help them deciding which execution path is more optimal? In many cases, prices. IDAs won&#8217;t only will have to compute execution paths taking into account price, they will also have to pay (transact) to execute those plans.<br><br>Such an economy necessitates a currency. The need for a native digital currency is paramount, and no option embodies this concept better than Bitcoin/LN. </p><p>This symbiosis between AI and Bitcoin is the match made in heaven, ready to usher us into the next phase of digital evolution. As we steer towards this future, we anticipate a steep surge in Bitcoin users - and many of them may not be humans. </p><h2><strong>Imagining the Future</strong></h2><p>In this future, I see an economy bustling with Independent Digital Agents (IDAs) actively buying and selling their services and computational power. This economy won't emerge out of thin air &#8211; it will be constructed upon the robust foundation. After all, we stand on the shoulders of titans.</p><p>The Lightning Network (LN), with its high-quality node implementations, liquidity management tools, liquidity markets, and a sturdy, reliable network of nodes prepared to forward payments, provides a resilient infrastructure for this envisioned economy.</p><p>Perhaps it's time for us to adopt a new approach while creating our next service. A "machine-first" approach, where the traditional barriers of credit cards, tiered pricing structures, and cumbersome email, password, and phone verification become things of the past.</p><p>We can't predict the future with perfect precision, but we can certainly influence its direction. The best way to ensure a future that aligns with our vision is to take the reins into our hands and build it. As innovators, creators, and visionaries, we're not just spectators but active architects of the future. So, let's continue building and shaping the world we wish to see.</p>]]></content:encoded></item></channel></rss>