<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on Thinking on Paper</title><link>https://catakovic.com/posts/</link><description>Recent content in Posts on Thinking on Paper</description><generator>Hugo</generator><language>en-us</language><copyright>© Haris Catakovic. Opinions are my own.</copyright><lastBuildDate>Sat, 26 Sep 2026 13:27:29 -0400</lastBuildDate><atom:link href="https://catakovic.com/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Agent Governance Is an Old Job</title><link>https://catakovic.com/posts/agent-governance-is-an-old-job/</link><pubDate>Sat, 26 Sep 2026 13:27:29 -0400</pubDate><guid>https://catakovic.com/posts/agent-governance-is-an-old-job/</guid><description>&lt;p&gt;Let employees build agents on every platform you own, and soon you&amp;rsquo;ll have more&#10;agents than anyone can name.&lt;/p&gt;&#10;&lt;p&gt;Each build platform keeps its own inventory, usage data, and risk view, so&#10;governance splits along the same lines. The collaboration admin governs&#10;collaboration agents, the low-code admin governs low-code agents, and the&#10;identity, data, and security teams each work alone. That arrangement holds&#10;until agents start calling each other, running unattended, and holding their&#10;own identities. After that, nobody sees the whole system.&lt;/p&gt;</description></item><item><title>Write Without AI First</title><link>https://catakovic.com/posts/write-without-ai-first/</link><pubDate>Sun, 06 Sep 2026 10:30:34 -0400</pubDate><guid>https://catakovic.com/posts/write-without-ai-first/</guid><description>&lt;p&gt;&lt;strong&gt;Writing is thinking.&lt;/strong&gt; Leslie Lamport put it more sharply in a 2014 talk: if&#10;you&amp;rsquo;re thinking without writing, you only think you&amp;rsquo;re thinking. He also quoted&#10;the cartoonist Dick Guindon: &amp;ldquo;Writing is nature&amp;rsquo;s way of letting you know how&#10;sloppy your thinking is.&amp;rdquo;&lt;/p&gt;&#10;&lt;p&gt;Lately I&amp;rsquo;ve been breaking that rule in a new way. I&amp;rsquo;m not skipping the writing.&#10;I&amp;rsquo;m handing it to AI.&lt;/p&gt;&#10;&lt;h2 id="a-draft-is-a-test"&gt;&#10; A draft is a test&#10; &lt;a class="heading-link" href="#a-draft-is-a-test"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;An idea in my head feels complete. It has no gaps because I never have to look&#10;at all of it at once. Writing forces order: this claim before that one, this&#10;because of that. The gaps show up as sentences I can&amp;rsquo;t finish and transitions I&#10;can&amp;rsquo;t justify.&lt;/p&gt;</description></item><item><title>What Identity Does Your Agent Run As</title><link>https://catakovic.com/posts/what-identity-does-your-agent-run-as/</link><pubDate>Sat, 05 Sep 2026 17:15:44 -0400</pubDate><guid>https://catakovic.com/posts/what-identity-does-your-agent-run-as/</guid><description>&lt;p&gt;The refund went through. The agent was supposed to investigate a disputed charge. It held its owner&amp;rsquo;s personal API token, with every billing permission the owner had, because that was the only credential available. A support message instructed it to refund another account. The API accepted the call.&lt;/p&gt;&#10;&lt;p&gt;The token was valid. The action was outside the task.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Authentication identifies the workload. Authorization determines what it may do for this task.&lt;/strong&gt; A credential can carry both. The mistake is treating the owner&amp;rsquo;s available permissions as the agent&amp;rsquo;s authority.&lt;/p&gt;</description></item><item><title>Understanding Agent Skills</title><link>https://catakovic.com/posts/understanding-agent-skills/</link><pubDate>Sat, 29 Aug 2026 20:11:21 -0400</pubDate><guid>https://catakovic.com/posts/understanding-agent-skills/</guid><description>&lt;h1 id="understanding-agent-skills"&gt;&#10; Understanding Agent Skills&#10; &lt;a class="heading-link" href="#understanding-agent-skills"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h1&gt;&#10;&lt;p&gt;If you&amp;rsquo;ve used Claude Code, or watched an AI agent debug the same kind of error for the hundredth time like it was the first, you&amp;rsquo;ve run into the problem Agent Skills were built to solve. Large language models are broadly capable but they don&amp;rsquo;t remember how your team does things. Every session starts from zero. A coding agent that has fixed the same null pointer exception a hundred times still approaches the hundred and first as if it&amp;rsquo;s never seen it before, because whatever it learned last time disappeared the moment the context window closed.&lt;/p&gt;</description></item><item><title>Agents Propose, Policy Accepts</title><link>https://catakovic.com/posts/agents-propose-policy-accepts/</link><pubDate>Sat, 22 Aug 2026 21:15:41 -0400</pubDate><guid>https://catakovic.com/posts/agents-propose-policy-accepts/</guid><description>&lt;p&gt;I&amp;rsquo;ve spent a good chunk of this year helping teams put coding agents into real&#10;delivery pipelines. Not demos. Pipelines with on-call rotations attached.&lt;/p&gt;&#10;&lt;p&gt;The mental model that survived is one sentence: agents propose, policy accepts.&#10;An agent&amp;rsquo;s output is a change proposal. It merges when the same machinery that&#10;gates human changes says yes: automated checks, ownership rules, review, deploy&#10;approvals. The agent never gets to say yes to itself.&lt;/p&gt;</description></item></channel></rss>