<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: nick </title>
    <description>The latest articles on DEV Community by nick  (@nick_pro7).</description>
    <link>https://dev.to/nick_pro7</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4076633%2F2d0691c9-3e5f-41ee-a114-94481aebb617.png</url>
      <title>DEV Community: nick </title>
      <link>https://dev.to/nick_pro7</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nick_pro7"/>
    <language>en</language>
    <item>
      <title>My AI agent tried to rm -rf /. Now I build kill switches for a living.</title>
      <dc:creator>nick </dc:creator>
      <pubDate>Thu, 13 Aug 2026 17:29:35 +0000</pubDate>
      <link>https://dev.to/nick_pro7/my-ai-agent-tried-to-rm-rf-now-i-build-kill-switches-for-a-living-k1i</link>
      <guid>https://dev.to/nick_pro7/my-ai-agent-tried-to-rm-rf-now-i-build-kill-switches-for-a-living-k1i</guid>
      <description>&lt;p&gt;so its 11pm ish. cold biryani next to the keyboard. some show playing i wasnt even watching.&lt;/p&gt;

&lt;p&gt;my coding agent was "refactoring" a build script. fine. normal. let it cook.&lt;/p&gt;

&lt;p&gt;then i see it mid run in the terminal&lt;/p&gt;

&lt;p&gt;rm -rf /&lt;/p&gt;

&lt;p&gt;not rm -rf ./build, not rm -rf dist. just /. root. the entire machine. my photos, my keys, my half finished side projects (the real loss honestly)&lt;/p&gt;

&lt;p&gt;i hit ctrl+c so fast i think i broke the key. and the agents response?&lt;/p&gt;

&lt;p&gt;"sorry about that! here's a corrected version 🙂"&lt;/p&gt;

&lt;p&gt;corrected version. bro you just tried to format my laptop with the confidence of a staff engineer. senior engineer confidence, intern judgment.&lt;/p&gt;

&lt;h2&gt;
  
  
  this isnt a me problem
&lt;/h2&gt;

&lt;p&gt;if you use claude code, cursor, codex, any agent with tool access, you now have a colleague who&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cant be fired&lt;/li&gt;
&lt;li&gt;never sleeps&lt;/li&gt;
&lt;li&gt;is one prompt injection away from working for the enemy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and its already happening in the wild&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;mini shai-hulud — npm supply chain worm targeting agent tooling&lt;/li&gt;
&lt;li&gt;aws kiro CVE-2026-10591 — poisoned web page hijacked a coding agent&lt;/li&gt;
&lt;li&gt;hugging face agent breach — yes even the model repos own agent&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;the pattern: the agent isnt dumb. its competent and obedient. it will execute a terrible plan with perfect syntax. honestly thats the scariest sentence ive written all year.&lt;/p&gt;

&lt;h2&gt;
  
  
  your guardrails are in the wrong layer
&lt;/h2&gt;

&lt;p&gt;most "ai safety" lives in the wrong place&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;prompt guardrails filter text. but the damage isnt text, its actions&lt;/li&gt;
&lt;li&gt;sandboxing walls off the env. but real work needs real access&lt;/li&gt;
&lt;li&gt;observability tells you what happened. after. like a smoke detector that emails you the next morning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;the only place a decision becomes real is the tool call boundary — the exact moment the agent says run this, write this, call this.&lt;/p&gt;

&lt;p&gt;thats the layer that has to say no.&lt;/p&gt;

&lt;h2&gt;
  
  
  so i built the no
&lt;/h2&gt;

&lt;p&gt;its called grimdall. sits between your agent and its tools, every call gets checked before it runs&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;rm -rf / → blocked, suggests a safer way&lt;/li&gt;
&lt;li&gt;curl piping your secrets out → blocked&lt;/li&gt;
&lt;li&gt;prod deploy at 2am → paused for human approval&lt;/li&gt;
&lt;li&gt;everything else → allowed + logged to a tamper evident audit trail&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;im one person. this is my whole thing. open source (apache 2.0), one command, no signup, no telemetry. it never phones home — partly on principle, partly because i cant afford a server to collect your data anyway lol&lt;/p&gt;

&lt;p&gt;npx grimdall init --hooks&lt;br&gt;
npx grimdall demo&lt;/p&gt;

&lt;p&gt;first one protects claude code / cursor / codex. second one shows it blocking rm -rf / live&lt;/p&gt;

&lt;p&gt;python folks: pip install grimdall, one decorator wraps langchain, crewai, openai agents, autogen&lt;/p&gt;

&lt;h2&gt;
  
  
  before you ask
&lt;/h2&gt;

&lt;p&gt;yes an ai helped me fix commas in this post. the same species of software that tried to delete my laptop also proofread it. we reached an understanding: it writes, i ship, nobody runs rm -rf&lt;/p&gt;

&lt;p&gt;now your turn — whats the most unhinged thing your agent has done? best story gets a shoutout when we launch on product hunt this week 👇&lt;/p&gt;

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