<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Isolation on t0ul</title><link>https://t0ul.com/tags/isolation/</link><description>Recent content in Isolation on t0ul</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 03 Feb 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://t0ul.com/tags/isolation/index.xml" rel="self" type="application/rss+xml"/><item><title>The problem with running code</title><link>https://t0ul.com/blog/the-problem-with-running-code/</link><pubDate>Tue, 13 Jan 2026 00:00:00 +0000</pubDate><guid>https://t0ul.com/blog/the-problem-with-running-code/</guid><description>&lt;p&gt;&lt;em&gt;Part of my &lt;a href="https://t0ul.com/blog/the-plan/"&gt;AI Security Engineering&lt;/a&gt; series, a local email-to-calendar agent I build, then attack, then harden. If you have not set up the lab yet, start with &lt;a href="https://t0ul.com/blog/setting-up-the-lab/"&gt;Set up your lab&lt;/a&gt;. The lessons are &lt;a href="https://github.com/t0ul/ai-security-engineering"&gt;on GitHub&lt;/a&gt;, and the agent itself lives at &lt;a href="https://github.com/t0ul/emaildrop"&gt;t0ul/emaildrop&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="a-different-class-of-danger"&gt;A different class of danger&lt;/h2&gt;
&lt;p&gt;Everything in the first three parts was, in the end, survivable with ordinary care. The agent read untrusted mail, wrote a file nobody auto-imports, and when it reached the network it did so through a gate that checked the address. The worst a single failure could do was calendar a wrong event or leak one request, and each of those we closed.&lt;/p&gt;</description></item><item><title>The detonation chamber</title><link>https://t0ul.com/blog/the-detonation-chamber/</link><pubDate>Tue, 20 Jan 2026 00:00:00 +0000</pubDate><guid>https://t0ul.com/blog/the-detonation-chamber/</guid><description>&lt;p&gt;&lt;em&gt;Part of my &lt;a href="https://t0ul.com/blog/the-plan/"&gt;AI Security Engineering&lt;/a&gt; series, a local email-to-calendar agent I build, then attack, then harden. If you have not set up the lab yet, start with &lt;a href="https://t0ul.com/blog/setting-up-the-lab/"&gt;Set up your lab&lt;/a&gt;. The lessons are &lt;a href="https://github.com/t0ul/ai-security-engineering"&gt;on GitHub&lt;/a&gt;, and the agent itself lives at &lt;a href="https://github.com/t0ul/emaildrop"&gt;t0ul/emaildrop&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="run-it-where-it-cannot-reach-anything"&gt;Run it where it cannot reach anything&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://t0ul.com/blog/the-problem-with-running-code/"&gt;The last post&lt;/a&gt; ended on a command, produced by a model from an email, running on my machine as me. I argued there that you cannot make that safe by inspecting the command, because a shell has endless ways to spell an attack. The real answer is to stop inspecting and start isolating: run the code somewhere that contains nothing and connects to nothing, so that whatever the command turns out to be, it executes against an empty room.&lt;/p&gt;</description></item><item><title>Egress-deny and the one way out</title><link>https://t0ul.com/blog/egress-deny-and-the-broker/</link><pubDate>Tue, 27 Jan 2026 00:00:00 +0000</pubDate><guid>https://t0ul.com/blog/egress-deny-and-the-broker/</guid><description>&lt;p&gt;&lt;em&gt;Part of my &lt;a href="https://t0ul.com/blog/the-plan/"&gt;AI Security Engineering&lt;/a&gt; series, a local email-to-calendar agent I build, then attack, then harden. If you have not set up the lab yet, start with &lt;a href="https://t0ul.com/blog/setting-up-the-lab/"&gt;Set up your lab&lt;/a&gt;. The lessons are &lt;a href="https://github.com/t0ul/ai-security-engineering"&gt;on GitHub&lt;/a&gt;, and the agent itself lives at &lt;a href="https://github.com/t0ul/emaildrop"&gt;t0ul/emaildrop&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="safe-is-not-the-same-as-useful"&gt;Safe is not the same as useful&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://t0ul.com/blog/the-detonation-chamber/"&gt;The last post&lt;/a&gt; put untrusted code in a box with no network card, so a command from an email could run and reach nothing. That is safe, and it is also too absolute to be the final answer, because every so often a tool genuinely needs the network. The user asks what the weather is for an outdoor event, a tool needs to call a real API, and a chamber that can never reach anything cannot do that job. A box with no exits is secure the way a brick is secure.&lt;/p&gt;</description></item><item><title>No shell</title><link>https://t0ul.com/blog/no-shell/</link><pubDate>Tue, 03 Feb 2026 00:00:00 +0000</pubDate><guid>https://t0ul.com/blog/no-shell/</guid><description>&lt;p&gt;&lt;em&gt;Part of my &lt;a href="https://t0ul.com/blog/the-plan/"&gt;AI Security Engineering&lt;/a&gt; series, a local email-to-calendar agent I build, then attack, then harden. If you have not set up the lab yet, start with &lt;a href="https://t0ul.com/blog/setting-up-the-lab/"&gt;Set up your lab&lt;/a&gt;. The lessons are &lt;a href="https://github.com/t0ul/ai-security-engineering"&gt;on GitHub&lt;/a&gt;, and the agent itself lives at &lt;a href="https://github.com/t0ul/emaildrop"&gt;t0ul/emaildrop&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="the-hole-in-the-way-in"&gt;The hole in the way in&lt;/h2&gt;
&lt;p&gt;This chapter put untrusted code in &lt;a href="https://t0ul.com/blog/the-detonation-chamber/"&gt;a box with no network card&lt;/a&gt; and gave that box &lt;a href="https://t0ul.com/blog/egress-deny-and-the-broker/"&gt;one audited way out&lt;/a&gt;. Both are about what the code can reach once it is running. There is a hole left on the other side, in how the command gets into the box in the first place, and it is the oldest bug in computing wearing a new coat.&lt;/p&gt;</description></item></channel></rss>