<?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>Docker</title>
	<atom:link href="https://www.docker.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.docker.com</link>
	<description></description>
	<lastBuildDate>Tue, 08 Sep 2026 23:05:55 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.4</generator>

<image>
	<url>https://www.docker.com/app/uploads/2024/02/cropped-docker-logo-favicon-32x32.png</url>
	<title>Docker</title>
	<link>https://www.docker.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>6 Benefits of Sandbox Environments (and How Docker Sandboxes Delivers Them)</title>
		<link>https://www.docker.com/blog/benefits-of-sandbox-environments/</link>
		
		<dc:creator><![CDATA[Kevin Wittek]]></dc:creator>
		<pubDate>Tue, 08 Sep 2026 23:05:55 +0000</pubDate>
				<category><![CDATA[Products]]></category>
		<category><![CDATA[Agentic AI]]></category>
		<category><![CDATA[AI/ML]]></category>
		<category><![CDATA[Concepts]]></category>
		<category><![CDATA[Docker AI Governance]]></category>
		<category><![CDATA[Docker Sandboxes]]></category>
		<guid isPermaLink="false">https://www.docker.com/?p=93443</guid>

					<description><![CDATA[Learn about the key benefits of sandbox environments with Docker including isolation, definable controls, secrets credential handling, and more. ]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">In our <a href="https://www.docker.com/resources/the-state-of-agentic-ai-white-paper/" target="_blank" rel="noreferrer noopener" id="dkr_state-of-agentic-ai-report-93443">State of Agentic AI report</a>, 60% of organizations reported having AI agents running in production. Those agents install packages, run scripts, and call external services on their own, and much of that work now happens on <a href="https://www.docker.com/blog/your-laptop-is-the-new-production-environment/" target="_blank" rel="noreferrer noopener" id="dkr_developer-laptops-with-developer-credentials-93443">developer laptops, with developer credentials</a>. Running untrusted or experimental code directly on your machine has always carried risk, and handing that same machine to an <a href="https://www.docker.com/blog/what-are-ai-agents/" target="_blank" rel="noreferrer noopener" id="dkr_autonomous-agent-raises-the-stakes-93443">autonomous agent raises the stakes</a>.</p>



<p class="wp-block-paragraph">A sandbox environment gives code a separate, controlled space to run in, with limited access to the machine underneath and external systems. How strictly it holds that line depends on how the sandbox is built, which is where the differences between them start to matter.</p>



<p class="wp-block-paragraph">The benefits of sandbox environments are worth understanding on their own, and they compound when the thing running inside is an agent working unattended with<a href="https://www.docker.com/blog/what-is-yolo-mode/" target="_blank" rel="noreferrer noopener" id="dkr_-permissions-auto-approved-93443"> permissions auto-approved</a>. Below are six, from isolation and credential handling to the policy you enforce at runtime, and how Docker Sandboxes delivers each one.</p>




<div class="wp-block-ponyo-zeta organism toc-exclude">
    <blockquote class="container">
        		

    <h2 class="wp-block-ponyo-heading text-lg">
        Key takeaways
    </h2>

        

<ul class="wp-block-list">
<li>A sandbox gives you a hard isolation boundary, so untrusted code or autonomous agents run without access to the host machine.</li>



<li>Docker’s sandbox environments offer benefits like isolation, policy you control, safe credentials, disposability, a real Linux dev environment, and the same sandbox technology for every agent.</li>



<li>A sandbox enforces the network and filesystem policy you define at runtime, which is what makes it the enforcement point for governance.</li>



<li>For AI agents, these benefits combine into full autonomy inside a boundary that allows them to get work done, safely.</li>
</ul>


    </blockquote>
</div>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="2320" height="1218" src="https://www.docker.com/app/uploads/2026/09/docker_6-Benefits-of-Sandbox-Environments-2320x1218.jpg" alt="docker 6 Benefits of Sandbox Environments" class="wp-image-93447" title="- docker 6 Benefits of Sandbox Environments" srcset="https://www.docker.com/app/uploads/2026/09/docker_6-Benefits-of-Sandbox-Environments-2320x1218.jpg 2320w, https://www.docker.com/app/uploads/2026/09/docker_6-Benefits-of-Sandbox-Environments-1640x861.jpg 1640w, https://www.docker.com/app/uploads/2026/09/docker_6-Benefits-of-Sandbox-Environments-285x150.jpg 285w, https://www.docker.com/app/uploads/2026/09/docker_6-Benefits-of-Sandbox-Environments-1536x806.jpg 1536w, https://www.docker.com/app/uploads/2026/09/docker_6-Benefits-of-Sandbox-Environments-2048x1075.jpg 2048w, https://www.docker.com/app/uploads/2026/09/docker_6-Benefits-of-Sandbox-Environments-600x315.jpg 600w, https://www.docker.com/app/uploads/2026/09/docker_6-Benefits-of-Sandbox-Environments-250x131.jpg 250w, https://www.docker.com/app/uploads/2026/09/docker_6-Benefits-of-Sandbox-Environments-64x34.jpg 64w" sizes="(max-width: 1160px) 100vw, 1160px" /></figure>



<h2 class="wp-block-heading">1. Isolation</h2>



<p class="wp-block-paragraph">Everything in this list builds on isolation, and the strength of that boundary is what makes a sandbox trustworthy. For Docker Sandboxes, each sandbox runs in its own microVM: a lightweight virtual machine with its own Linux kernel, isolated from the host by a <a href="https://docs.docker.com/ai/sandboxes/security/isolation/" target="_blank" rel="noreferrer noopener nofollow" id="dkr_hardware-backed-hypervisor-boundary-93443">hardware-backed hypervisor boundary</a>. </p>



<p class="wp-block-paragraph">That boundary is the same kind of <a href="https://www.docker.com/blog/why-microvms-the-architecture-behind-docker-sandboxes/" target="_blank" rel="noreferrer noopener" id="dkr_isolation-a-full-virtual-machine-gives-you-93443">isolation a full virtual machine gives you</a>, and it&#8217;s what lets you hand an agent real freedom. Because a Docker sandbox runs its own kernel, a compromised or runaway agent can&#8217;t reach the host, other sandboxes, or anything outside its environment. If it tries to escape, it hits a wall. So an agent can install packages, pull untrusted dependencies, and run code unattended. But when something inside goes wrong, the damage stays in the sandbox and disappears when you discard it. That containment is what makes it safe to let an agent run at full speed.</p>



<figure class="wp-block-table is-style-stripes"><table class="has-fixed-layout"><tbody><tr><td><strong>ⓘ MicroVM vs. container isolation: </strong>A (Linux) container shares the host&#8217;s kernel, so its isolation depends on kernel-level controls. Note that when using Docker Desktop, in order to provide an environment for running Linux containers, you’re already using a VM for hosting containers, so they are isolated from the host OS. However, all containers still share the same kernel (the one of the Linux VM). Hence, you won’t have strong isolation between containers.</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">2. Network and filesystem controls you define</h2>



<p class="wp-block-paragraph">Isolation sets the outer wall. The controls you define decide what the workload can reach while inside it. Most sandboxes let you scope network and filesystem access to some degree: which domains and IP ranges the workload can reach, and which paths on the host, if any, it can read or write. How precisely you can express that policy varies between tools, and it&#8217;s worth checking before you commit, because broad-strokes rules leave gaps that an agent will eventually find.</p>



<p class="wp-block-paragraph">Docker Sandboxes lets you <a href="https://docs.docker.com/ai/sandboxes/security/defaults/" target="_blank" rel="noreferrer noopener nofollow" id="dkr_set-that-policy-per-sandbox-93443">set that policy per sandbox</a> and enforces it at the boundary at runtime, so the rules hold even when the code inside tries something you didn&#8217;t anticipate. The same controls that keep an experiment from making unauthorized outbound connections also shut down data exfiltration and block access to untrusted or malicious services. Restricting the filesystem keeps sensitive host paths, like SSH keys and cloud credentials, out of reach.</p>



<h2 class="wp-block-heading">3. Secure credential handling</h2>



<p class="wp-block-paragraph">Agents need credentials to do useful work: a token to push to a repo, an API key to call a service. The risk is that a credential sitting inside the environment can be <a href="https://www.docker.com/blog/coding-agent-horror-stories-the-29-million-secret-problem/" target="_blank" rel="noreferrer noopener" id="dkr_read-logged-or-leaked-by-whatever-runs-there-93443">read, logged, or leaked by whatever runs there</a>. Most sandboxes pass secrets in as environment variables or mounted files, which puts the value inside the boundary where the workload can read it, and so can anything the workload runs.</p>



<p class="wp-block-paragraph">Docker Sandboxes keeps credentials out of the environment entirely. They stay in the host keychain, and the sandbox <a href="https://docs.docker.com/ai/sandboxes/security/credentials/" target="_blank" rel="noreferrer noopener nofollow" id="dkr_injects-them-into-outbound-network-requests-at-the-boundary-93443">injects them into outbound network requests at the boundary</a>, so the workload gets the benefit of the credential while the value itself stays on the host. An agent that can&#8217;t read a secret also can&#8217;t exfiltrate it, write it to a log, or hand it off to a prompt-injected instruction. The credential does its job on the request path while the sensitive material stays under your control.</p>



<h2 class="wp-block-heading">4. Ephemeral, disposable environments you can recreate fast</h2>



<p class="wp-block-paragraph">A sandbox is quick to create and easy to throw away, so you can treat every one as disposable. When a task finishes, or <a href="https://www.docker.com/blog/coding-agent-horror-stories-the-agent-that-deleted-production/" target="_blank" rel="noreferrer noopener" id="dkr_when-an-agent-goes-off-the-rails-93443">when an agent goes off the rails</a>, you can delete the environment and everything inside goes with it, from installed packages to running processes to any changes the agent made to the system. But if your working directory is mounted from the host, the files the agent creates or edits there stay on your machine even after the environment is gone.</p>



<p class="wp-block-paragraph">The recreation side is just as valuable. Because a sandbox is <a href="https://docs.docker.com/ai/sandboxes/customize/templates/" target="_blank" rel="noreferrer noopener nofollow" id="dkr_defined-in-code-93443">defined in code</a>, you can spin up an identical environment on demand, configured the same way every time, down to the packages and settings. This is the infrastructure-as-code approach applied to your workspace: reproducible, versionable, and consistent across a team. For agents, disposability also unlocks parallelism. You can run several agents at once, each in its own fresh environment, and tear them all down when the work is done.</p>



<h2 class="wp-block-heading">5. A real Linux dev environment with a full Docker daemon</h2>



<p class="wp-block-paragraph">Isolation doesn&#8217;t have to mean a stripped-down box. A sandbox worth using gives the workload a real Linux environment with the tools a developer or an agent actually needs, so you can install packages, run services, start databases, and compile code inside the boundary. Environments vary widely in how complete they are, and a thin one pushes work back onto the host, which defeats the point of having a boundary at all.</p>



<p class="wp-block-paragraph">Docker Sandboxes includes <a href="https://docs.docker.com/ai/sandboxes/architecture/" target="_blank" rel="noreferrer noopener nofollow" id="dkr_a-full-docker-daemon-isolated-within-the-sandbox-93443">a full Docker daemon, isolated within the sandbox</a>, so an agent can build and run containers as part of its work with no path back to the host daemon. That&#8217;s a meaningful capability for agentic workflows, where a single task might involve building an image, running a test suite in a container, and tearing it all down. The environment behaves like a genuine machine, which is what makes it a viable place to do real work.</p>



<h2 class="wp-block-heading">6. The same sandbox technology for every agent</h2>



<p class="wp-block-paragraph">Developers will often move between agents. One task suits Claude Code, another suits <a href="https://docs.docker.com/ai/sandboxes/agents/" target="_blank" rel="noreferrer noopener nofollow" id="dkr_gemini-cli-copilot-cli-codex-kiro-or-opencode-93443">Gemini CLI, Copilot CLI, Codex, Kiro, or OpenCode</a>. If each agent brought its own isolation model, you&#8217;d be securing a different environment for every tool, and each vendor&#8217;s model could shift with a version bump.</p>



<p class="wp-block-paragraph">A single sandbox technology solves this by running every agent the same way, inside the same kind of isolated environment with the same policy engine. You define network, filesystem, and credential policy once, and it applies no matter which agent is doing the work. For a platform or security team, that consistency is what makes governance enforceable at scale: one boundary to reason about, one set of controls to audit, across every agent your developers adopt.</p>



<h3 class="wp-block-heading">Who gets the most from sandbox environments </h3>



<p class="wp-block-paragraph">The same six benefits pay off differently depending on your role.</p>



<ul class="wp-block-list">
<li><strong>Individual developers</strong></li>

<ul class="wp-block-list">
<li>You get freedom to experiment. You can try a risky dependency, run an unfamiliar tool, or let an agent work unattended, knowing the environment is contained and disposable. When something breaks, you delete it and start clean, and your machine is never in the blast radius.</li>
</ul>
</li>



<li><strong>Platform teams</strong></li>

<ul class="wp-block-list">
<li>You get consistency and control. A sandbox defined once gives every developer the same environment and the same policy, across whichever agents they use. That means less setup for your developers to think about and a single standard you can maintain centrally.</li>
</ul>
</li>



<li><strong>Security teams</strong></li>

<ul class="wp-block-list">
<li>You get containment and oversight. A sandbox limits what an agent can reach and gives you one boundary to monitor across every tool. You can approve agent adoption because the environment enforces your policy at runtime, which is the heart of <a href="https://www.docker.com/blog/how-to-secure-ai-agents/" target="_blank" rel="noreferrer noopener" id="dkr_securing-ai-agents-93443">securing AI agents</a> in production. Every environment is disposable, so there&#8217;s nothing persistent to compromise.</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">Why this matters for AI agents</h2>



<p class="wp-block-paragraph">Put the six together and you get the reason why sandboxes might <a href="https://www.docker.com/blog/why-ai-agents-need-isolation/" target="_blank" rel="noreferrer noopener" id="dkr_become-the-standard-way-to-run-agents-93443">become the standard way to run agents</a>. An agent needs autonomy to be useful. It has to install things, run code, and call services without a human approving each step. Autonomy on your host machine is dangerous, but put it inside a sandbox and it’s safe.</p>



<p class="wp-block-paragraph">Isolation contains what the agent can do, and the controls you define scope what it can reach. Credentials stay out of its hands, so a compromised agent has nothing to leak. When a run goes sideways, disposability lets you throw the environment out and start over in seconds. And a real Linux dev environment means the agent can do genuine work, and running every agent on one sandbox technology keeps all of this consistent no matter which tool your team reaches for. Together, these benefits let an agent operate at full speed while keeping the blast radius of any mistake close to zero.</p>



<h2 class="wp-block-heading">Run agents safely with Docker Sandboxes</h2>



<p class="wp-block-paragraph">These benefits depend on each other, and a gap in any one becomes the weak point a runaway agent finds first. Isolation without credential handling still leaks your secrets, and a dev environment you can&#8217;t tear down cleanly turns into a liability the first time an agent misbehaves.</p>



<p class="wp-block-paragraph">Running agents safely means delivering all six together, and that’s what Docker Sandboxes is built to do. Containment comes from microVM isolation, the controls are the network and filesystem policy you set, and credentials stay in the host keychain, injecting at the boundary so the agent never sees them. Environments are disposable and defined in code, the workspace is a real Linux system with a full Docker daemon, and the same sandbox technology runs every major coding agent the same way.</p>



<p class="wp-block-paragraph">And when you&#8217;re ready to run agents safely across a team, Docker AI Governance extends the same boundary into org-wide policy. You define network, filesystem, and tool-access rules once, govern which credentials a session can use, and apply it on every developer&#8217;s machine, with an audit trail security can defend.</p>



<p class="wp-block-paragraph"><a href="https://www.docker.com/products/docker-sandboxes/" id="dkr_get-started-with-docker-sandboxes-93443"><strong>Get started with Docker Sandboxes</strong></a> <strong>→ </strong></p>



<p class="wp-block-paragraph"><a href="https://www.docker.com/products/ai-governance/" id="dkr_explore-docker-ai-governance-93443"><strong>Explore Docker AI Governance</strong></a> <strong>→</strong></p>



<h2 class="wp-block-heading">Frequently asked questions</h2>




<div class="wp-block-ponyo-dominique organism">
    
    <div class="container faq-list">
        



<div class="fade-in wp-block-ponyo-frank">
    <h3 class="frank-heading">
        What is a sandbox environment used for?
        <span class="closed">    <svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 8v8m-4-4h8m6 0c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10z" stroke="var(--iconColor, black)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
</span>
        <span class="open">    <svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8 12h8m6 0c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10z" stroke="var(--iconColor, black)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
</span>
    </h3>
    <div class="content-outer">
    <div class="content-inner">
       

<p class="wp-block-paragraph">Sandboxes give coding agents and the code they run an isolated, disposable place to execute, fully separated from the host. The main use is running AI coding agents like Claude Code, Codex, or Gemini CLI unattended, letting them install packages, run services, and even run Docker inside the sandbox, and trying risky changes you&#8217;d rather keep off your machine.</p>


    </div>
    </div>
</div>




<div class="fade-in wp-block-ponyo-frank">
    <h3 class="frank-heading">
        What is the main benefit of a sandbox environment?
        <span class="closed">    <svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 8v8m-4-4h8m6 0c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10z" stroke="var(--iconColor, black)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
</span>
        <span class="open">    <svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8 12h8m6 0c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10z" stroke="var(--iconColor, black)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
</span>
    </h3>
    <div class="content-outer">
    <div class="content-inner">
       

<p class="wp-block-paragraph">Isolation. A sandbox keeps whatever runs inside from reaching the host, so a mistake, a malicious package, or a misbehaving agent stays contained.</p>


    </div>
    </div>
</div>




<div class="fade-in wp-block-ponyo-frank">
    <h3 class="frank-heading">
        Are sandbox environments only for security?
        <span class="closed">    <svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 8v8m-4-4h8m6 0c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10z" stroke="var(--iconColor, black)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
</span>
        <span class="open">    <svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8 12h8m6 0c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10z" stroke="var(--iconColor, black)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
</span>
    </h3>
    <div class="content-outer">
    <div class="content-inner">
       

<p class="wp-block-paragraph">No. Security is a major benefit, but sandboxes also improve reproducibility, speed up onboarding, and let developers and agents experiment freely, because the environment is disposable and defined in code.</p>


    </div>
    </div>
</div>




<div class="fade-in wp-block-ponyo-frank">
    <h3 class="frank-heading">
        Do sandbox environments slow developers down?
        <span class="closed">    <svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 8v8m-4-4h8m6 0c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10z" stroke="var(--iconColor, black)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
</span>
        <span class="open">    <svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8 12h8m6 0c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10z" stroke="var(--iconColor, black)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
</span>
    </h3>
    <div class="content-outer">
    <div class="content-inner">
       

<p class="wp-block-paragraph">They don&#8217;t have to. MicroVM-based sandboxes like Docker Sandboxes start in seconds and give you a full Linux environment right away, so isolation adds safety at very little cost to speed.</p>


    </div>
    </div>
</div>




<div class="fade-in wp-block-ponyo-frank">
    <h3 class="frank-heading">
        How do sandboxes help with AI agents?
        <span class="closed">    <svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 8v8m-4-4h8m6 0c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10z" stroke="var(--iconColor, black)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
</span>
        <span class="open">    <svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8 12h8m6 0c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10z" stroke="var(--iconColor, black)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
</span>
    </h3>
    <div class="content-outer">
    <div class="content-inner">
       

<p class="wp-block-paragraph">They let an agent run with full autonomy while containing what it can reach. Isolation limits the blast radius, the policy you define scopes access, and credential handling keeps secrets out of the agent&#8217;s hands.</p>


    </div>
    </div>
</div>

    </div>

</div>


<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>YOLO Mode: Agent Autonomy Without the Guardrails</title>
		<link>https://www.docker.com/blog/what-is-yolo-mode/</link>
		
		<dc:creator><![CDATA[Srini Sekaran]]></dc:creator>
		<pubDate>Thu, 03 Sep 2026 18:00:00 +0000</pubDate>
				<category><![CDATA[Products]]></category>
		<category><![CDATA[Agentic AI]]></category>
		<category><![CDATA[Concepts]]></category>
		<category><![CDATA[Docker AI Governance]]></category>
		<category><![CDATA[Docker Sandboxes]]></category>
		<category><![CDATA[security]]></category>
		<guid isPermaLink="false">https://www.docker.com/?p=93273</guid>

					<description><![CDATA[YOLO mode lets an AI agent run without asking permission. Learn what it is, why it's risky, and how to run it safely. ]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><a href="https://www.docker.com/blog/what-are-ai-agents/" target="_blank" rel="noreferrer noopener" id="dkr_ai-agents-93273">AI agents</a> have come a long way in both capability and everyday use since generative AI went mainstream in late 2022. In <a href="https://survey.stackoverflow.co/2025/ai" target="_blank" rel="noreferrer noopener nofollow" id="dkr_stack-overflows-2025-developer-survey-93273">Stack Overflow&#8217;s 2025 Developer Survey</a>, 84% of developers said they use or plan to use AI tools in their workflow, up from 76% a year earlier. As those tools shift from suggesting code to writing files and running commands on their own, one practical question follows. How much should an agent be allowed to do without stopping to ask? Turn that dial all the way up and you reach what developers call YOLO mode.</p>



<p class="wp-block-paragraph">It&#8217;s worth understanding YOLO mode before you enable it, because its main risk is easy to misread. The risk comes down to <em>where </em>an agent runs.  On your own machine, one mistaken command can delete  files, expose your credentials, and make network requests you may not want. Inside a proper boundary, however, developers can use agents in YOLO mode to unlock a new level of productivity, without jeopardizing security.</p>




<div class="wp-block-ponyo-zeta organism toc-exclude">
    <blockquote class="container">
        		

    <h2 class="wp-block-ponyo-heading text-lg">
        Key takeaways
    </h2>

        

<ul class="wp-block-list">
<li>YOLO mode is when an AI agent auto-approves every action, with no confirmation prompts.</li>



<li>It&#8217;s popular because it&#8217;s fast, and risky for the same reason. The danger isn&#8217;t the autonomy, it&#8217;s where the autonomy runs.</li>



<li>On your host, a bad command or prompt injection reaches real files and credentials. Inside an isolated sandbox, the blast radius is contained.</li>



<li>Run YOLO mode where it can&#8217;t do real damage, in an isolated, disposable environment with scoped access and no real secrets.</li>
</ul>


    </blockquote>
</div>





    <h2 class="wp-block-ponyo-heading text-lg">
        What is YOLO mode?
    </h2>



<p class="wp-block-paragraph">YOLO mode is the community nickname for running an AI agent with every action auto-approved. When turned on, agents can read files, write code, run shell commands, and call tools without stopping for user approval. While in Claude Code it&#8217;s the <a href="https://docs.claude.com/en/docs/claude-code/settings" target="_blank" rel="noreferrer noopener nofollow" id="dkr_--dangerously-skip-permissions-flag-93273">&#8211;dangerously-skip-permissions flag</a>, other common agents each have their own version of the same switch.</p>



<ul class="wp-block-list">
<li><strong>Codex CLI </strong>has `&#8211;full-auto`, plus `&#8211;dangerously-bypass-approvals-and-sandbox` when you drop the sandbox too.</li>



<li><strong>Gemini CLI </strong>uses `&#8211;yolo`, or the Ctrl+Y toggle mid-session.</li>



<li><strong>GitHub Copilot CLI </strong>has `&#8211;allow-all`, also aliased as `&#8211;yolo`.</li>



<li><strong>Cursor</strong> exposes it as auto-run in settings rather than a flag.</li>
</ul>



<p class="wp-block-paragraph">The names differ, but the behavior is the same: remove the prompts and let the agent go. </p>



<p class="wp-block-paragraph">YOLO mode showed up in Cursor first, then Claude Code, and by 2026 it&#8217;s a standard toggle in most coding agents. But when people ask what YOLO mode is, they&#8217;re usually asking whether they should use it, and the answer is that it depends entirely on where the agent is running.</p>



<h2 class="wp-block-heading">Why developers turn it on</h2>



<p class="wp-block-paragraph">On a regular task, a careful agent asks for permission constantly. “Can I edit this file, run this test, install this package, call this tool?” </p>



<p class="wp-block-paragraph">Dozens of prompts for one feature. While these constant permission requests can help prevent agents from going rogue, each approval forces you to context switch and breaks the flow that made the agent worth using. A few reasons why developers are leveraging YOLO mode include:</p>



<ul class="wp-block-list">
<li><strong>Context switching:</strong> Every approval pulls a developer out of their flow, taxing mental focus and overall productivity. </li>



<li><strong>Prompt fatigue:</strong> Excessive querying, refinement, and approvals force creative coding to take a back seat to tedious prompt wrangling and debugging.  </li>



<li><strong>Low-risk, routine work:</strong> Agents can often handle repetitive tasks that would otherwise take developers away from creative coding and innovation. </li>



<li><strong>Momentum:</strong> An agent is most useful when it has the freedom to keep moving, but a steady stream of prompts breaks that.</li>
</ul>



<p class="wp-block-paragraph">If you turn approvals off, these friction points disappear for the most part, and the agent can deliver the speed it promised. But what’s the cost of giving agents the autonomy of YOLO mode?</p>



<h2 class="wp-block-heading">Why is YOLO mode risky?</h2>



<p class="wp-block-paragraph">When you remove the prompts, you remove the last human check before an action runs, which amplifies the <a href="https://www.docker.com/blog/how-to-secure-ai-agents/" target="_blank" rel="noreferrer noopener" id="dkr_security-risks-agents-already-carry-93273">security risks agents already carry</a>. If the agent is working directly on your host, that action has the full run of your machine, including your files, environment variables, credentials, and network. A confused or compromised agent can do a significant amount of damage when nothing stands between an agent&#8217;s decision and your system.</p>



<p class="wp-block-paragraph">On an unprotected host, YOLO mode introduces risks such as:</p>



<ul class="wp-block-list">
<li><strong>Destructive commands:</strong> A vague or mistaken instruction <a href="https://www.docker.com/blog/coding-agent-horror-stories-the-rm-rf-incident/" target="_blank" rel="noreferrer noopener" id="dkr_runs-something-like-rm--rf--93273">runs something like rm -rf </a>against the wrong directory, and nothing pauses to catch it.</li>



<li><strong>Secret and credential exposure:</strong> The agent can read environment variables, .ssh keys, tokens, and .env files, then use or leak them.</li>



<li><strong>Prompt injection:</strong> The agent <a href="https://www.docker.com/blog/mcp-horror-stories-github-prompt-injection/" target="_blank" rel="noreferrer noopener" id="dkr_acts-on-whatever-it-reads-93273">acts on whatever it reads</a>, so a hidden instruction in a web page, an issue, a code comment, or a document can redirect it, and the attacker never needs access to your machine.</li>



<li><strong>Data exfiltration:</strong> A mistaken or hijacked agent sends sensitive data out over the network.</li>



<li><strong>Unintended broad changes:</strong> Edits and config changes reach past the task at hand into your other projects.</li>



<li><strong>Network and lateral reach:</strong> The agent can hit internal endpoints and outside services, or act with your credentials to push code and call APIs.</li>
</ul>



<p class="wp-block-paragraph">And unfortunately, keeping manual approvals on doesn’t remove all risk. Once permission fatigue kicks in, it can be all too easy to accidentally approve the wrong request. So the safeguard belongs in the environment the agent runs in, where a bad command or a tired click has a greatly reduced scope of impact.</p>



<h2 class="wp-block-heading">The fix isn&#8217;t fewer permissions, it&#8217;s a boundary</h2>



<p class="wp-block-paragraph">If prompts aren&#8217;t the answer, what is? A boundary the agent can&#8217;t cross. Guardrails only work when something outside the agent enforces them. The agent needs a bounding box, with constraints set before it runs and clear limits on what it can touch. Inside that box, it should be free to move as fast as it wants. The goal is to shape the environment so that a mistake can&#8217;t damage your systems or leak your secrets.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="2320" height="1218" src="https://www.docker.com/app/uploads/2026/08/docker_What-is-YOLO-mode-2320x1218.jpg" alt="Comparing YOLO mode with and without a sandboxed environment. " class="wp-image-93275" title="- docker What is YOLO mode" srcset="https://www.docker.com/app/uploads/2026/08/docker_What-is-YOLO-mode-2320x1218.jpg 2320w, https://www.docker.com/app/uploads/2026/08/docker_What-is-YOLO-mode-1640x861.jpg 1640w, https://www.docker.com/app/uploads/2026/08/docker_What-is-YOLO-mode-285x150.jpg 285w, https://www.docker.com/app/uploads/2026/08/docker_What-is-YOLO-mode-1536x806.jpg 1536w, https://www.docker.com/app/uploads/2026/08/docker_What-is-YOLO-mode-2048x1075.jpg 2048w, https://www.docker.com/app/uploads/2026/08/docker_What-is-YOLO-mode-600x315.jpg 600w, https://www.docker.com/app/uploads/2026/08/docker_What-is-YOLO-mode-250x131.jpg 250w, https://www.docker.com/app/uploads/2026/08/docker_What-is-YOLO-mode-64x34.jpg 64w" sizes="(max-width: 1160px) 100vw, 1160px" /></figure>



<p class="wp-block-paragraph">In practice, that means running the agent in an <a href="https://www.docker.com/blog/comparing-sandboxing-approaches-ai-agents/" target="_blank" rel="noreferrer noopener" id="dkr_isolated-ephemeral-environment-93273">isolated, ephemeral environment</a> instead of on your host. Done well, the agent gets a real place to work. It can install packages, run services, and edit files, but it can&#8217;t see your credentials, reach your other projects, or touch the host.</p>



<p class="wp-block-paragraph">Unlike a container that shares the host kernel, a <a href="https://www.docker.com/blog/why-microvms-the-architecture-behind-docker-sandboxes/" target="_blank" rel="noreferrer noopener" id="dkr_microvm-93273">microVM</a> puts a hardware-level boundary around the agent, so the isolation holds even if the agent tries to break out, and it does that without the speed penalty people expect. If a run goes sideways, you destroy the environment and start clean. This is the core idea behind sandbox security and <a href="https://www.docker.com/blog/why-ai-agents-need-isolation/" target="_blank" rel="noreferrer noopener" id="dkr_why-agents-need-isolation-93273">why agents need isolation</a> in the first place.</p>



<h2 class="wp-block-heading">What does YOLO mode look like at scale?</h2>



<p class="wp-block-paragraph">For one developer on a sandboxed laptop, YOLO mode is a personal choice. Across a team, it becomes a policy question. A hundred developers each deciding on their own when to skip permissions is the ungoverned-autonomy problem that keeps security leaders up at night. The picture that works at scale is one where the safe path is the default. Every agent runs inside an isolated, disposable environment, configured once at the organization level so it holds for everyone.</p>



<p class="wp-block-paragraph">This is the problem <a href="https://www.docker.com/blog/what-is-ai-governance/" target="_blank" rel="noreferrer noopener" id="dkr_ai-governance-93273">AI Governance</a> is built to solve. You define the rules once across the surfaces that matter, network access, the filesystem, and the tools an agent can reach, then enforce them automatically at every developer&#8217;s machine. Governance turns a per-developer judgment call into a consistent, repeatable capability. Clear boundaries are what let an organization extend autonomy to its agents while keeping the risk contained. Once the boundary is standard, YOLO mode is fast and safe for everyone.</p>



<h2 class="wp-block-heading">What it unlocks for developers</h2>



<p class="wp-block-paragraph">Once the boundary is in place, the developer can stop supervising every step, and the payoff kicks in:</p>



<ul class="wp-block-list">
<li><strong>Deep focus:</strong> Give direction, step away, and come back to a cloned repo, passing tests, and an open pull request. No interruptions pulling you off your own work.</li>



<li><strong>Long, autonomous runs:</strong> The agent edits, runs the tests, reads the failures, and retries until the task is done, the kind of run a wall of prompts would stall.</li>



<li><strong>Agents in parallel:</strong> Point several at different tasks, each in its own disposable environment, and let them run at once.</li>



<li><strong>You review the outcome:</strong> Your job moves up to the pull request, the tests, and the diff, where your judgment matters most.</li>
</ul>



<p class="wp-block-paragraph">That&#8217;s the real appeal, and the sandbox is what makes it safe to lean on.</p>



<h2 class="wp-block-heading">Unlock agent autonomy, safely</h2>



<p class="wp-block-paragraph">YOLO mode is really a question in disguise. How much autonomy can you give an agent before the risk outweighs the speed? Framed that way, the answer stops being about the agent and starts being about its environment. Give an agent the run of your laptop and even a small mistake is expensive. But give it a boundary it can&#8217;t cross and you get the speed with almost none of the exposure.</p>



<p class="wp-block-paragraph">That&#8217;s exactly what Docker Sandboxes is built for. Each agent runs in its own disposable microVM with control over networking, filesystem access, and resource limits, so you can <a href="https://www.docker.com/blog/docker-sandboxes-run-agents-in-yolo-mode-safely/" target="_blank" rel="noreferrer noopener" id="dkr_run-agents-in-yolo-mode-safely-93273">run agents in YOLO mode safely</a> from day one. For teams that want those boundaries applied consistently rather than agent by agent, Docker AI Governance sets and enforces the rules everywhere developers work. Define the box. Then let the agent go as fast as it likes.</p>



<p class="wp-block-paragraph"><a href="https://www.docker.com/products/docker-sandboxes/" id="dkr_get-started-with-docker-sandboxes-93273"><strong>Get started with Docker Sandboxes</strong></a> <strong>→ </strong></p>



<p class="wp-block-paragraph"><a href="https://www.docker.com/products/ai-governance/" id="dkr_explore-docker-ai-governance-93273"><strong>Explore Docker AI Governance</strong></a> <strong>→</strong></p>



<h2 class="wp-block-heading">Frequently asked questions</h2>




<div class="wp-block-ponyo-dominique organism">
    
    <div class="container faq-list">
        



<div class="fade-in wp-block-ponyo-frank">
    <h3 class="frank-heading">
        Is YOLO mode safe?
        <span class="closed">    <svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 8v8m-4-4h8m6 0c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10z" stroke="var(--iconColor, black)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
</span>
        <span class="open">    <svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8 12h8m6 0c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10z" stroke="var(--iconColor, black)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
</span>
    </h3>
    <div class="content-outer">
    <div class="content-inner">
       

<p class="wp-block-paragraph">It depends entirely on where the agent runs. On your host machine, YOLO mode is risky, because a mistake or a prompt injection can reach your files and credentials. Inside an isolated, disposable environment with scoped access and no real secrets, the blast radius is contained and YOLO mode is reasonable to use.</p>


    </div>
    </div>
</div>




<div class="fade-in wp-block-ponyo-frank">
    <h3 class="frank-heading">
        What does &#8211;dangerously-skip-permissions do in Claude Code?
        <span class="closed">    <svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 8v8m-4-4h8m6 0c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10z" stroke="var(--iconColor, black)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
</span>
        <span class="open">    <svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8 12h8m6 0c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10z" stroke="var(--iconColor, black)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
</span>
    </h3>
    <div class="content-outer">
    <div class="content-inner">
       

<p class="wp-block-paragraph">It turns off the confirmation prompts, so Claude Code reads, writes, runs commands, and calls tools without asking for approval at each step. It trades the safety of human review for speed. It&#8217;s the most common way people run Claude Code in YOLO mode.</p>


    </div>
    </div>
</div>




<div class="fade-in wp-block-ponyo-frank">
    <h3 class="frank-heading">
        How do I use YOLO mode safely?
        <span class="closed">    <svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 8v8m-4-4h8m6 0c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10z" stroke="var(--iconColor, black)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
</span>
        <span class="open">    <svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8 12h8m6 0c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10z" stroke="var(--iconColor, black)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
</span>
    </h3>
    <div class="content-outer">
    <div class="content-inner">
       

<p class="wp-block-paragraph">Run the agent inside an isolated sandbox rather than on your main machine, give it scoped network access and throwaway credentials instead of your real ones, work against a cloned or disposable copy of your project, and keep a way to inspect what it did. The goal is a boundary the agent can&#8217;t cross, not a more careful set of prompts.</p>


    </div>
    </div>
</div>




<div class="fade-in wp-block-ponyo-frank">
    <h3 class="frank-heading">
        Is auto mode the same as YOLO mode?
        <span class="closed">    <svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 8v8m-4-4h8m6 0c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10z" stroke="var(--iconColor, black)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
</span>
        <span class="open">    <svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8 12h8m6 0c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10z" stroke="var(--iconColor, black)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
</span>
    </h3>
    <div class="content-outer">
    <div class="content-inner">
       

<p class="wp-block-paragraph">Not exactly. Full YOLO mode approves everything. Some tools now offer a classifier-gated auto mode that runs safe actions automatically while still blocking or flagging dangerous ones. That&#8217;s a useful middle ground, but it&#8217;s a filter on top of the agent, not a boundary around it. Isolation still matters.</p>


    </div>
    </div>
</div>

    </div>

</div>


<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Building Reproducible AI Evaluation Workflows with Docker Sandboxes</title>
		<link>https://www.docker.com/blog/building-reproducible-ai-evaluation-workflows-with-docker-sandboxes/</link>
		
		<dc:creator><![CDATA[Jennifer Kohl]]></dc:creator>
		<pubDate>Wed, 02 Sep 2026 13:00:00 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[AI Agent]]></category>
		<category><![CDATA[AI/ML]]></category>
		<category><![CDATA[Docker Sandboxes]]></category>
		<category><![CDATA[GenAI]]></category>
		<guid isPermaLink="false">https://www.docker.com/?p=93401</guid>

					<description><![CDATA[Learn how Docker Sandboxes can make AI evaluation workflows more reproducible with consistent execution, structured artifacts, and runtime evidence.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">AI evaluation has never been easier to start. Reproducing it reliably is another story. Developers now have access to more benchmarks, evaluation libraries, model APIs, and agent frameworks than ever before. But keeping the prompt, model, and scoring method fixed doesn&#8217;t necessarily make a run reproducible. The execution environment matters too.</p>



<p class="wp-block-paragraph">Python dependencies change. Local tools drift. Setup steps go undocumented. A workflow that succeeds on one machine may behave differently on another. Most discussions about evaluation focus on <em>what</em> should be measured: benchmarks, scoring methods, or judge models. Much less attention is given to <em>how</em> those evaluations are executed. Yet that execution layer often determines whether someone else can reproduce the same workflow weeks or months later.</p>



<p class="wp-block-paragraph">When I started exploring Docker Sandboxes, I wasn&#8217;t trying to build another evaluation framework. I had a much smaller question.</p>



<figure class="wp-block-pullquote"><blockquote><p><strong>Could Docker Sandboxes and an SBX Kit make evaluation workflows easier to rerun, inspect, and compare?</strong></p></blockquote></figure>



<p class="wp-block-paragraph">That question eventually became the <a href="https://github.com/karanverma/sbx-ai-eval-kit" id="dkr_sbx-ai-evaluation-kit-93401" rel="nofollow noopener" target="_blank"><strong>SBX AI Evaluation Kit</strong></a><strong>,</strong> an open-source Docker Sandboxes Mixin Kit focused on repeatable execution, structured evaluation records, and runtime evidence. The current <em>implementation </em>does not execute AI models or automatically derive evaluation judgments. Instead, it executes configured commands consistently and preserves evidence of what actually ran.</p>



<h2 class="wp-block-heading">In Practice</h2>



<p class="wp-block-paragraph">In practice, the workflow starts by choosing where the evaluation command should run through the <code>execution</code> block:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: yaml; gutter: false; title: ; notranslate">
execution:
  executor: sbx
  command:
    - python3
    - -c
    - print(&quot;hello from sbx&quot;)

</pre></div>


<p class="wp-block-paragraph">With <code>executor: sbx</code>, the runner delegates command execution to Docker Sandboxes and writes the runtime evidence into the resulting artifact.</p>



<p class="wp-block-paragraph">The repository is also packaged as an SBX Mixin Kit, so it can be applied when starting a Claude sandbox:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sbx run claude --kit .
</pre></div>


<p class="wp-block-paragraph">The runner reads the configured executor and delegates the command to SBX, which executes it inside the sandbox:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
python run_evaluation.py

</pre></div>


<h2 class="wp-block-heading">From Documentation to an Executable Workflow</h2>



<p class="wp-block-paragraph">Each evaluation is defined in a YAML file that describes the evaluation and the command to run. The repository validates that definition, executes it, and produces a structured JSON record of the result. The difference is in what gets recorded. A written evaluation captures what someone intended to do. An execution-backed evaluation captures what actually happened.</p>



<h2 class="wp-block-heading">Separating Evaluation from Execution</h2>



<p class="wp-block-paragraph">I wanted the evaluation definition to stay independent of where it ran. A workflow written during local development shouldn&#8217;t need to change simply because it later executes inside Docker Sandboxes.</p>



<p class="wp-block-paragraph">To keep those concerns separate, I introduced an executor abstraction. <strong>The evaluation describes what should run; the executor determines where it runs.</strong></p>



<p class="wp-block-paragraph">With the local executor, the configured command runs on the host. With the SBX executor, command execution is delegated to Docker Sandboxes. Switching between the two only requires changing the executor configuration, not rewriting the surrounding evaluation workflow.</p>





<div class="wp-block-ponyo-image">
                <img decoding="async" width="1536" height="1024" src="https://www.docker.com/app/uploads/2026/09/image1.png" class="fade-in" alt="image1" srcset="https://www.docker.com/app/uploads/2026/09/image1.png 1536w, https://www.docker.com/app/uploads/2026/09/image1-600x400.png 600w, https://www.docker.com/app/uploads/2026/09/image1-250x167.png 250w, https://www.docker.com/app/uploads/2026/09/image1-64x43.png 64w" sizes="(max-width: 1536px) 100vw, 1536px" title="- image1">
        </div>



<p class="wp-block-paragraph"><em>Figure 1. Evaluation definitions remain independent of the execution environment. The same workflow can use either the local or SBX executor while producing runtime evidence in the same structure.</em></p>



<h2 class="wp-block-heading">Capturing Evidence Instead of Assumptions</h2>



<p class="wp-block-paragraph">For each execution, the runner records enough information to inspect what actually happened:</p>



<ul class="wp-block-list">
<li>the selected executor,</li>



<li>the command that was executed,</li>



<li>standard output (<code>stdout</code>) and standard error (<code>stderr</code>),</li>



<li>the exit code,</li>



<li>and the execution time.</li>
</ul>



<p class="wp-block-paragraph">These details are stored in the evaluation artifact. The repository also generates a digest of the evaluation configuration. This creates a deterministic link between the evaluation configuration and the artifact it produced, without trying to replace full experiment-tracking systems.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; gutter: false; title: ; notranslate">
{
  &quot;executor&quot;: &quot;sbx&quot;,
  &quot;command&quot;: &#x5B;&quot;python3&quot;, &quot;-c&quot;, &quot;print(\&quot;hello from sbx\&quot;)&quot;],
  &quot;stdout&quot;: &quot;hello from sbx\n&quot;,
  &quot;stderr&quot;: &quot;&quot;,
  &quot;exit_code&quot;: 0,
  &quot;duration_ms&quot;: 120.0
}

</pre></div>


<h2 class="wp-block-heading">Scaling from One Evaluation to Many</h2>



<p class="wp-block-paragraph">Real-world evaluation rarely consists of one isolated run. Teams compare prompts, validate behavior, measure regressions between releases, and test multiple scenarios. That led to evaluation suites.</p>



<p class="wp-block-paragraph">Rather than changing how an individual evaluation works, a suite groups multiple evaluation definitions into a single repeatable workflow. Each evaluation still produces its own structured artifact, while the suite also generates an aggregated summary of the overall run.</p>



<h2 class="wp-block-heading">Reusable SBX Kits Beyond Evaluation</h2>



<p class="wp-block-paragraph">The same pattern isn&#8217;t limited to evaluation. An SBX Kit can package more than a development environment; it can also package the setup an engineering workflow depends on. The same model could support regression testing, policy checks, security analysis, code-generation experiments, and other workflows that depend on consistent execution and inspectable results.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">The SBX AI Evaluation Kit doesn&#8217;t replace evaluation frameworks, benchmarks, or scoring systems. Its job is narrower: execute configured evaluation workflows in a way that is easier to rerun and inspect.</p>



<p class="wp-block-paragraph">The question I came away with is simple: before comparing benchmark scores or choosing a judge model, can someone else reliably run the same workflow under comparable conditions?</p>



<p class="wp-block-paragraph">You can explore the code, experiment with custom evaluation YAMLs, and run the workflow yourself in the<a href="https://github.com/karanverma/sbx-ai-eval-kit" id="dkr_-sbx-ai-eval-kit-repository-on-github-93401" rel="nofollow noopener" target="_blank"> sbx-ai-eval-kit repository on GitHub</a>.</p>



<h2 class="wp-block-heading">Resources</h2>



<ul class="wp-block-list">
<li><a href="https://github.com/karanverma/sbx-ai-eval-kit" id="dkr_sbx-ai-evaluation-kit-93401-2" rel="nofollow noopener" target="_blank"><strong>SBX AI Evaluation Kit</strong></a> &#8211; Source code, example evaluation definitions, and the implementation described in this article.</li>



<li><a href="https://docs.docker.com/ai/sandboxes/" id="dkr_docker-sandboxes-documentation-93401" rel="nofollow noopener" target="_blank"><strong>Docker Sandboxes documentation</strong></a> &#8211; Official documentation for setting up and running Docker Sandboxes.</li>



<li><a href="https://docs.docker.com/ai/sandboxes/customize/kits/" id="dkr_customizing-docker-sandboxes-with-kits-93401" rel="nofollow noopener" target="_blank"><strong>Customizing Docker Sandboxes with Kits</strong></a> &#8211; Official documentation for extending Docker Sandboxes with reusable Kits.</li>
</ul>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Below the Harness: Governing a Multi-Model, Multi-Harness World</title>
		<link>https://www.docker.com/blog/below-the-harness-governing-a-multi-model-multi-harness-world/</link>
		
		<dc:creator><![CDATA[Srini Sekaran]]></dc:creator>
		<pubDate>Wed, 02 Sep 2026 13:00:00 +0000</pubDate>
				<category><![CDATA[Company]]></category>
		<category><![CDATA[AI/ML]]></category>
		<guid isPermaLink="false">https://www.docker.com/?p=93294</guid>

					<description><![CDATA[We believe the future is a multi-model, multi-harness world. And we think it needs a new trust model. In 1988, Norm Hardy described a problem that had been quietly breaking systems for years: the confused deputy. A program that takes action using its permissions instead of yours. Today, every AI agent is that deputy. It...]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>We believe the future is a multi-model, multi-harness world. And we think it needs a new trust model.</em></p>



<p class="wp-block-paragraph">In 1988, Norm Hardy described a <a href="https://css.csail.mit.edu/6.858/2015/readings/confused-deputy.html" id="dkr_problem-93294" rel="nofollow noopener" target="_blank">problem</a> that had been quietly breaking systems for years: the confused deputy. A program that takes action using its permissions instead of yours.</p>



<p class="wp-block-paragraph">Today, every AI agent is that deputy. It inherits your authority: Your credentials, your repo access, your ability to call APIs. But its behavior is probabilistic. It might be acting on an instruction found in its environment, on a step it invented, or on a confident wrong answer. </p>



<p class="wp-block-paragraph">The industry didn’t fix the confused deputy problem by making the deputy itself more careful. They fixed it by moving its authority a layer away. Forty years on, that&#8217;s still the answer.</p>





    <h2 class="wp-block-ponyo-heading text-lg">
        Everyone is converging on the same future
    </h2>



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



<p class="wp-block-paragraph">Three facts are pushing the industry toward the same conclusion.</p>



<ol class="wp-block-list">
<li><strong>Agents are expensive loops.</strong> An agent takes many steps, and you pay for every token of every one. We all can agree that it makes no economic sense to call the latest frontier model for simple tasks. </li>



<li><strong>The leader of frontier capability changes often.</strong> We’re all aware that the top model of the day (and its vendor) changes every couple of months.</li>



<li><strong>Your workflows may need custom models.</strong> Many teams are recognizing that intelligence is commodifying and the differentiator is custom models, derived from custom context.</li>
</ol>



<p class="wp-block-paragraph">As a result, all of us are quickly ending up with a portfolio of multiple models across multiple harnesses. </p>



<p class="wp-block-paragraph">A similar convergence is happening one layer up. Developers pick certain tools for the right task, the way they always have. For example, perhaps Claude Code for long refactors, Codex for daily work, Hermes for quick scripts. </p>



<p class="wp-block-paragraph">It’s reasonable to expect the future of work to be multi-model and multi-harness.</p>





    <h2 class="wp-block-ponyo-heading text-lg">
        Which makes trust the defining question
    </h2>



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



<p class="wp-block-paragraph">A lot of agents work the same way. </p>



<p class="wp-block-paragraph">They read material that is often out of our control: support tickets, web pages, documentation, and code written by strangers. But they act with authority you granted: your credentials, repo access, production APIs, and the open internet. And they usually do both from a developer&#8217;s laptop, outside typical security guardrails like VPCs and IAM.</p>



<p class="wp-block-paragraph">Private data and the ability to act autonomously, together, is what makes an agent worth deploying. Your deputy needs the ability to execute in order to be useful. Which means the interesting question is no longer which model is best. It’s what happens when one of these deputies is wrong, or manipulated.</p>





    <h2 class="wp-block-ponyo-heading text-lg">
        Per-harness guardrails break down
    </h2>



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



<p class="wp-block-paragraph">The obvious answer is that each harness ships its own guardrails. Many do. But relied on as your security boundary, they fail in three ways.</p>



<ol class="wp-block-list">
<li><strong>The agent talks past them.</strong> Guardrails inside the harness are enforced in the same loop the agent is running. Deny it a git push and it reaches for the API. Deny the API and it opens a gist. Deny the gist and it tucks the data into a channel you trust and never inspect. Researchers showed last year that a single <a href="https://www.docker.com/blog/mcp-horror-stories-github-prompt-injection/" id="dkr_malicious-issue-filed-in-a-public-github-repo-93294">malicious issue filed in a public GitHub repo</a> could steer a coding agent into reading a company&#8217;s private repositories and publishing the contents in a pull request the agent opened itself. Nothing was hacked since every step used the agent&#8217;s own legitimate access, through a channel everyone trusts. A boundary the agent can negotiate with is not a boundary.<br></li>



<li><strong>The rails move without you.</strong> Most harness&#8217;s isolation models are closed source and ship on their vendor&#8217;s schedule. The major coding agents have each revised their default sandbox and approval behavior several times in the past year alone. Updates to sandboxing models should be treated as a security event. Multiply this by ten harnesses and your security posture is, at any moment, whatever is the patchwork of your half dozen vendors’ measures.<br></li>



<li><strong>The rails don&#8217;t cover the fleet.</strong> The custom agent your platform team built has exactly the guardrails your platform team wrote. The agent inside your support SaaS has whatever its vendor chose, and most expose no isolation controls to you at all. Every new harness means building or auditing governance again, from scratch, differently. You end up with a dozen implementations that drift apart, each blind to the others&#8217; traffic, with no single place to set a rule and no single record to understand why something went wrong.</li>
</ol>



<p class="wp-block-paragraph">Safety cannot depend on the agent making the right decision, or on someone else&#8217;s release schedule.</p>





    <h2 class="wp-block-ponyo-heading text-lg">
        A layer below
    </h2>



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



<p class="wp-block-paragraph">So here is what we believe. The future is multi-model and multi-agent. And given that future, we believe every organization will need a layer below: a runtime layer, <em>below the harness</em>, that all of them run on top of.</p>



<p class="wp-block-paragraph">The reasoning is straightforward. Strip away the model, the vendor, and the framework, and an agent has two ways to affect anything. It runs code, which touches files and opens network connections. Or it calls a tool, which acts on a system. Everything an agent does travels one of those paths. And both paths cross the same surface: the runtime, where processes execute, credentials get used, and requests leave the machine. Every agent passes through it, no matter which model powers it, which vendor shipped it, or whether you built it yourself. That makes it the one place where rules you define can be enforced across all your agents. It is also the same fix as 1988, applied to today&#8217;s deputy: the authority sits a layer away.</p>



<p class="wp-block-paragraph">Put enforcement there and each of the three failure scenarios we spoke about flips around.</p>



<p class="wp-block-paragraph"><strong>Your agents can&#8217;t talk past themselves.</strong> The boundary for an agent sits outside the loop the agent is running, so it holds steady no matter if the model is with you, hallucinating, or compromised. A hard neutral boundary at the runtime is more effective than a prompt-level boundary the agent creates for itself.</p>



<p class="wp-block-paragraph"><strong>The rails stop moving randomly.</strong> Policy is yours, written once, covering execution, tool calls, credentials, and spend. Now, a model or agent vendor making an update won’t randomly change your security posture.</p>



<p class="wp-block-paragraph"><strong>The rails cover your whole fleet.</strong> A policy you write up will apply to every harness. And every action, by all your agents, lands in one record: what ran, what it touched, which rule decided. </p>



<p class="wp-block-paragraph">This is what lets you be nuanced about agents. Without a boundary below your harnesses, you have three bad options: block agents completely, allow all of them and hope for the best, or wedge a manual approval into every step and give up the productivity you wanted.</p>



<p class="wp-block-paragraph">A boundary at the runtime gives you a fourth option. When consequences are bounded even if an agent goes off the rails, you can start granting it true autonomy, which is the goal.</p>



<p class="wp-block-paragraph">We expect models to keep changing and new harnesses to land in all of our toolkits. That part is healthy. The boundary underneath them is the part that should hold steady.</p>



<p class="wp-block-paragraph"><em>At We Are Developers in San Jose, Tushar Jain, Docker&#8217;s CTO, will talk more about this world: multiple models, multiple harnesses, and a single runtime under it all.</em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Secure by default is your only way forward</title>
		<link>https://www.docker.com/blog/secure-by-default-is-your-only-way-forward/</link>
		
		<dc:creator><![CDATA[Vishrut Iyengar]]></dc:creator>
		<pubDate>Mon, 31 Aug 2026 13:00:00 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Enterprise]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Solutions]]></category>
		<category><![CDATA[security]]></category>
		<guid isPermaLink="false">https://www.docker.com/?p=93270</guid>

					<description><![CDATA[The newest worker on your team builds with whatever it finds and never asks what deserves your trust. Our answer is a hardened foundation and a boundary built for agents.]]></description>
										<content:encoded><![CDATA[





<p class="wp-block-paragraph">Every worker a company employs, be it a person or a program, builds on a foundation someone else assembled, and that includes the newest hire on your team. This new hire got to work the moment they arrived, building with what your company already has in place and they’re shipping code at a pace your reviews can’t keep up with. Also, everything they make is going out under your name. If it were a human, they’d spend the first week asking where things live and who maintains what. This one never asks. It treats everything it finds as trustworthy, so everything it builds carries that unexamined trust forward. And because this new hire is an agent that&#8217;s working all night at machine-class throughput, the foundational problems that used to surface slowly now surface all at once.</p>





    <h2 class="wp-block-ponyo-heading text-lg">
        <strong>The foundation that nobody audited</strong>
    </h2>



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



<p class="wp-block-paragraph">The line between a supply chain attack and an AI attack no longer exists. Take a look at what the average foundation holds, because most of it comes from outside the company. For a long time now, public base images have carried hundreds of packages that your application never uses. Every one of those packages adds to the attack surface. Almost none of them ever get reviewed because no team has time to read code it didn’t choose and doesn’t use. In most stacks, something like a ten-year-old Java service is keeping the business running on software whose maintainers stopped patching years ago. Platform teams have been coping in their own ways, usually with a golden-image program somebody built years ago and a scanner pointed at it all. Because the images underneath are so bloated, that scanner cries wolf about four hundred times a week. All of this together is why audit season now eats up most of a quarter.</p>



<p class="wp-block-paragraph">Attackers know all of this, and they’ve been working on the foundation layer all year. They’ve poisoned packages and developer tools, and they’ve had real success harvesting coding-assistant credentials at scale. Most foundations were built for a world that no longer exists.</p>





    <h2 class="wp-block-ponyo-heading text-lg">
        What a good foundation takes
    </h2>



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



<p class="wp-block-paragraph">The good news is that none of this is unsolvable. A foundation can be strengthened to carry what’s now being built on top of it. It has to meet a few requirements, and each one depends on who does the security work, because when the vendor doesn’t, your team picks up the slack. A foundation holds when every part of it is built from source by someone who signs the work and stands behind it. Nothing should ship that your application doesn’t need, because anything extra adds surface area to defend later. Patching needs the same treatment because new vulnerabilities keep landing no matter how clean an image starts. A fix should come with contractual backing and a date. You should know exactly what’s inside every image the day it ships. And none of this should force you to move your stack onto a different distribution just to get safer images. A migration like that becomes a quarter-long project in its own right, and the foundation can’t protect anything until the move is complete.</p>



<p class="wp-block-paragraph">This is exactly what <a href="https://www.docker.com/products/hardened-images/" id="dkr_docker-hardened-images-93270">Docker Hardened Images</a> were built for. They stay compatible with the Alpine and Debian images teams already run, so adoption amounts to a one-line change to the FROM line in your Dockerfile, with no migration project attached. The images are also minimal by design, carrying only what your application needs, which reduces the attack surface by up to 95% and leaves near-zero critical and high CVEs from day one. The difference is immediately visible in scanning. Scans complete much faster with low noise, and the few findings that do remain are worth directing the team’s attention to. When a CVE does get disclosed, the remediated image is available within seven days of the upstream fix, and what once consumed a sprint of engineering time closes as a pull request. The same evidence carries through to audits, which most organizations will eventually face. Every hardened image ships with a signed SBOM (Software Bill of Materials) and build provenance, a verifiable record of the image’s contents and build process. You present auditors with proof that already exists, and no one needs to spend weeks reconstructing it.</p>



<p class="wp-block-paragraph">Furthermore, a hardened base image by itself may not be enough, because minimal images almost always need customization before they fit production workflows. Teams add their own CA certificates and init scripts, install additional system packages through apt and apk, or adopt separate products entirely to cover what the base image cannot, fragmenting their foundation across vendors. That’s usually where a hardened foundation breaks down, because customizing an image invalidates the provenance and the SBOM, and with them the assurances you paid for. Not with Docker.</p>



<p class="wp-block-paragraph">Hardened system packages give everything you add the same built-from-source treatment, ensure your customizations run through the same hardened pipeline, and keep the guarantees intact, with the SLA still behind them. With Docker, the entire foundation stays within a single ecosystem.</p>



<p class="wp-block-paragraph">One thing stays inevitable no matter how well you do all of this. The software you depend on will eventually go unsupported upstream, and without coverage, the security patches stop, and the compliance answers get harder every quarter. <a href="https://www.docker.com/products/hardened-images/" id="dkr_extended-lifecycle-support-93270">Extended Lifecycle Support</a> closes that gap with commercially backed patches for up to five years past end of life, so the move to whatever comes next happens on your timeline and your terms, instead of upstream’s. That is what a solid foundation looks like, and it has never mattered more, because your newest employee, the agent, is stress-testing what everyone before it built.</p>





    <h1 class="wp-block-ponyo-heading text-lg">
        The new layer
    </h1>



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



<p class="wp-block-paragraph">Agents build on this foundation the same way every human before them has, and the trust it carries passes into what they build. But there’s a new reality now. Agents have created a new layer on top, and it matters almost as much as the foundation itself. They pull packages from the foundation and wire tools together, running what they build as soon as it exists. They’re also non-deterministic and ephemeral. The same task can go differently every run, and the agent session that did the work no longer exists by the time anyone comes back with questions.</p>



<p class="wp-block-paragraph">Every control in the standard stack was built for a human worker, one with a permanent identity and a predictable pace, whose work can be reviewed before it ships. Agents have none of those traits. The market’s first response was to ask for human permission before every agent action, and when the prompts got too cumbersome, teams moved to isolating agents. That created its own gap because the endpoint tools meant to watch the work sit on the host, and the more you isolate the agent, the less those tools see. There has never been a control surface built for a workflow like this, and retrofitting the old parts leaves teams stuck between prompt fatigue and blind spots.</p>



<p class="wp-block-paragraph">So Docker built the missing layer, one that adds to your defense in depth without replacing anything you already run. At Docker, every agent session runs in its own disposable, MicroVM-based <a href="https://www.docker.com/products/docker-sandboxes/" id="dkr_docker-sandbox-93270">Docker Sandbox</a>. The sandbox walls the agent off from the host at the operating-system level. Credentials get proxied in for the task at hand and never stored inside, and you decide what gets piped in and out of the box. Our own security team has blocked coding agents on the host outright and runs them in sandboxes with full autonomy, several at a time. An infostealer that lands in one of those boxes finds nothing to grab. Call it YOLO mode with guardrails.</p>



<p class="wp-block-paragraph">The tools agents reach for are the next layer, built on the same foundation. Agents interact with the outside world through MCP (Model Context Protocol) servers, connectors that let them call external tools and access data. An agent grabbing connectors off the open internet is the package problem all over again. So Docker ships hardened MCP servers through the same catalog as the hardened images, built and signed the same way. The <a href="https://www.docker.com/products/mcp-catalog-and-toolkit/" id="dkr_mcp-catalog-and-toolkit-93270">MCP Catalog and Toolkit</a> give your teams one trusted place to find and run them. Every tool call routes through the MCP Gateway, where it is authenticated, authorized, and logged before reaching the external system. That turns enforcement from advisory to strict. </p>



<p class="wp-block-paragraph"><a href="https://www.docker.com/products/docker-scout/" id="dkr_docker-scout-93270">Docker Scout</a> enforces the policy at build time, so the secure path remains the default without anyone having to police it by hand. And where the box sits stops mattering, whether it&#8217;s a laptop or the cloud, because the boundary travels with the work, as Docker containers always have.</p>





    <h2 class="wp-block-ponyo-heading text-lg">
        The winning playbook already exists
    </h2>



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



<p class="wp-block-paragraph">Docker wrote this playbook the first time. In the 2010s, software pulled in parts its builders didn’t control, and shipping outpaced review. Slowing down was never on the table, so Docker packaged the application and its dependencies into one portable, isolated unit, and speed and safety started pulling in the same direction. That bet is a large part of how the modern software supply chain took shape, and now we’re making it again for agents. One foundation and one boundary serve people and agents on the same supply chain, under the same policy. Security gets quieter, and development gets faster. There’s no separate AI security program to buy. Docker has been making the case that <a href="https://www.docker.com/blog/security-is-a-developer-experience-problem-rooted-in-our-foundations/" id="dkr_security-is-a-developer-experience-problem-93270">security is a developer experience problem</a> from the start.</p>





    <h1 class="wp-block-ponyo-heading text-lg">
        See it live in San Jose
    </h1>



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



<p class="wp-block-paragraph">We’re bringing all of it to <a href="https://www.wearedevelopers.com/world-congress-north-america" id="dkr_wearedevelopers-world-congress-93270" rel="nofollow noopener" target="_blank">WeAreDevelopers World Congress</a> in San Jose, September 23 to 25. Docker’s CISO Mark Lechner will take the stage with <strong>One boundary for the agentic era</strong>, the boundary his own team lives inside, and the Docker Zone will run live demos all three days.</p>





    <h3 class="wp-block-ponyo-heading text-lg">
        The newest hire starts Monday either way. What will you have ready for them to build on?
    </h3>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Moving from Minimus to Docker Hardened Images</title>
		<link>https://www.docker.com/blog/moving-from-minimus-to-docker-hardened-images/</link>
		
		<dc:creator><![CDATA[Vishrut Iyengar]]></dc:creator>
		<pubDate>Tue, 25 Aug 2026 22:27:06 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Enterprise]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Solutions]]></category>
		<category><![CDATA[Docker Hardened Images]]></category>
		<guid isPermaLink="false">https://www.docker.com/?p=93146</guid>

					<description><![CDATA[The Minimus registry goes offline on October 22. Here is the migration path, the free help Docker is offering, and where to start.]]></description>
										<content:encoded><![CDATA[





<p class="wp-block-paragraph">The hardened-images space gets better when more people are working on the problem, and Minimus has been a valuable part of that work. That changed this week, when they announced they are ending operations. Though we were competitors, we both believed strongly in the importance of reducing vulnerabilities at the foundation of the software supply chain. Their efforts to bring needed awareness to this challenge will be missed, and our thoughts go out to Minimus employees who are impacted by this decision.</p>



<p class="wp-block-paragraph">While the human side of this story deserves the most attention, there’s also a practical side: if you’re a customer running Minimus images in production, you’re now facing a migration you didn’t plan for. <a href="https://www.minimus.io/" id="dkr_their-notice-93146" rel="nofollow noopener" target="_blank">Their notice</a> commits to a 60-day maintenance window, with images receiving upstream updates until the registry goes offline on October 22, 2026. Images already pulled will keep running after that date, but no further updates will ship to them, and any new CVE stays unpatched from that point on.</p>



<p class="wp-block-paragraph">If you need a hand, Docker is offering free migration assistance to Minimus customers. Write to <a href="mailto:minimus@docker.com" id="dkr_minimusdockercom-93146">minimus@docker.com</a> to walk through your specific image list, your compliance requirements, or questions around your migration plans, and a technical migration expert will get back to you. You don&#8217;t need a sales call to start migrating to DHI today.</p>



<p class="wp-block-paragraph">Docker’s free, open source catalog is available to everyone under Apache 2.0, allows production use, and has no user caps. The migration is about as easy as these things get, a drop-in with minimal workflow changes. It’s more of a swap than a rebuild. It&#8217;s easy to find your images&#8217; equivalents in the DHI catalog, and for most of your services, the whole change is updating the FROM line. Use the <a href="https://docs.docker.com/dhi/migration/" id="dkr_migration-guide-93146" rel="nofollow noopener" target="_blank">migration guide</a> for the step-by-step process and the <a href="https://docs.docker.com/dhi/migration/checklist/" id="dkr_checklist-93146" rel="nofollow noopener" target="_blank">checklist</a> to track each image through the swap and verification. The <a href="https://docs.docker.com/dhi/migration/examples/" id="dkr_worked-examples-93146" rel="nofollow noopener" target="_blank">worked examples</a> show full migrations end to end, and <a href="https://docs.docker.com/dhi/migration/migrate-with-ai/" id="dkr_gordon-93146" rel="nofollow noopener" target="_blank">Gordon</a>, Docker&#8217;s AI assistant, runs the first pass with you.</p>



<p class="wp-block-paragraph">Whether you decide to migrate to Docker or somewhere else, we recommend you start that process now, while the maintenance window keeps your current images patched. You can browse the full DHI catalog on <a href="https://hub.docker.com/" id="dkr_docker-hub-93146" rel="nofollow noopener" target="_blank">Docker Hub</a>, make the first swap, and, of course, reach out to us if you need help.</p>



<h2 class="wp-block-heading">Docker Hardened Images</h2>



<p class="wp-block-paragraph"><a href="https://www.docker.com/products/hardened-images/" id="dkr_docker-hardened-images-93146">Docker Hardened Images</a> are minimal, hardened images built from source and continuously maintained by Docker. The catalog covers 4,000+ images, compatible with Alpine and Debian, so your Dockerfiles and CI keep working as they are. Every image ships near-zero CVEs with full, unsuppressed CVE visibility, and each carries a complete SBOM, SLSA Build Level 3 provenance, and cryptographic signatures. Docker manages the full lifecycle of your image, and teams moving from standard public images see up to 95% CVE reduction and up to 90% attack-surface reduction. Paid tiers add SLA-backed remediation, FIPS and STIG variants, customizations, and up to five years of coverage for versions past end of life.</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>MinIO End of Life: How to Stay Patched and Audit-Ready with Docker ELS</title>
		<link>https://www.docker.com/blog/minio-end-of-life-how-to-stay-patched-and-audit-ready-with-docker-els/</link>
		
		<dc:creator><![CDATA[Vishrut Iyengar]]></dc:creator>
		<pubDate>Mon, 24 Aug 2026 13:00:00 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Enterprise]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Solutions]]></category>
		<guid isPermaLink="false">https://www.docker.com/?p=93028</guid>

					<description><![CDATA[MinIO reached end of life in February 2026. Docker Extended Lifecycle Support (ELS) keeps end-of-life software like it patched, compliant, and audit-ready for up to five years, covering versions upstream no longer supports all the way up to entire projects.]]></description>
										<content:encoded><![CDATA[





<p class="wp-block-paragraph"><em>MinIO reached end of life in February 2026. Docker Extended Lifecycle Support (ELS) keeps end-of-life software like it patched, compliant, and audit-ready for up to five years, covering versions upstream no longer supports all the way up to entire projects.</em></p>



<p class="wp-block-paragraph">On February 13, 2026, the MinIO open-source project was archived upstream. A project with <a href="https://www.min.io/press/minio-surpasses-one-billion-cumulative-docker-downloads-as-business-surges" id="dkr_more-than-a-billion-docker-pulls-93028" rel="nofollow noopener" target="_blank">more than a billion Docker pulls</a> stopped shipping releases, bug fixes, and security patches overnight. From that day forward, every environment running MinIO is exposed. New CVEs in MinIO and its Go dependency tree now arrive with no upstream patch behind them, and an audit reads that as unsupported software in production.</p>



<p class="wp-block-paragraph">And MinIO is only the newest instance of a wider problem. Black Duck&#8217;s <a href="https://www.blackduck.com/blog/open-source-trends-ossra-report.html" id="dkr_2026-open-source-security-and-risk-analysis-report-93028" rel="nofollow noopener" target="_blank">2026 Open Source Security and Risk Analysis report</a> found that 93% of commercial codebases carry components with no development activity in at least two years. The same pattern runs across the stack. Node 18, Python 3.8, and older Airflow releases still run in production long after upstream support ended, and frameworks like FedRAMP, DORA, and the Cyber Resilience Act treat unpatched end-of-life software as an audit finding. The migration deadline ends up set by the audit calendar instead of the roadmap.</p>



<p class="wp-block-paragraph"><a href="https://www.docker.com/products/hardened-images/" id="dkr_docker-hardened-images-93028">Docker Hardened Images</a> Extended Lifecycle Support exists to hand that schedule back to you. The model is simple. Request an ELS image, and Docker builds and maintains it for up to five years past upstream end of life. The maintained MinIO image is the newest proof of that model.</p>





    <h2 class="wp-block-ponyo-heading text-lg">
        <strong>MinIO lives on as the newest ELS update</strong><br><br>
    </h2>



<p class="wp-block-paragraph">The archive lands on the storage layer, where migrations are measured in petabytes. Moving a production object store to a different system is slow, expensive work, and the CVE exposure keeps growing while that work runs.</p>



<p class="wp-block-paragraph">Teams running MinIO have three options</p>



<ol class="wp-block-list">
<li>Move to a commercial replacement and take on new licensing and lock-in.</li>



<li>Carry the patches yourself, which means staffing sustained Go security engineering for a project that no longer ships fixes.</li>



<li>Keep what you run and put a vendor on the hook for it. </li>
</ol>



<p class="wp-block-paragraph">Doing nothing is not a fourth option. </p>



<p class="wp-block-paragraph">Docker identified the archive as a live exposure across its customers&#8217; software supply chains and built the answer into the catalog, where MinIO lives on as a maintained, hardened image. Docker tracks new CVEs across MinIO and its full Go dependency graph, transitive dependencies included at no extra cost, then backports the fixes, rebuilds, and ships. Your object store stays supported and your audits stay clean.</p>





    <h2 class="wp-block-ponyo-heading text-lg">
        Extended Lifecycle Support for your whole fleet
    </h2>



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



<p class="wp-block-paragraph">What ELS does for MinIO, it does for any end-of-life component you need to keep. An EOL finding forces a choice between two bad projects. Rush the migration and risk breaking production, or file the exception and watch the list grow every quarter. ELS removes that deadline. Patches and audit evidence keep flowing on the images already in production while the migration happens on the roadmap&#8217;s schedule.</p>



<p class="wp-block-paragraph">The entitlement is built for how end of life actually arrives, on staggered dates across a fleet. Applied to a repository, it covers every available ELS version there. When one migration completes, you re-point it at the next repository, and the coverage moves with the risk.</p>



<p class="wp-block-paragraph">Coverage is not limited to a fixed list either. Docker watches the end-of-life calendar and builds ahead of it, and anything you don&#8217;t see in the catalog, you can request. The span runs from end-of-life versions of supported software all the way up to entire archived projects. Nginx, Node, and Python ELS images are already there.</p>



<p class="wp-block-paragraph">ELS is a paid add-on to a Docker Hardened Images subscription, and it runs on the same rails as the rest of DHI:</p>



<ul class="wp-block-list">
<li><strong>Name it, get it. </strong>Tell Docker the end-of-life line your production depends on. Docker builds it hardened and maintains it at the line&#8217;s newest patch version.</li>



<li><strong>Adopt without a migration. </strong>ELS-tagged images appear in the standard DHI catalog alongside LTS tags. Same registry, same workflow, a FROM-line change.</li>



<li><strong>Stay patched for years. </strong>Critical and high-severity CVEs are patched on a 14-day SLA, for up to five years past end of life.</li>



<li><strong>Evidence included. </strong>Every ELS image holds the same standard as the rest of the catalog. Built from source and signed, with SBOMs, VEX statements, and SLSA Build Level 3 provenance maintained for the life of the image.</li>
</ul>



<p class="wp-block-paragraph">Those attestations are the difference between extended support and an extended liability. A legacy app with a giant SBOM and no exploitability data just lights up your scanners. ELS ships the evidence with the image, so auditors see signed proof of what&#8217;s patched and what&#8217;s not exploitable.</p>



<p class="wp-block-paragraph">If there&#8217;s a version in your fleet you can&#8217;t migrate off and can&#8217;t leave unpatched, that&#8217;s an ELS conversation. Browse the <a href="https://hub.docker.com/hardened-images/catalog" id="dkr_dhi-catalog-93028" rel="nofollow noopener" target="_blank">DHI catalog</a> to see what&#8217;s already covered, and talk to us about the versions you need to keep alive. </p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Running AI agents in GitHub Actions with Docker Sandboxes</title>
		<link>https://www.docker.com/blog/running-ai-agents-in-github-actions-with-docker-sandboxes/</link>
		
		<dc:creator><![CDATA[Jennifer Kohl]]></dc:creator>
		<pubDate>Fri, 21 Aug 2026 13:00:00 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[AI Agent]]></category>
		<category><![CDATA[Docker Sandboxes]]></category>
		<guid isPermaLink="false">https://www.docker.com/?p=92832</guid>

					<description><![CDATA[Run AI agents in GitHub Actions with Docker Sandboxes. See how isolated agents can run Testcontainers tests, fix code, and open draft pull requests.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">In July 2026, <a href="https://github.com/github/gh-aw" id="dkr_github-agentic-workflows-92832" rel="nofollow noopener" target="_blank">GitHub Agentic Workflows</a> added <a href="https://github.github.com/gh-aw/reference/agent-runtimes/#docker-sbx" id="dkr_docker-sandboxes-as-a-supported-agent-runtime-92832" rel="nofollow noopener" target="_blank">Docker Sandboxes as a supported agent runtime</a>. It means that in your CI an AI coding agent can have broad control of its environment, including being able to run Docker containers, while the environment itself is isolated in a microVM with a network policy and secrets injection like the current best practices for AI isolation advice. </p>



<p class="wp-block-paragraph">Agentic isolation matters because useful coding agents do more than read a repository and suggest a patch. They install tools, run arbitrary shell commands, execute project code, start databases, and occasionally discover surprising new meanings for the word &#8220;cleanup.&#8221; Those capabilities make the agent useful, and direct access to a CI runner gives every mistake a larger blast radius.</p>



<p class="wp-block-paragraph">Now, with sbx integrated, the boundary for the Agent is a disposable environment with substantial freedom inside and narrow access to everything outside it.</p>



<p class="wp-block-paragraph">I put together a <a href="https://github.com/shelajev/docker-sandbox-gh-aw-demo" id="dkr_small-example-92832" rel="nofollow noopener" target="_blank">small example</a> to see what that looks like in practice. The agent runs on a GitHub-hosted Ubuntu runner, enters a Docker Sandbox (sbx), runs a Java integration test suite with PostgreSQL using Testcontainers, finds an intentionally seeded bug, fixes it, and opens a draft pull request. The Github Agentic Workflows offers the integration out-of-the-box, so the setup requires zero custom configuration for actions.</p>



<h2 class="wp-block-heading">What are GitHub Agentic Workflows?</h2>



<p class="wp-block-paragraph"><a href="https://docs.github.com/actions" id="dkr_github-actions-92832" rel="nofollow noopener" target="_blank">GitHub Actions</a> remains the CI system. It schedules the job, provides the Ubuntu runner, manages permissions and secrets, and records the result.</p>



<p class="wp-block-paragraph">GitHub Agentic Workflows, usually shortened to <code>gh-aw</code>, is an open-source GitHub CLI extension and compiler. You describe an agentic workflow in a Markdown file that combines execution configuration in YAML frontmatter with the agent&#8217;s task in the body. Running <code>gh aw compile</code> turns that source into a conventional GitHub Actions workflow with a <code>.lock.yml</code> suffix.</p>



<p class="wp-block-paragraph">The relationship looks like this:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
Markdown workflow
    |
    | gh aw compile
    v
Generated GitHub Actions .lock.yml
    |
    | runs on ubuntu-24.04
    v
Docker Sandbox microVM
    |
    v
Copilot agent and its tools

</pre></div>


<p class="wp-block-paragraph"><code>docker-sbx</code> belongs to <code>gh-aw</code>&#8216;s agent runtime configuration. The <code>runs-on</code> field still selects <code>ubuntu-24.04</code>, and the compiled file is a standard GitHub Actions workflow. It installs the sandbox tooling, authenticates it, checks the runner, starts the agent in the sandbox, and cleans everything up afterward.</p>



<p class="wp-block-paragraph">That integration <a href="https://github.com/github/gh-aw/pull/45006" id="dkr_landed-in-gh-aw-92832" rel="nofollow noopener" target="_blank">landed in gh-aw</a> and shipped in version 0.82.9.</p>



<h2 class="wp-block-heading">Configuring sbx in GitHub Actions</h2>



<p class="wp-block-paragraph">Here is the configuration from the sample&#8217;s <a href="https://github.com/shelajev/docker-sandbox-gh-aw-demo/blob/main/.github/workflows/sandbox-explorer.md" id="dkr_sandbox-explorermd-92832" rel="nofollow noopener" target="_blank">sandbox-explorer.md</a>:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
---
name: &quot;Docker Sandboxes sample: exploratory test&quot;

on:
  workflow_dispatch:

runs-on: ubuntu-24.04

permissions:
  contents: read
  copilot-requests: write

engine: copilot

network:
  allowed:
    - defaults
    - github
    - containers
    - java

sandbox:
  agent:
    id: awf
    runtime: docker-sbx
    sudo: true

tools:
  edit:
  bash: &#x5B;&quot;:*&quot;]

safe-outputs:
  create-pull-request:
    title-prefix: &quot;&#x5B;docker-sbx sample] &quot;
    draft: true
    protected-files: blocked
    allowed-files:
      - &quot;src/**&quot;
---

</pre></div>


<p class="wp-block-paragraph">The three lines under <code>sandbox.agent</code> select the Docker Sandbox runtime. Inside it, the agent has the <code>sudo</code> and unrestricted shell access needed to build the application and start its test infrastructure.</p>



<p class="wp-block-paragraph">Outside the sandbox, the workflow keeps a much smaller surface. Its <code>network</code> block allowlists the destinations this job needs, while the agent&#8217;s GitHub token can read repository contents and send requests to Copilot. Pull request creation happens in a separate safe-output job whose patch may contain files only under <code>src/**</code>.</p>



<p class="wp-block-paragraph">How much autonomy a CI agent should receive depends on the job. For this one, the split is useful: broad shell access inside the sandbox, small network and repository surfaces outside it, and a draft PR that still expects human review.</p>



<h2 class="wp-block-heading">The isolation boundary is a micro VM</h2>



<p class="wp-block-paragraph">While it&#8217;s common to assume that &#8220;Docker&#8221; implies a single application container, this setup actually uses a microVM as the primary isolation boundary.</p>



<p class="wp-block-paragraph">With <a href="https://docs.docker.com/ai/sandboxes/architecture/" id="dkr_sbx-92832" rel="nofollow noopener" target="_blank">sbx</a>, every sandbox is a dedicated environment with its own kernel, filesystem, and network stack. Most importantly, it runs its own private Docker daemon. This means the agent gets full root privileges inside the VM without ever gaining control over the host&#8217;s Docker daemon. The only bridge between them is the explicit shared workspace of the repository.</p>



<p class="wp-block-paragraph">Having a private daemon is a game-changer for integration testing. In this demo, the app runs Testcontainers exactly as a developer would on their local machine. The resulting structure looks like this:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
GitHub Actions runner
└── Docker Sandbox microVM
    ├── GitHub Agentic Workflows agent
    └── Private Docker daemon
        ├── Maven / Java 21 container
        └── PostgreSQL Testcontainers container

</pre></div>


<p class="wp-block-paragraph">To keep the environment clean, the test launcher runs Maven inside a pinned container, passing the sandbox&#8217;s Docker socket through so it can talk to the private daemon:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
docker run --rm \
  --add-host=host.testcontainers.internal:host-gateway \
  -e TESTCONTAINERS_HOST_OVERRIDE=host.testcontainers.internal \
  -v &quot;$PWD:/workspace&quot; \
  -w /workspace \
  -v /var/run/docker.sock:/var/run/docker.sock \
  maven:3.9.9-eclipse-temurin-21@sha256:3a4ab3276a087bf276f79cae96b1af04f53731bec53fb2e651aca79e4b10211e \
  mvn --batch-mode &quot;$@&quot; test

</pre></div>


<p class="wp-block-paragraph">Testcontainers then uses that socket to spin up the PostgreSQL database. It sounds like a lot of layers—a container running a build that starts another container, all inside a microVM on a CI runner but each layer serves a specific purpose in ensuring the agent remains isolated yet fully capable.</p>



<h2 class="wp-block-heading">Giving the agent a defect worth finding</h2>



<p class="wp-block-paragraph">The sample is a small Java 21 registration service. Its requirements say that email addresses are case-insensitive. The seeded implementation stores them as provided and relies on PostgreSQL&#8217;s case-sensitive unique constraint. An existing Testcontainers integration test catches exact duplicates but says nothing about the latter case.</p>



<p class="wp-block-paragraph">The Markdown portion of the workflow asks the agent to inspect the requirement and code, run the baseline suite, and add a test for two addresses that differ only in case. If the invariant fails, the agent should make the smallest source correction. Before touching the application, it records <code>uname</code>, Docker version, Docker information, and a tiny Alpine container run, leaving specific evidence in the workflow log about where the work executed.</p>



<p class="wp-block-paragraph">The task itself is plain Markdown beneath the frontmatter in the yaml file. The important part for us (after some commands for recording the environment for debugging) is:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
Act as a bounded exploratory tester for this repository.
... 

Then:
1. Read `REQUIREMENTS.md` and the relevant source and test files.
2. Run `./scripts/test-in-docker.sh` without changing anything.
3. Add a PostgreSQL Testcontainers test that checks registration of two
   addresses that differ only in letter case.
4. Run the focused test and explain the observed behavior.
5. If the implementation violates the documented invariant, make the
   smallest fix under `src/`.
6. Run the complete test suite again.
7. Create one draft pull request containing the regression test and fix.

</pre></div>


<p class="wp-block-paragraph">And the prompt level guardrails to suggest the correct behavior: </p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
Do not modify dependency manifests, workflow files, scripts, documentation,
or generated files. Do not weaken or delete existing tests. Include the
commands run and their results in the pull request description.

</pre></div>


<p class="wp-block-paragraph">The real run of course followed that path: its baseline passed, then the new case-variation test failed with:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
expected: &amp;lt;false&amp;gt; but was: &amp;lt;true&amp;gt;
</pre></div>


<p class="wp-block-paragraph">The agent normalized the email before inserting it, reran the complete suite, and got two passing integration tests.</p>



<p class="wp-block-paragraph">The log reported Docker client and server version 29.7.1 with the <code>default</code> context. It is the correct Docker version currently in the sbx default sandbox template. This is the sandbox&#8217;s private daemon, the one Testcontainers library used to launch PostgreSQL for the integration tests. </p>



<figure class="wp-block-image size-full"><img decoding="async" width="1440" height="670" src="https://www.docker.com/app/uploads/2026/08/image2-1.png" alt="image2 1" class="wp-image-92833" title="- image2 1" srcset="https://www.docker.com/app/uploads/2026/08/image2-1.png 1440w, https://www.docker.com/app/uploads/2026/08/image2-1-600x279.png 600w, https://www.docker.com/app/uploads/2026/08/image2-1-250x116.png 250w, https://www.docker.com/app/uploads/2026/08/image2-1-64x30.png 64w" sizes="(max-width: 1440px) 100vw, 1440px" /></figure>



<p class="wp-block-paragraph"><em>The complete workflow passed on GitHub&#8217;s hosted <code>ubuntu-24.04</code> runner. The </em><a href="https://github.com/shelajev/docker-sandbox-gh-aw-demo/actions/runs/31590806747" id="dkr_run-92832" rel="nofollow noopener" target="_blank"><em>run</em></a><em> took 11 minutes and 16 seconds.</em></p>



<p class="wp-block-paragraph">The safe-output job then opened a draft PR containing exactly two files under <code>src/**</code>: the regression test and the one-line normalization fix. Workflow configuration, scripts, dependencies, and documentation were outside its allowed patch surface.</p>





<div class="wp-block-ponyo-image">
                <img decoding="async" width="1440" height="1600" src="https://www.docker.com/app/uploads/2026/08/image1-2.png" class="fade-in" alt="image1 2" srcset="https://www.docker.com/app/uploads/2026/08/image1-2.png 1440w, https://www.docker.com/app/uploads/2026/08/image1-2-1382x1536.png 1382w, https://www.docker.com/app/uploads/2026/08/image1-2-600x667.png 600w, https://www.docker.com/app/uploads/2026/08/image1-2-250x278.png 250w, https://www.docker.com/app/uploads/2026/08/image1-2-64x71.png 64w" sizes="(max-width: 1440px) 100vw, 1440px" title="- image1 2">
        </div>



<p class="wp-block-paragraph"><em>The generated </em><a href="https://github.com/shelajev/docker-sandbox-gh-aw-demo/pull/1" id="dkr_draft-pull-request-92832" rel="nofollow noopener" target="_blank"><em>draft pull request</em></a><em> stayed inside the declared source-only boundary.</em></p>



<h2 class="wp-block-heading">Running the workflow yourself</h2>



<p class="wp-block-paragraph">Start by installing the <code>gh-aw</code>:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
gh extension install github/gh-aw

</pre></div>


<p class="wp-block-paragraph">The compiled Docker Sandbox runtime needs Docker credentials to authenticate and pull its sandbox template. Add <code>DOCKER_USERNAME</code> and <code>DOCKER_PAT</code> under the sample repository&#8217;s <strong>Settings &gt; Secrets and variables &gt; Actions</strong>, or let the GitHub CLI prompt for both values:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
gh secret set DOCKER_USERNAME
gh secret set DOCKER_PAT

</pre></div>


<p class="wp-block-paragraph">The repository&#8217;s Copilot entitlement and <code>copilot-requests: write</code> were sufficient for the successful sample. Repositories without that entitlement can use a supported <code>COPILOT_GITHUB_TOKEN</code> secret as documented by <code>gh-aw</code>.</p>



<p class="wp-block-paragraph">Also enable <strong>Allow GitHub Actions to create and approve pull requests</strong> in the repository&#8217;s Actions settings. Then compile the Markdown source and commit both the source and generated workflow:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
gh aw compile sandbox-explorer

git add .github/workflows/sandbox-explorer.md \
  .github/workflows/sandbox-explorer.lock.yml
git commit -m &quot;Compile Docker Sandboxes sample workflow&quot;
git push

</pre></div>


<p class="wp-block-paragraph">The <code>.lock.yml</code> is generated code. Changes belong in the Markdown source, followed by another compile.</p>



<p class="wp-block-paragraph">Finally, start the workflow and watch it:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
gh aw run sandbox-explorer
gh run watch

</pre></div>


<p class="wp-block-paragraph">The sample works on GitHub&#8217;s hosted <code>ubuntu-24.04</code> runner as committed. A self-hosted Linux runner needs an appropriate KVM-capable setup, plus the Docker and system access required by Docker Sandboxes.</p>



<h2 class="wp-block-heading">Try sbx on your laptop</h2>



<p class="wp-block-paragraph">Support for isolating your agents in CI is fantastic, but the easiest way to understand Docker Sandboxes is to put one around an agent on a local project. Follow the <a href="https://docs.docker.com/ai/sandboxes/" id="dkr_docker-sandboxes-setup-92832" rel="nofollow noopener" target="_blank">Docker Sandboxes setup</a> for your platform, sign in, move to a repository, and run an installed agent:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sbx login
cd ~/my-project

sbx run &lt;claude|codex|opencode&gt;

</pre></div>


<p class="wp-block-paragraph">Give it a task that needs real tools, such as running tests, building an image, or starting a Testcontainers dependency. <code>sbx</code> is much easier to evaluate and understand when the workload is your actual development loop.</p>



<p class="wp-block-paragraph">And if your experiment grows into an organization-wide agent rollout, <a href="https://www.docker.com/products/ai-governance/" id="dkr_docker-ai-governance-92832">Docker AI Governance</a> is the next thing to explore. It applies organization and team policies for sandbox network, filesystem, and MCP access, and records policy decisions in audit logs. Those records help to identify the source client, including <code>sbx</code>, and the machine hostname, so the same policy and audit model can easily cover your  team&#8217;s laptops and your CI runners.</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Docker Verified Publisher Applications Are Now Self-Serve</title>
		<link>https://www.docker.com/blog/docker-verified-publisher-applications-are-now-self-serve/</link>
		
		<dc:creator><![CDATA[Dan Berezin Stelzer]]></dc:creator>
		<pubDate>Thu, 20 Aug 2026 17:00:00 +0000</pubDate>
				<category><![CDATA[Products]]></category>
		<category><![CDATA[Docker Hub]]></category>
		<category><![CDATA[Docker Verified Publisher]]></category>
		<category><![CDATA[docker verified publisher program]]></category>
		<guid isPermaLink="false">https://www.docker.com/?p=92968</guid>

					<description><![CDATA[Apply to become a Docker Verified Publisher (DVP) now directly through Docker Hub. Get your verified content seen first by devs looking for trusted options. ]]></description>
										<content:encoded><![CDATA[


    <h2 class="wp-block-ponyo-heading text-lg">
        Curating trusted content for the agentic software era
    </h2>



<p class="wp-block-paragraph">While AI made it easier for organizations to keep up with the latest innovations, it also made it harder to know what to trust. When software is selected at machine speed, the question is no longer &#8220;is this popular?&#8221; It&#8217;s &#8220;do we know who published this?&#8221;</p>



<p class="wp-block-paragraph"><a href="https://hub.docker.com/explore" id="dkr_docker-hub-92968" rel="nofollow noopener" target="_blank">Docker Hub</a> has always been where developers go to answer that question. Starting today, software vendors looking to make their trusted content discoverable to developers by becoming Docker Verified Publishers will enjoy a faster application process, with less friction, and plans that fit their specific growth needs.</p>



<p class="wp-block-paragraph">With the <a href="https://docs.docker.com/docker-hub/repos/manage/trusted-content/dvp-program/" id="dkr_docker-verified-publisher-92968" rel="nofollow noopener" target="_blank">Docker Verified Publisher</a> (DVP) program, Docker Hub turns into a trusted, discoverable, and measurable distribution channel. Organizations accepted into the program earn verified status and prioritized ranking. DVP publishers also gain access to analytics reports that show which versions are getting the most traction and which companies are pulling them, turning open-source reach into a commercial pipeline.</p>





    <h2 class="wp-block-ponyo-heading text-lg">
        What&#8217;s new in Docker Verified Publisher Applications
    </h2>



<p class="wp-block-paragraph">Applying to become a <a href="https://docs.docker.com/docker-hub/repos/manage/trusted-content/dvp-program/" id="dkr_docker-verified-publisher-dvp-92968" rel="nofollow noopener" target="_blank">Docker Verified Publisher (DVP)</a> is now self-serve. You can now apply directly in Docker Hub, our team reviews your application, and if you&#8217;re approved, you become part of our trusted ecosystem on Docker Hub.</p>



<p class="wp-block-paragraph">This marks a significant improvement in how we onboard and evaluate publishers. Previously, companies interested in becoming a Docker Verified Publisher needed to contact our sales team to be considered for the program. While the Docker team still evaluates every single application manually, this change makes it significantly easier to apply to the program.</p>



<p class="wp-block-paragraph">Within our new self-serve process, you can choose between <a href="https://hub.docker.com/publisher-program#pricing" id="dkr_two-different-plans-that-suit-your-needs-as-you-grow-92968" rel="nofollow noopener" target="_blank">two different plans that suit your needs as you grow</a>. </p>





    <h2 class="wp-block-ponyo-heading text-lg">
        Turn pulls into reach: One badge for all your content
    </h2>



<p class="wp-block-paragraph">The verified publisher program helps you grow your impact on Docker&#8217;s ecosystem. <a href="https://hub.docker.com/search?badges=verified_publisher" id="dkr_with-the-badge-and-priority-search-ranking-due-to-trusted-status-92968" rel="nofollow noopener" target="_blank">With the badge and priority search ranking due to trusted status</a>, developers evaluating options on Hub see your verified content first.</p>



<p class="wp-block-paragraph">DVP analytics also help close the gaps you have in understanding your users and product offerings. <a href="https://hub.docker.com/publisher-program#pricing" id="dkr_summary-and-trends-reports-92968" rel="nofollow noopener" target="_blank">Summary and trends reports</a> show which repositories are gaining ground and where adoption is shifting across versions and releases. Domain-level reports on Growth turn anonymous traffic into named domains, so the teams already running your software show up in your sales and partner pipeline.</p>



<p class="wp-block-paragraph">In addition, DVP is designed to mean the same thing across every content type on Hub. Docker Hub isn&#8217;t just images anymore. Developers come to Hub for MCP servers, models, sandboxes, agents, and more; everything that’s needed for an agentic stack. DVP offers one review, one badge, one answer to &#8220;who published this&#8221; no matter what you’re publishing. Whatever you distribute next, your verification comes with you.</p>





    <h2 class="wp-block-ponyo-heading text-lg">
        What DVP means for developers
    </h2>



<p class="wp-block-paragraph">The Verified Publisher badge means Docker has manually reviewed the publisher behind that content and confirmed they are who they claim to be. Publishers such as <a href="https://hub.docker.com/u/google" id="dkr_google-92968" rel="nofollow noopener" target="_blank">Google</a>, <a href="https://hub.docker.com/u/microsoft" id="dkr_microsoft-92968" rel="nofollow noopener" target="_blank">Microsoft</a>, <a href="https://hub.docker.com/u/amazon" id="dkr_aws-92968" rel="nofollow noopener" target="_blank">AWS</a>, <a href="https://hub.docker.com/u/datadog" id="dkr_datadog-92968" rel="nofollow noopener" target="_blank">Datadog</a>, <a href="https://hub.docker.com/u/grafana" id="dkr_grafana-labs-92968" rel="nofollow noopener" target="_blank">Grafana Labs</a>, <a href="https://hub.docker.com/u/n8nio" id="dkr_n8n-92968" rel="nofollow noopener" target="_blank">n8n</a>, and many more rely on DVP to build trust, increase visibility, and grow adoption of their content on Docker Hub.</p>



<p class="wp-block-paragraph">Pulling your images from Docker Verified Publishers is a good step towards improving your security posture, but also needs to be paired with other good consumption practices. This means, for example, reviewing the specific artifact you pull, pinning to digests rather than mutable tags, verifying provenance and any signatures at the image level, and checking for CVEs. </p>



<p class="wp-block-paragraph">And while publisher verification is an important link in the trust chain, we continue building towards stronger, more secure publishing flows across Docker Hub. Stay tuned for more in this space.</p>





    <h2 class="wp-block-ponyo-heading text-lg">
        Get started
    </h2>



<p class="wp-block-paragraph">You can apply to the Docker Verified Publisher Program from the Explore page in Docker Hub. Verification is done by the Docker team, and you&#8217;ll get a checkout link as soon as you&#8217;re approved.</p>



<ul class="wp-block-list">
<li><a href="https://hub.docker.com/publisher-program" id="dkr_apply-to-dvp-on-docker-hub-92968" rel="nofollow noopener" target="_blank">Apply to DVP on Docker Hub</a></li>



<li><a href="https://docs.docker.com/docker-hub/repos/manage/trusted-content/dvp-program/" id="dkr_read-the-docs-92968" rel="nofollow noopener" target="_blank">Read the docs</a></li>
</ul>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>17,600 Actions: Agent Security Is a Systems Problem</title>
		<link>https://www.docker.com/blog/ai-agent-security-systems-problem/</link>
		
		<dc:creator><![CDATA[Jin Kim]]></dc:creator>
		<pubDate>Tue, 18 Aug 2026 16:00:00 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Company]]></category>
		<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Solutions]]></category>
		<category><![CDATA[AI Agent]]></category>
		<category><![CDATA[AI/ML]]></category>
		<category><![CDATA[DHI]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Docker AI Governance]]></category>
		<category><![CDATA[Docker Hardened Images]]></category>
		<category><![CDATA[sandboxes]]></category>
		<category><![CDATA[security]]></category>
		<guid isPermaLink="false">https://www.docker.com/?p=92915</guid>

					<description><![CDATA[The OpenAI/Hugging Face incident exposed a new challenge for AI agent security. 17,600 attacker actions show why AI agent security can’t rely on human review. Explore the controls needed to constrain, observe, and govern agents at speed.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>Everyone has been talking about the OpenAI/Hugging Face incident, and I was initially skeptical that Docker had much to add. After several weeks of customer conversations, I think we do. The useful lesson is not that an AI agent escaped a sandbox. It is what 17,600 actions expose about security systems designed for human tempo.</em></p>



<p class="wp-block-paragraph">Hugging Face reconstructed approximately 17,600 attacker actions across a four-and-a-half-day campaign in July, including roughly two and a half days inside its infrastructure.</p>



<p class="wp-block-paragraph">Put thirty seconds of human review against each action and you get 147 hours of work. Hugging Face grouped those actions into roughly 6,280 clusters; review only those and you still get more than 52 hours. Either way, manual approval and ordinary alert triage were never plausible primary controls for this workload.</p>



<p class="wp-block-paragraph">This was not a fundamentally new category of attack. If you have any background in incident response, the sequence is familiar: exploit a reachable service, obtain code execution, collect credentials, escalate privilege, and cross the next trust boundary.</p>



<p class="wp-block-paragraph">What was different was the rate, persistence, and ability to carry authority and state across short-lived environments. The agent could fail, rebuild its tooling, recover its communications channels, and continue from another environment without starting the campaign over. The useful mental model is a capable attacker fused with a fuzzer: it can reason about each result and keep probing without fatigue. That is the AI part of the story.</p>



<p class="wp-block-paragraph">This is not a commentary on model alignment, and I will offer no opinion here on which model or agent framework you or your organization should use. The security question is familiar: what authority should be given to a workload that can execute code, hold credentials, reach the network, and continue testing paths long after a human would have stopped?</p>





    <h2 class="wp-block-ponyo-heading text-lg">
        What happened
    </h2>



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



<p class="wp-block-paragraph">OpenAI was running internal cyber-capability evaluations against a benchmark called ExploitGym, which tasks agents with finding and exploiting vulnerabilities. The evaluation used reduced refusal behavior and none of the production-grade classifiers a deployed model would normally have.</p>



<p class="wp-block-paragraph">The agents did not have direct internet access. They were allowed to install packages through an internally hosted package-registry cache. The agents found a previously unknown vulnerability in that permitted service and used it to reach the open internet.</p>



<p class="wp-block-paragraph">The permitted service was the escape path. That’s the important point in the incident.</p>



<p class="wp-block-paragraph">From there, the agents escalated privilege inside OpenAI’s research environment, reached a user-hosted CyberGym-style code-execution harness running on an external sandbox, and obtained root inside that harness. The sandbox platform itself was not compromised. Having apparently worked out that Hugging Face might host the benchmark’s reference answers, the agents went after Hugging Face directly, assessing that cheating was the fastest path to a passing score.</p>



<p class="wp-block-paragraph">Hugging Face’s reconstruction documents local-file disclosure, code execution through a template engine, cloud metadata access, Kubernetes privilege escalation, exposure of a production secret containing 136 keys, access to the corporate network through a stolen credential, and limited write access to source control. It found no evidence that public models, datasets, packages, or released software were modified, and the customer content accessed was limited to a handful of benchmark-related datasets. That is a good outcome relative to what was possible. It is not evidence that the attack path was harmless.</p>



<p class="wp-block-paragraph">The individual weaknesses were familiar: an unsafe processing path, accessible cloud metadata, broad privileges, long-lived credentials, and a shared administrative identity. A capable human attacker could have chained them, too. The difference was the volume of paths tested, the speed with which a failed path was replaced, and the amount of evidence defenders had to interpret while the campaign continued.</p>



<p class="wp-block-paragraph">If you want the full blow-by-blow, Hugging Face published a detailed <a href="https://huggingface.co/blog/agent-intrusion-technical-timeline" id="dkr_technical-writeup-92915" rel="nofollow noopener" target="_blank">technical writeup</a> and interactive replay. Both are worth reading.</p>





    <h2 class="wp-block-ponyo-heading text-lg">
        The controls this requires
    </h2>



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



<p class="wp-block-paragraph">That arithmetic, not the novelty of the attack, is what changes the operating model. A human cannot sit in the control loop for thousands of actions at machine speed.</p>



<p class="wp-block-paragraph">There are also two related threat models to account for.</p>



<p class="wp-block-paragraph">In the first, the agent discovers and exploits a path on its own, as the agents did in this incident. In the second, an external party redirects the agent through a poisoned tool, compromised dependency, malicious document, prompt injection, or attacker-controlled data. In that case, the agent becomes the attack vector.</p>



<p class="wp-block-paragraph">The same authority is dangerous in either case. The controls therefore have to govern what enters the environment, which capabilities the agent receives, and what happens when its behavior leaves the expected boundary.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th><strong>What can go wrong</strong></th><th><strong>Control required</strong></th></tr></thead><tbody><tr><td>Untrusted content attempts to change the agent’s instructions</td><td>Treat external content as data, never authority; preserve provenance and trust boundaries; do not allow retrieved content to modify policy or grant capabilities</td></tr><tr><td>A tool, package, image, or MCP server is poisoned</td><td>Strict allowlisting; pin versions and digests; verify signatures and provenance; require SBOMs; scan and review updates before promotion</td></tr><tr><td>External data becomes executable input</td><td>Use structured and typed tool interfaces; validate and escape arguments; prohibit unsafe shell interpolation and other paths from data to command execution; run commands inside a sandbox and constrain which commands can be invoked</td></tr><tr><td>A permitted service becomes an escape path</td><td>Expose the narrowest operation-specific interface; scope access by task and destination; monitor permitted paths for behavior that diverges from their purpose</td></tr><tr><td>The workload reaches ambient credentials or control-plane services</td><td>Remove ambient credentials; use short-lived, task-scoped workload identity; block metadata and control-plane endpoints the task does not require</td></tr><tr><td>The workload exceeds its intended execution boundary</td><td>Use a hardened isolation boundary; reject privileged workloads, host filesystem mounts, raw device access, and unrestricted host sockets unless explicitly required</td></tr><tr><td>State or authority persists beyond replacement of the worker</td><td>Govern durable write paths; separate read from write authority; correlate identity and activity across runs</td></tr><tr><td>The agent, or an attacker acting through it, crosses into another system</td><td>Require explicit authorization for external and destructive actions; scope credentials to the target operation; make write paths observable and revocable</td></tr><tr><td>Thousands of individually plausible actions hide behavior that has diverged from the task</td><td>Evaluate sequences and bursts against policy and expected behavior; correlate activity across tools and systems; contain at machine speed</td></tr></tbody></table></figure>



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



<p class="wp-block-paragraph">The point is not to put human approval in front of every action. That defeats much of the value of using agents and eventually produces approval fatigue. Routine and reversible actions should have very little friction. More sensitive, external, destructive, or unusual actions should receive stronger scrutiny.</p>



<p class="wp-block-paragraph">Review and sanitization still matter, particularly for packages, tools, and paths where external data could become a command. But sanitization alone is not a reliable answer to prompt injection. Natural-language content is too ambiguous for us to assume we can always identify and remove the malicious part. The stronger boundary is architectural: untrusted content must not be able to grant itself authority, change policy, or create capabilities the agent did not already have.</p>



<p class="wp-block-paragraph">Done well, governance is not what limits agent autonomy. It is what makes it possible to safely give agents more of it.</p>





    <h2 class="wp-block-ponyo-heading text-lg">
        Where Docker fits today, and where we do not
    </h2>



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



<p class="wp-block-paragraph">We are proud to be founding authors of the <a href="https://agentbaseline.org/" id="dkr_agent-baseline-92915" rel="nofollow noopener" target="_blank">Agent Baseline</a>. We worked with other industry experts to distill the problem into six outcomes: Discover, Constrain, Authorize, Observe, Validate, and Respond.</p>



<p class="wp-block-paragraph">If <a href="https://www.docker.com/products/docker-sandboxes/" id="dkr_docker-sandboxes-92915">Docker Sandboxes</a> sit in one specific bucket, it’s “Constrain,” but really, we believe they’re foundational, and where you would instrument or implement all six. They give each agent a dedicated microVM and enforceable boundaries around local compute, filesystem access, and network reach, as well as providing the base (and thus ground truth) layer to observe. That is a real and useful layer.</p>



<p class="wp-block-paragraph"><a href="https://www.docker.com/products/ai-governance/" id="dkr_docker-ai-governance-92915">Docker AI Governance</a> addresses parts of Authorize and Observe by giving organizations a centralized way to define and enforce controls around agent environments, including network and filesystem policies and access to MCP servers and tools.</p>



<p class="wp-block-paragraph">Together, Sandboxes and AI Governance provide a meaningful part of the answer today: a hardened execution environment and centralized policy enforcement around it. They do not repair a vulnerable service the agent is authorized to contact, narrow a credential issued by another system, or replace the customer’s own security architecture. No vendor, Docker included, can claim its technology would have made this particular incident a non-event.</p>



<p class="wp-block-paragraph">But a deterministic enforcement boundary is still necessary. It gives an organization one place to apply least capability and least privilege, and one place to observe what the agent was actually allowed to do. If an agent is using a package registry as an egress proxy rather than a package registry, that’s the kind of divergence the telemetry needs to help surface, especially when viewed across a sequence of requests rather than one request at a time.</p>



<p class="wp-block-paragraph">The broader problem remains difficult. The useful unit of observation is not always one tool call. It may be a burst of activity, a target, a protocol, a credential, or a pattern visible only across systems. A package request can be normal. Repeatedly probing the service behind it, discovering credentials, and using them to reach another system should change the assessment.</p>



<p class="wp-block-paragraph">That’s the agent-security challenge beyond basic containment. We need to constrain authority, but also observe activity at the right granularity, recognize when it deserves more scrutiny, and respond at the same tempo as the agent. For all of us, Docker included, there is still substantial work ahead across observation, validation, and response.</p>





    <h2 class="wp-block-ponyo-heading text-lg">
        The operational tradeoff
    </h2>



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



<p class="wp-block-paragraph">Security, capability, and autonomy all matter, and they will always be in tension. Said differently, none of this is free.</p>



<p class="wp-block-paragraph">Short-lived credentials expire during long-running tasks. Narrow egress policies break legitimate package installation. Admission controls reject tools developers assumed they could run. Cross-system detection costs money and produces false positives. A write approval inserted at the wrong point can eliminate most of the productivity the agent was supposed to provide.</p>



<p class="wp-block-paragraph">Teams will be tempted to loosen each control until the agent works again. That is understandable. The failure mode created by a strict policy is immediate and visible; the failure mode created by excessive authority remains invisible until an incident.</p>



<p class="wp-block-paragraph">The answer is not to remove the controls or ask a human to approve everything. It is to make friction proportional to consequence, test the failure modes, measure the operational cost, and weigh it against the risk and potential blast radius.</p>





    <h2 class="wp-block-ponyo-heading text-lg">
        How I work
    </h2>



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



<p class="wp-block-paragraph">I use agents every day, and I assume that a sufficiently capable agent will eventually try something I did not anticipate (perhaps on a daily basis…).</p>



<p class="wp-block-paragraph">For the most part, I do not run one general-purpose agent with access to everything. I use task-focused agents, each packaged as a separate <a href="https://docs.docker.com/ai/sandboxes/customize/kits/" id="dkr_kit-92915" rel="nofollow noopener" target="_blank">kit</a>, built on free <a href="https://www.docker.com/products/hardened-images" id="dkr_docker-hardened-images-92915">Docker Hardened Images</a> and run in Docker Sandboxes.</p>



<p class="wp-block-paragraph">Each kit starts with a specific job, then receives only the software, network access, files, credentials, and external capabilities required for that job.</p>



<p class="wp-block-paragraph">In most cases, the agent has very few restrictions inside its sandbox. That is intentional. What matters is that god mode inside the sandbox does not become god mode over my laptop, my credentials, or every service I can reach.</p>



<p class="wp-block-paragraph">I do a lot of desk research. Those agents can access the open internet. They’re not useful if they can’t. But their image has no compilers, package manager, general-purpose network debugging tools, or development toolchain, and it runs with deliberately limited system permissions. They can retrieve and analyze public information, but have very little machinery with which to turn something they encounter into an exploit or act on another system. They have no reason to hold my source code or production credentials.</p>



<p class="wp-block-paragraph">My production coding agent has a much richer environment. It runs pi, can use multiple models, compile code, run tests, and use the tools required for real engineering work. Its network access is restricted to an explicit allow list of services I use, including Docker, GitHub, Snowflake, and Cloudflare. It does not receive arbitrary internet access or arbitrary tools simply because a coding task occasionally needs the network.</p>



<p class="wp-block-paragraph">My home kit can interact with an Arduino, but it does not receive direct access to the host or the device. A host-side MCP server brokers the allowed operations. The agent can request a defined Arduino capability through that interface; it cannot turn that permission into general access to every device connected to the machine.</p>



<p class="wp-block-paragraph">My development kit is where I experiment. It runs with balanced network access, but no ambient host secrets and no unrestricted access to host files. When it needs Google Workspace, Snowflake, or another host service, host-side daemons broker those calls. The agent sees the capability I have chosen to expose, not the underlying credential or the rest of the service. Those brokers can enforce which operations are allowed and which are blocked.</p>



<p class="wp-block-paragraph">These are deliberately different environments. The research agent would be poor at production coding. The coding agent cannot reach every site the research agent can. The home agent cannot turn an Arduino operation into arbitrary host access. The development agent can query a service without possessing the credential that authorizes the query.</p>



<p class="wp-block-paragraph">That constraint is the feature.</p>





    <h2 class="wp-block-ponyo-heading text-lg">
        Conclusion: Security at agent speed
    </h2>



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



<p class="wp-block-paragraph">The OpenAI/Hugging Face incident was not the failure of a single boundary. It was a chain of reasonable-seeming permissions and familiar weaknesses that became something very different when an agent could test thousands of paths, preserve state across runs, and carry authority from one system into the next.</p>



<p class="wp-block-paragraph">We will not anticipate every vulnerability an agent might find or every way it might combine the access we give it. The architecture cannot depend on perfect agent behavior, perfect software, or a human noticing every dangerous action in time.</p>



<p class="wp-block-paragraph">So, the starting point is still least capability and least privilege: give an agent the narrowest interface, credentials, tools, and network access its task requires. Put those controls at a deterministic enforcement boundary. Make the resulting activity observable, not only as isolated requests, but as sequences and patterns across systems. When the behavior leaves the expected envelope, containment has to happen at agent speed.</p>



<p class="wp-block-paragraph">Docker Sandboxes and Docker AI Governance provide important parts of that architecture today: hardened execution boundaries and centrally enforced policy around them. They do not secure every service an agent is permitted to contact, and they do not eliminate the need for an organization to decide what authority each agent should have. The broader work across Discover, Constrain, Authorize, Observe, Validate, and Respond is why we helped create the Agent Baseline in the first place.</p>



<p class="wp-block-paragraph">The goal is not to build an agent that never tries the wrong thing. The goal is to build a system where trying the wrong thing does not give it the keys to everything else.</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
