<?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: AndersonVitaease</title>
    <description>The latest articles on DEV Community by AndersonVitaease (@andersonvitaease).</description>
    <link>https://dev.to/andersonvitaease</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%2F4111283%2Fd21ad3c2-d2fa-457d-a3c5-b834c1a4665f.png</url>
      <title>DEV Community: AndersonVitaease</title>
      <link>https://dev.to/andersonvitaease</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/andersonvitaease"/>
    <language>en</language>
    <item>
      <title>How execution boundaries reduce the blast radius of AI agent mistakes</title>
      <dc:creator>AndersonVitaease</dc:creator>
      <pubDate>Sat, 05 Sep 2026 18:52:26 +0000</pubDate>
      <link>https://dev.to/andersonvitaease/how-execution-boundaries-reduce-the-blast-radius-of-ai-agent-mistakes-3bb</link>
      <guid>https://dev.to/andersonvitaease/how-execution-boundaries-reduce-the-blast-radius-of-ai-agent-mistakes-3bb</guid>
      <description>&lt;p&gt;AI agents make mistakes. Not rarely, and not only the weak models — a strong model working from a stale diff, a misread document, or a hostile instruction will eventually propose the wrong effect. So the interesting engineering question is not "how do we make agents never wrong?"&lt;/p&gt;

&lt;p&gt;It is: &lt;strong&gt;when a wrong proposal executes, how big is the damage?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is the blast radius problem, and it is mostly determined by one design decision: where the execution boundary sits.&lt;/p&gt;

&lt;h2&gt;
  
  
  Intent is not the effect
&lt;/h2&gt;

&lt;p&gt;An LLM's output is a proposal. It becomes real only when a tool applies it — a shell command runs, a file is written, an API is called, a token is spent. Everything the model "did" before that moment is just text.&lt;/p&gt;

&lt;p&gt;Most current safety work lives on the intent side: better prompts, permission dialogs, code review, least-privilege tokens. These help, but they share a structural gap: the permission gate is coarse (this token can write to this repo; this agent may run shell commands), while the effect itself can still be unbounded in shape. An agent with repo write access can close issues, rewrite history, or rename resources in one confident pass. The token was scoped. The blast radius was not.&lt;/p&gt;

&lt;h2&gt;
  
  
  What an execution boundary is
&lt;/h2&gt;

&lt;p&gt;An execution boundary is the point where a proposed effect meets the actual state it would change. In an experimental project I have been building — &lt;a href="https://github.com/AndersonVitaease/memoryos-guardian-core" rel="noopener noreferrer"&gt;Guardian Core&lt;/a&gt;, an experimental Safe Execution Core — the boundary does two things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;State-bound execution.&lt;/strong&gt; Effects are not free-form actions. They are expressed as bounded changes against a declared state — a filesystem scope, a repository, a server — and the boundary validates the proposal against that state &lt;em&gt;before&lt;/em&gt; anything happens.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evidence-based outcomes.&lt;/strong&gt; After execution, the caller receives evidence: what changed, where, and with what result. The outcome is a record, not a story.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The goal is not to make the agent smarter. It is to make the effect smaller by construction.&lt;/p&gt;

&lt;h2&gt;
  
  
  A concrete example
&lt;/h2&gt;

&lt;p&gt;Suppose an agent is asked to "clean up build artifacts" in a project.&lt;/p&gt;

&lt;p&gt;Without a boundary, the agent runs something like &lt;code&gt;rm -rf ./build&lt;/code&gt;. If it misread the layout — or a prompt injection nudged it to clean "a bit more" — the command deletes whatever it resolved to. The blast radius is the command's reach.&lt;/p&gt;

&lt;p&gt;With an execution boundary, the agent instead proposes a bounded change: "delete the files matching *.o under ./build". The boundary validates the scope (paths inside the declared area, operation type allowed), applies the change, and returns evidence: which files changed and with what result. If the proposal resolves to something outside the scope — a symlink escaping the tree, a path that no longer exists — the change is rejected before execution, and the rejection itself becomes evidence.&lt;/p&gt;

&lt;p&gt;The mistake still happened. The damage did not propagate.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the evidence actually is
&lt;/h2&gt;

&lt;p&gt;Guardian Core is experimental research code, and I want the claims to stay inside what exists today:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Four domain experiments: &lt;strong&gt;Filesystem&lt;/strong&gt;, &lt;strong&gt;GitHub&lt;/strong&gt;, and &lt;strong&gt;VPS/Dokploy&lt;/strong&gt; are implemented as conformance adapters against one core; &lt;strong&gt;Email&lt;/strong&gt; is a later, independent fourth validation.&lt;/li&gt;
&lt;li&gt;The core and its adapters carry their own test suites (41 tests in Guardian Core; the VPS/Dokploy proof carries 179 — counts as of this writing).&lt;/li&gt;
&lt;li&gt;The result model returns evidence of what was executed, not a promise about the world.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What it explicitly does &lt;strong&gt;not&lt;/strong&gt; provide: universal distributed atomicity, exactly-once semantics, or a guarantee that a bounded effect is always the right one. Concurrency between independent agents touching the same state is a real limitation, and the repository says so plainly. If two agents execute overlapping changes, the evidence will show what happened. It will not un-happen it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaways for agent developers
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Put the boundary at the effect, not the prompt.&lt;/strong&gt; Prompt rules are advisory. The tool call is the contract.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Budget blast radius per tool.&lt;/strong&gt; Every tool should answer: what is the worst single call this can do?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make evidence a first-class output.&lt;/strong&gt; "It succeeded" is a story. "These 14 files changed, with these results" is evidence.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Design for containment, not perfection.&lt;/strong&gt; Assume a wrong proposal eventually passes your checks. What limits it then?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Your turn
&lt;/h2&gt;

&lt;p&gt;How do you cap blast radius in your agent stack today — allowlists, sandboxes, review gates, effect-typed tools? And what would an execution boundary need to expose before you would let an autonomous agent operate inside your own domain?&lt;/p&gt;

&lt;p&gt;Repository (experimental, feedback welcome): &lt;a href="https://github.com/AndersonVitaease/memoryos-guardian-core" rel="noopener noreferrer"&gt;https://github.com/AndersonVitaease/memoryos-guardian-core&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>security</category>
      <category>mcp</category>
    </item>
    <item>
      <title>Giving AI Agents Capabilities Without Giving Them Unrestricted Authority</title>
      <dc:creator>AndersonVitaease</dc:creator>
      <pubDate>Sat, 05 Sep 2026 14:58:52 +0000</pubDate>
      <link>https://dev.to/andersonvitaease/giving-ai-agents-capabilities-without-giving-them-unrestricted-authority-5g4j</link>
      <guid>https://dev.to/andersonvitaease/giving-ai-agents-capabilities-without-giving-them-unrestricted-authority-5g4j</guid>
      <description>&lt;p&gt;As AI agents gain access to real tools, I've been thinking about a problem that seems increasingly important:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Giving an agent a capability often means giving it more authority than the specific action requires.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Consider a simple architecture:&lt;/p&gt;

&lt;p&gt;Agent → Tool → Real System&lt;/p&gt;

&lt;p&gt;The agent may only need permission to perform one specific operation, but the tool behind that operation may expose much broader authority.&lt;/p&gt;

&lt;p&gt;I wanted to explore whether a small execution boundary could sit between the agent and the real system.&lt;/p&gt;

&lt;p&gt;That experiment became &lt;strong&gt;Guardian&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The basic idea
&lt;/h2&gt;

&lt;p&gt;Instead of:&lt;/p&gt;

&lt;p&gt;Agent → Tool → System&lt;/p&gt;

&lt;p&gt;the execution path becomes:&lt;/p&gt;

&lt;p&gt;Agent → Guardian → Controlled Effect + Evidence&lt;/p&gt;

&lt;p&gt;The agent proposes an intent.&lt;/p&gt;

&lt;p&gt;Guardian then:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;binds that intent to the current state;&lt;/li&gt;
&lt;li&gt;checks whether execution is eligible;&lt;/li&gt;
&lt;li&gt;dispatches a controlled effect;&lt;/li&gt;
&lt;li&gt;reports what can actually be proven about the result.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Core deliberately stays small:&lt;/p&gt;

&lt;p&gt;bind → gate → apply → result&lt;/p&gt;

&lt;p&gt;Guardian is not intended to decide what the agent should do.&lt;/p&gt;

&lt;p&gt;It is intended to constrain what happens when the agent is allowed to do something.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why put the boundary at execution time?
&lt;/h2&gt;

&lt;p&gt;Agent frameworks are becoming increasingly capable at planning, reasoning and selecting tools.&lt;/p&gt;

&lt;p&gt;But better reasoning does not necessarily reduce execution authority.&lt;/p&gt;

&lt;p&gt;An agent can make a perfectly reasonable decision and still invoke a tool whose credentials or API surface allow significantly more than the intended operation.&lt;/p&gt;

&lt;p&gt;So I wanted to separate two questions:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What does the agent want to do?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;from:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What exact effect should the system permit?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Guardian focuses on the second question.&lt;/p&gt;

&lt;h2&gt;
  
  
  Five properties I'm exploring
&lt;/h2&gt;

&lt;p&gt;The experiments so far have converged on five candidate properties:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Non-expandable authority&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Execution should not silently become broader than the approved intent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Fail-closed eligibility&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If the system cannot establish that execution is eligible, it should not dispatch the effect.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. State-bound execution&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Approval should be tied to the state that was actually inspected, rather than assuming the world has not changed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Intent-confined controlled effects&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The adapter performing the operation should expose the smallest practical mutation corresponding to the approved intent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Epistemic honesty with indeterminacy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If the system cannot prove what happened, the result should say that instead of converting uncertainty into success.&lt;/p&gt;

&lt;p&gt;These are currently engineering properties being explored, not formally verified guarantees.&lt;/p&gt;

&lt;h2&gt;
  
  
  Testing the idea across different domains
&lt;/h2&gt;

&lt;p&gt;I didn't want the design to exist only as an abstraction, so I tested the same small Core across different execution domains.&lt;/p&gt;

&lt;p&gt;So far there are four experimental domain proofs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Filesystem&lt;/li&gt;
&lt;li&gt;GitHub&lt;/li&gt;
&lt;li&gt;VPS/Dokploy&lt;/li&gt;
&lt;li&gt;Email&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Three are Core conformance adapters: Filesystem, GitHub and VPS/Dokploy.&lt;/p&gt;

&lt;p&gt;Email was built later as an independent fourth validation.&lt;/p&gt;

&lt;p&gt;The purpose wasn't to prove that Guardian is universal. It was to see whether the same execution-boundary idea survives contact with domains that have very different mutation semantics.&lt;/p&gt;

&lt;p&gt;That distinction matters.&lt;/p&gt;

&lt;p&gt;Filesystem writes have TOCTOU concerns.&lt;/p&gt;

&lt;p&gt;GitHub exposes useful native state preconditions such as SHAs.&lt;/p&gt;

&lt;p&gt;VPS deployment has different concurrency and backend semantics.&lt;/p&gt;

&lt;p&gt;Email has a fundamentally different problem: once a message is sent, the effect isn't something you simply roll back.&lt;/p&gt;

&lt;p&gt;A useful execution boundary has to acknowledge those differences instead of pretending they don't exist.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Guardian does NOT claim
&lt;/h2&gt;

&lt;p&gt;The project is experimental.&lt;/p&gt;

&lt;p&gt;It does not currently claim:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;formal verification;&lt;/li&gt;
&lt;li&gt;distributed exactly-once execution;&lt;/li&gt;
&lt;li&gt;universal agent safety;&lt;/li&gt;
&lt;li&gt;protection against malicious adapters;&lt;/li&gt;
&lt;li&gt;elimination of every concurrency race.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some domains provide stronger primitives than others, and the evidence returned by Guardian is deliberately allowed to represent uncertainty.&lt;/p&gt;

&lt;p&gt;I think that is preferable to reporting certainty the system doesn't actually possess.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this might fit
&lt;/h2&gt;

&lt;p&gt;The architecture I'm exploring looks roughly like this:&lt;/p&gt;

&lt;p&gt;AI Agent&lt;br&gt;
↓&lt;br&gt;
Tools / MCP&lt;br&gt;
↓&lt;br&gt;
Guardian&lt;br&gt;
↓&lt;br&gt;
Real Systems&lt;/p&gt;

&lt;p&gt;The agent can still use powerful capabilities.&lt;/p&gt;

&lt;p&gt;The idea is simply that &lt;strong&gt;capability does not automatically imply unrestricted authority&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The implementation is intentionally small because I'm trying to understand whether the execution boundary itself is useful before building a larger platform around it.&lt;/p&gt;

&lt;p&gt;The code and the four domain experiments are public here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/AndersonVitaease/memoryos-guardian-core" rel="noopener noreferrer"&gt;https://github.com/AndersonVitaease/memoryos-guardian-core&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm especially interested in criticism from people building AI agents, MCP servers, coding agents or agent infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Should this kind of safety boundary exist at execution time, or do you think these guarantees belong somewhere else in the agent stack?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>security</category>
      <category>mcp</category>
    </item>
  </channel>
</rss>
