<?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: Jon Dean</title>
    <description>The latest articles on DEV Community by Jon Dean (@jon_dean-213).</description>
    <link>https://dev.to/jon_dean-213</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%2F4189518%2F946d750e-ae0f-4690-96af-bad975afb2ef.jpg</url>
      <title>DEV Community: Jon Dean</title>
      <link>https://dev.to/jon_dean-213</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jon_dean-213"/>
    <language>en</language>
    <item>
      <title>Approval is theater if code runs before the gate</title>
      <dc:creator>Jon Dean</dc:creator>
      <pubDate>Sun, 25 Oct 2026 00:11:07 +0000</pubDate>
      <link>https://dev.to/jon_dean-213/approval-is-theater-if-code-runs-before-the-gate-4edn</link>
      <guid>https://dev.to/jon_dean-213/approval-is-theater-if-code-runs-before-the-gate-4edn</guid>
      <description>&lt;p&gt;Here is a nasty one. A malicious &lt;code&gt;.git/config&lt;/code&gt; can execute when a coding agent merely gathers context — before any approval exists, before the agent does anything you would call an action. Seven agents were hit, including Claude Code, Cursor, and Codex. Eight findings. Four were still unpatched as of September 1.&lt;/p&gt;

&lt;p&gt;Think about what that means for every approval screen you have ever seen. The approval gate only works if nothing dangerous happens before the gate. Here, the dangerous thing happens during the look-around. The agent is not misbehaving. It is reading a repo file, and the repo file is a trap.&lt;/p&gt;

&lt;p&gt;This is the side I build for. Full disclosure, it is my project. Sentinel is an inbound governor: it inspects what the agent hears before the brain sees it. Its law is simple. Only the owner issues instructions. Everything else is data, never orders. A repo file is world content, and world content does not get to give orders, no matter how it is formatted.&lt;/p&gt;

&lt;p&gt;Honest limits, because I publish them: Sentinel v0.1 is a deterministic fence, and its proof log names four open holes — synonym-crafted exfiltration, leetspeak override, summary-carried exfiltration, and non-English override. The bench suite behind it is 34/34: 15 attacks blocked, 6 held for the owner, 6 benign controls allowed, plus 7 engine checks on the ledger, labeling, and owner channel. Missed content still reaches the brain labeled as data, not orders. Detection raises the cost of attack; authority is the wall.&lt;/p&gt;

&lt;p&gt;This is personal for me. My coding agent lives in this world. It reads repos all day.&lt;/p&gt;

&lt;p&gt;Repos: &lt;a href="https://github.com/jondean213-pixel/quietos-sentinel" rel="noopener noreferrer"&gt;https://github.com/jondean213-pixel/quietos-sentinel&lt;/a&gt; (pip install quietos-sentinel) and &lt;a href="https://github.com/jondean213-pixel/quietos-governor" rel="noopener noreferrer"&gt;https://github.com/jondean213-pixel/quietos-governor&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Question for the room: how many of your agent's approvals happen after code has already run?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>governor</category>
      <category>development</category>
    </item>
  </channel>
</rss>
