import{c as t,Q as a,j as o,m as r}from"./chunks/framework.BPKcPtvA.js";const p=JSON.parse('{"title":"Choosing Your Security Level","description":"","frontmatter":{},"headers":[],"relativePath":"blog/posts/choosing-security-level.md","filePath":"blog/posts/choosing-security-level.md","lastUpdated":1780488472000}'),n={name:"blog/posts/choosing-security-level.md"};function l(s,e,i,d,h,c){return a(),o("div",null,[...e[0]||(e[0]=[r('<h1 id="choosing-your-security-level" tabindex="-1">Choosing Your Security Level <a class="header-anchor" href="#choosing-your-security-level" aria-label="Permalink to &quot;Choosing Your Security Level&quot;">​</a></h1><p><strong>June 7, 2026</strong></p><p>Not every agent needs Level 5 security. The right level depends on what your agent can access.</p><h2 id="the-decision-table" tabindex="-1">The Decision Table <a class="header-anchor" href="#the-decision-table" aria-label="Permalink to &quot;The Decision Table&quot;">​</a></h2><table tabindex="0"><thead><tr><th>If your agent has access to...</th><th>Start at...</th><th>Why</th></tr></thead><tbody><tr><td>Nothing important (demos, tutorials)</td><td>L1</td><td>Blast radius is zero</td></tr><tr><td>Your source code and configs</td><td>L3</td><td>A bad git push costs a day</td></tr><tr><td>Production credentials (AWS, DB)</td><td>L4-L5</td><td>There is no acceptable failure</td></tr><tr><td>Customer data (PII, financial)</td><td>L5</td><td>Compliance requires it</td></tr></tbody></table><h2 id="level-1-2-when-you-can-get-away-with-it" tabindex="-1">Level 1-2: When You Can Get Away With It <a class="header-anchor" href="#level-1-2-when-you-can-get-away-with-it" aria-label="Permalink to &quot;Level 1-2: When You Can Get Away With It&quot;">​</a></h2><p>L1 (system prompt rules) and L2 (safe-mode skill) work well for tutorial agents that only touch demo data, personal assistants with no production access, and agents running in isolated environments.</p><p>The model will refuse most dangerous requests. &quot;Most&quot; is the problem. At a 1% per-turn failure rate, over 100 turns there is a 63% chance of at least one failure.</p><h2 id="level-3-the-minimum-for-production-code" tabindex="-1">Level 3: The Minimum for Production Code <a class="header-anchor" href="#level-3-the-minimum-for-production-code" aria-label="Permalink to &quot;Level 3: The Minimum for Production Code&quot;">​</a></h2><p>L3 (blacklist hook) catches direct attacks like <code>rm -rf /</code>. But it misses the marquee break: the agent writes a Python script that does the damage, and the blacklist only sees &quot;python cleanup.py&quot; which is not in the blocklist.</p><h2 id="level-4-the-sweet-spot" tabindex="-1">Level 4: The Sweet Spot <a class="header-anchor" href="#level-4-the-sweet-spot" aria-label="Permalink to &quot;Level 4: The Sweet Spot&quot;">​</a></h2><p>Whitelist hooks only allow N safelisted commands. The agent cannot run <code>python cleanup.py</code> because <code>python</code> is not safelisted. This prevents the L3 marque break. Use L4 as your default for any agent with access to production systems.</p><h2 id="level-5-the-gold-standard" tabindex="-1">Level 5: The Gold Standard <a class="header-anchor" href="#level-5-the-gold-standard" aria-label="Permalink to &quot;Level 5: The Gold Standard&quot;">​</a></h2><p>No bash at all. The agent has only purpose-built tools: Read, Write, Edit, Grep, Glob. Required for any agent handling customer data, financial transactions, or healthcare information.</p><h2 id="rule-of-thumb" tabindex="-1">Rule of Thumb <a class="header-anchor" href="#rule-of-thumb" aria-label="Permalink to &quot;Rule of Thumb&quot;">​</a></h2><p>If the agent can touch anything you cannot easily roll back, start at L4 and plan to get to L5.</p><hr><p><em>From Module 3 of the <a href="/">Agentic Engineering Course</a>. The full module includes runnable code for all 6 security levels.</em></p>',18)])])}const m=t(n,[["render",l]]);export{p as __pageData,m as default};
