<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AI &#8211; Made For Cloud</title>
	<atom:link href="https://madeforcloud.com/category/ai/feed/" rel="self" type="application/rss+xml" />
	<link>https://madeforcloud.com</link>
	<description>Just another WordPress site</description>
	<lastBuildDate>Mon, 28 Sep 2026 02:28:26 +0000</lastBuildDate>
	<language>en-AU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.2</generator>
	<item>
		<title>Don&#8217;t Trust the LLM: Putting Contracts Around the Agentic AI</title>
		<link>https://madeforcloud.com/2026/09/28/dont-trust-the-llm-putting-contracts-around-the-agentic-ai/</link>
					<comments>https://madeforcloud.com/2026/09/28/dont-trust-the-llm-putting-contracts-around-the-agentic-ai/#respond</comments>
		
		<dc:creator><![CDATA[gocallag]]></dc:creator>
		<pubDate>Mon, 28 Sep 2026 01:28:37 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<guid isPermaLink="false">https://madeforcloud.com/?p=339</guid>

					<description><![CDATA[I’ve been spending quite a bit of time recently looking at agentic AI, particularly how we move from interesting demos into something you could reasonably let loose inside an enterprise. One thing is becoming increasingly obvious. The LLM isn&#8217;t really the important bit. Or, perhaps more accurately, it isn&#8217;t the bit we should be building&#8230;<p><a class="more-link" href="https://madeforcloud.com/2026/09/28/dont-trust-the-llm-putting-contracts-around-the-agentic-ai/" title="Continue reading &#8216;Don&#8217;t Trust the LLM: Putting Contracts Around the Agentic AI&#8217;">Continue reading <span class="meta-nav">&#8594;</span></a></p>]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading"></h1>



<p class="wp-block-paragraph">I’ve been spending quite a bit of time recently looking at agentic AI, particularly how we move from interesting demos into something you could reasonably let loose inside an enterprise.</p>



<p class="wp-block-paragraph">One thing is becoming increasingly obvious.</p>



<p class="wp-block-paragraph"><strong>The LLM isn&#8217;t really the important bit.</strong></p>



<p class="wp-block-paragraph">Or, perhaps more accurately, it isn&#8217;t the bit we should be building our architecture around.</p>



<p class="wp-block-paragraph">The Australian Signals Directorate (ASD) recently published Agentic AI Harnesses: The layer above the model, and it describes something I think is genuinely important when designing agentic systems: the <strong>harness</strong>.</p>



<h2 class="wp-block-heading">What&#8217;s a harness?</h2>



<p class="wp-block-paragraph">ASD describes the harness as everything around the LLM that allows it to interact with the real world. Think:</p>



<ul class="wp-block-list">
<li>context</li>



<li>tools</li>



<li>connectors</li>



<li>permissions</li>



<li>memory</li>



<li>execution environments</li>



<li>workflows</li>



<li>audit and observability</li>
</ul>



<p class="wp-block-paragraph">The LLM decides what it <em>thinks</em> should happen. The harness determines what it is actually <strong>capable of doing and what it is allowed to do</strong>.</p>



<p class="wp-block-paragraph">That&#8217;s a pretty important distinction.</p>



<p class="wp-block-paragraph">If an LLM decides:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">delete that file</p>
</blockquote>



<p class="wp-block-paragraph">there is a considerable difference between the model generating that response and your system actually executing <code>rm</code>. The harness sits between those two things.</p>



<h2 class="wp-block-heading">This looks remarkably familiar</h2>



<p class="wp-block-paragraph">When I looked at Microsoft Agent Framework 1.0 recently, one of the architectural decisions I liked was the separation between Agents and Workflows.</p>



<ul class="wp-block-list">
<li>Agents handle reasoning and interpretation.</li>



<li>Workflows provide deterministic execution and control.</li>



<li>Middleware provides logging, telemetry, filtering and compliance.</li>



<li>MCP and tools provide controlled access to external capabilities.</li>
</ul>



<p class="wp-block-paragraph">ASD&#8217;s harness model puts a useful security architecture around essentially that same problem.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="683" height="1024" src="https://madeforcloud.com/wp-content/uploads/2026/09/image-683x1024.png" alt="" class="wp-image-340" srcset="https://madeforcloud.com/wp-content/uploads/2026/09/image-683x1024.png 683w, https://madeforcloud.com/wp-content/uploads/2026/09/image-200x300.png 200w, https://madeforcloud.com/wp-content/uploads/2026/09/image-768x1152.png 768w, https://madeforcloud.com/wp-content/uploads/2026/09/image.png 1024w" sizes="(max-width: 683px) 100vw, 683px" /></figure>



<p class="wp-block-paragraph">That separation matters.</p>



<h2 class="wp-block-heading">Treat the LLM as replaceable</h2>



<p class="wp-block-paragraph">This is probably the most interesting point in the ASD paper. A harness can support multiple LLMs, and a well-designed harness can survive model upgrades. ASD therefore argues that the harness is likely to become the longer-term organisational investment.</p>



<p class="wp-block-paragraph">I think that&#8217;s exactly the right way to look at it.</p>



<p class="wp-block-paragraph">We should be constructing systems where:</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="683" src="https://madeforcloud.com/wp-content/uploads/2026/09/image-1-1024x683.png" alt="" class="wp-image-341" srcset="https://madeforcloud.com/wp-content/uploads/2026/09/image-1-1024x683.png 1024w, https://madeforcloud.com/wp-content/uploads/2026/09/image-1-300x200.png 300w, https://madeforcloud.com/wp-content/uploads/2026/09/image-1-768x512.png 768w, https://madeforcloud.com/wp-content/uploads/2026/09/image-1.png 1536w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Becomea:</p>



<figure class="wp-block-image size-large"><img decoding="async" width="683" height="1024" src="https://madeforcloud.com/wp-content/uploads/2026/09/image-2-683x1024.png" alt="" class="wp-image-342" srcset="https://madeforcloud.com/wp-content/uploads/2026/09/image-2-683x1024.png 683w, https://madeforcloud.com/wp-content/uploads/2026/09/image-2-200x300.png 200w, https://madeforcloud.com/wp-content/uploads/2026/09/image-2-768x1152.png 768w, https://madeforcloud.com/wp-content/uploads/2026/09/image-2.png 1024w" sizes="(max-width: 683px) 100vw, 683px" /></figure>



<p class="wp-block-paragraph">Models can and will change.</p>



<p class="wp-block-paragraph">Your identity model, permissions, workflows, integrations, audit trail and security boundaries shouldn&#8217;t need to. </p>



<p class="wp-block-paragraph">If you&#8217;ve gone through the prompt engineering phase of this little journey, then this will likely resonate with you. Change the model and there’s a reasonable chance you’ll need to revisit the prompts, assumptions and expected outputs. The harness is your opportunity to remove a lot of that pain. Especially when you combine it with schema contracts (see below).</p>



<h2 class="wp-block-heading">Security outside the model</h2>



<p class="wp-block-paragraph">There&#8217;s another consequence. Prompt engineering isn&#8217;t your security boundary.</p>



<p class="wp-block-paragraph">ASD notes that prompt injection cannot currently be reliably solved inside the model. Controls therefore need to exist across the harness, connected systems and organisational governance.</p>



<p class="wp-block-paragraph">That&#8217;s just normal security architecture when you think about it. <strong>Don&#8217;t trust the clever thing in the middle.</strong></p>



<p class="wp-block-paragraph">Constrain it.</p>



<ul class="wp-block-list">
<li>Least privilege.</li>



<li>Explicit permissions.</li>



<li>Controlled tools.</li>



<li>Validated inputs and outputs.</li>



<li>Human approval for sensitive operations.</li>



<li>Logging everything useful.</li>



<li>Isolated execution environments.</li>
</ul>



<p class="wp-block-paragraph">ASD specifically recommends these sorts of harness-level controls rather than relying on model safety behaviour alone. </p>



<h2 class="wp-block-heading">Context is also a security boundary</h2>



<p class="wp-block-paragraph">One particularly interesting recommendation concerns context.</p>



<p class="wp-block-paragraph">ASD recommends keeping context focused on the task, retaining only relevant information and deleting stale context rather than continually summarising it. Durable facts and decisions should instead be stored externally.</p>



<p class="wp-block-paragraph">That&#8217;s interesting for both security <strong>and</strong> engineering.</p>



<p class="wp-block-paragraph">Huge, endlessly growing agent conversations aren&#8217;t necessarily good architecture, nor are they cheap to operate. Small bounded contexts and external durable state start looking considerably more sensible. So do sub-agents.</p>



<p class="wp-block-paragraph">ASD recommends isolating exploratory tasks into sub-agents with only the tools, context and permissions required for that particular operation. That&#8217;s basically least privilege applied to agent architecture.</p>



<h2 class="wp-block-heading">The interesting engineering isn&#8217;t the AI</h2>



<p class="wp-block-paragraph">And I think this is where enterprise agentic AI becomes considerably more interesting. We&#8217;ve all seen the vibe-coded demo apps where someone whips up a cool demo concept.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="683" src="https://madeforcloud.com/wp-content/uploads/2026/09/image-3-1024x683.png" alt="" class="wp-image-343" srcset="https://madeforcloud.com/wp-content/uploads/2026/09/image-3-1024x683.png 1024w, https://madeforcloud.com/wp-content/uploads/2026/09/image-3-300x200.png 300w, https://madeforcloud.com/wp-content/uploads/2026/09/image-3-768x512.png 768w, https://madeforcloud.com/wp-content/uploads/2026/09/image-3.png 1536w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">The production problem is:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="683" height="1024" src="https://madeforcloud.com/wp-content/uploads/2026/09/image-4-683x1024.png" alt="" class="wp-image-344" srcset="https://madeforcloud.com/wp-content/uploads/2026/09/image-4-683x1024.png 683w, https://madeforcloud.com/wp-content/uploads/2026/09/image-4-200x300.png 200w, https://madeforcloud.com/wp-content/uploads/2026/09/image-4-768x1152.png 768w, https://madeforcloud.com/wp-content/uploads/2026/09/image-4.png 1024w" sizes="auto, (max-width: 683px) 100vw, 683px" /></figure>



<p class="wp-block-paragraph">The LLM is only one component and quite possibly the easiest component to replace.</p>



<p class="wp-block-paragraph">ASD&#8217;s three key takeaways summarise it rather nicely: organisations control the harness rather than the LLM, organisational value and governance accumulate in the harness, and the surrounding harness ecosystem should be a primary focus for security and risk management.</p>



<p class="wp-block-paragraph">That&#8217;s probably where we should be concentrating our engineering effort as well.</p>



<p class="wp-block-paragraph">Because ultimately, <strong>don&#8217;t give the monkey a gun</strong> is still a perfectly reasonable architectural principle.</p>



<h3 class="wp-block-heading">How can we use the harness effectively</h3>



<h4 class="wp-block-heading">AKA Reducing the ability for the LLM to &#8216;innovate&#8217;</h4>



<p class="wp-block-paragraph">Currently, I am introducing <strong>typed contracts on both sides of the LLM</strong>, rather than treating the LLM boundary as text:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="683" height="1024" src="https://madeforcloud.com/wp-content/uploads/2026/09/image-5-683x1024.png" alt="" class="wp-image-345" srcset="https://madeforcloud.com/wp-content/uploads/2026/09/image-5-683x1024.png 683w, https://madeforcloud.com/wp-content/uploads/2026/09/image-5-200x300.png 200w, https://madeforcloud.com/wp-content/uploads/2026/09/image-5-768x1152.png 768w, https://madeforcloud.com/wp-content/uploads/2026/09/image-5.png 1024w" sizes="auto, (max-width: 683px) 100vw, 683px" /></figure>



<p class="wp-block-paragraph">The important distinction is:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>The LLM produces intent. The schema establishes a contract. Validation establishes whether software may trust that contract structurally. Policy and authorisation decide whether anything may actually happen.</strong></p>
</blockquote>



<p class="wp-block-paragraph">That lines up well with current structured-output practice: schemas constrain shape, while application validation and authorisation remain separate concerns. </p>



<p class="wp-block-paragraph"><strong>In practical terms I’m experimenting with defining three contracts.</strong></p>



<p class="wp-block-paragraph">Not simply input and output, but three explicit boundaries:</p>



<ul class="wp-block-list">
<li><strong>AgentRequest</strong> defines what we&#8217;re prepared to give the model.</li>



<li><strong>AgentResponse</strong> defines what we&#8217;re prepared to accept back from the model.</li>



<li><strong>ToolRequest</strong> defines what the deterministic side of the system is permitted to ask a tool to execute.</li>
</ul>



<p class="wp-block-paragraph">This gives us something much closer to a conventional software interface around a decidedly unconventional software component.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="683" height="1024" src="https://madeforcloud.com/wp-content/uploads/2026/09/image-6-683x1024.png" alt="" class="wp-image-346" srcset="https://madeforcloud.com/wp-content/uploads/2026/09/image-6-683x1024.png 683w, https://madeforcloud.com/wp-content/uploads/2026/09/image-6-200x300.png 200w, https://madeforcloud.com/wp-content/uploads/2026/09/image-6-768x1152.png 768w, https://madeforcloud.com/wp-content/uploads/2026/09/image-6.png 1024w" sizes="auto, (max-width: 683px) 100vw, 683px" /></figure>



<p class="wp-block-paragraph">Critically, I <strong>wouldn&#8217;t let the LLM directly construct the privileged tool invocation</strong>.  The LLM can propose intent. It doesn&#8217;t get execution authority. No matter what the cool kids tell me, I think that&#8217;s a nuts idea on anything resembling a production system. Yes, please review the <strong>Monkey with a Gun</strong> architectural principle if you&#8217;re considering this.</p>



<p class="wp-block-paragraph">There&#8217;s another useful side effect here. These schemas are APIs. If I change <code>AgentResponse v1</code>, that&#8217;s an API contract change regardless of whether GPT, Claude or something running locally is sitting behind it.</p>



<p class="wp-block-paragraph">That means I can version it, test it, regression test model upgrades against it and, importantly, fail closed when the model produces something I don&#8217;t understand.</p>



<h3 class="wp-block-heading">References</h3>



<p class="wp-block-paragraph">Australian Signals Directorate, Agentic AI Harnesses: The layer above the model, September 2026. <a href="https://www.cyber.gov.au/sites/default/files/2026-09/Agentic%20AI%20Harnesses%20-%20The%20layer%20above%20the%20model.pdf">[cyber.gov.au]</a></p>



<p class="wp-block-paragraph">Looking at the Microsoft Agent Framework 1.0, Made For Cloud. <a href="https://madeforcloud.com/2026/05/23/looking-at-the-microsoft-agent-framework-1-0/">[madeforcloud.com]</a></p>



<p class="wp-block-paragraph">Structured Outputs: Why Production AI Needs Schemas, Not Just Prose [<a href="https://www.truefoundry.com/blog/llm-structured-outputs-json-schema">https://www.truefoundry.com/blog/llm-structured-outputs-json-schema</a>]</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://madeforcloud.com/2026/09/28/dont-trust-the-llm-putting-contracts-around-the-agentic-ai/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Looking at the Microsoft Agent Framework 1.0</title>
		<link>https://madeforcloud.com/2026/05/23/looking-at-the-microsoft-agent-framework-1-0/</link>
					<comments>https://madeforcloud.com/2026/05/23/looking-at-the-microsoft-agent-framework-1-0/#comments</comments>
		
		<dc:creator><![CDATA[gocallag]]></dc:creator>
		<pubDate>Fri, 22 May 2026 22:15:00 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<guid isPermaLink="false">https://madeforcloud.com/?p=280</guid>

					<description><![CDATA[Microsoft Agent Framework 1.0 is the Microsoft’s first production‑level, open‑source platform for building long‑running, autonomous, multi‑agent systems in .NET and Python. It formalises what developers have been improvising for the past year: structured reasoning loops, tool calling, multi‑agent orchestration, and governance. Basically, Microsoft thinks we need to move from &#8216;research toys&#8217; to &#8216;cloud‑native automation components&#8217;&#8230;<p><a class="more-link" href="https://madeforcloud.com/2026/05/23/looking-at-the-microsoft-agent-framework-1-0/" title="Continue reading &#8216;Looking at the Microsoft Agent Framework 1.0&#8217;">Continue reading <span class="meta-nav">&#8594;</span></a></p>]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading"></h1>



<p class="wp-block-paragraph">Microsoft Agent Framework 1.0 is the Microsoft’s first production‑level, open‑source platform for building long‑running, autonomous, multi‑agent systems in .NET and Python. It formalises what developers have been improvising for the past year: structured reasoning loops, tool calling, multi‑agent orchestration, and governance. Basically, Microsoft thinks we need to move from &#8216;research toys&#8217; to &#8216;cloud‑native automation components&#8217; with deterministic workflows and enterprise boundaries<strong>.</strong></p>



<h2 class="wp-block-heading">What is it?</h2>



<p class="wp-block-paragraph">The framework is not a simple code library!  it’s a runtime, SDK and, orchestration fabric:</p>



<h2 class="wp-block-heading">Why care?</h2>



<p class="wp-block-paragraph">Agents are no longer simplistic &#8216;chatbots&#8217;. Agentic AI is shifting toward long‑running, autonomous systems that collaborate, reason, and operate reliably in production, aligning with the broader industry trend where LLMs are becoming cloud automation components, not fancy UI features.</p>



<h2 class="wp-block-heading">How? or what&#8217;s inside an agentic application</h2>



<h3 class="wp-block-heading">Agents</h3>



<p class="wp-block-paragraph">In the start, Agents were basically just wrappers around various prompts. Now they are stateful runtime components that use LLMs to interpret inputs, call tools and MCP servers, maintain session state, and generate responses. This creates a clean abstraction that aligns well with cloud-native micro-automation.</p>



<h3 class="wp-block-heading">Workflows</h3>



<p class="wp-block-paragraph">Workflows are deterministic graphs that enforce execution order, coordinate multiple agents, and support both checkpointing and human-in-the-loop interactions. They&#8217;re important because LLM&#8217;s are non-deterministic, they don&#8217;t respond the same way to the same inputs. In a business process determinism can be a key concern.</p>



<p class="wp-block-paragraph">This separation of concerns is the most important architectural decision which relates &#8216;Reasoning / Interpretation&#8217; to the Agent, and the overall execution policy and control to the Workflow giving us the best of both worlds.</p>



<h3 class="wp-block-heading">Middleware</h3>



<p class="wp-block-paragraph">The middleware pipeline allows overall addition of logging, telemetry, filters and compliance logic to our application. Without this, governance typically fails.</p>



<h3 class="wp-block-heading">Agent to Agent (A2A) communication</h3>



<p class="wp-block-paragraph">Agents can now communicate across runtimes (e.g. From Python to .NET) using a structured protocol.This opens up the multi-language development world for agents.</p>



<h3 class="wp-block-heading">MCP Integration</h3>



<p class="wp-block-paragraph">Agents can dynamically discover and invoke tools without custom integration code. This defacto industry standard is a must-have for tool usage.</p>



<p class="wp-block-paragraph">If you’re already in Azure, this will likely become your default agentic automation layer over the next year, or until the next announcements change the playing-field again.</p>



<p class="wp-block-paragraph">If you’re multi‑cloud, it’s still worth having a look, because this is the direction the entire industry is moving. Frameworks help keep the gun-bearing monkey&#8217;s known as LLM&#8217;s under control.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://madeforcloud.com/2026/05/23/looking-at-the-microsoft-agent-framework-1-0/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
