<?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: Motaz Ahmed</title>
    <description>The latest articles on DEV Community by Motaz Ahmed (@motaz_ahmed_a98ff26713260).</description>
    <link>https://dev.to/motaz_ahmed_a98ff26713260</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%2F3540182%2F091efeaa-c45a-4ed9-a761-19df344c10cd.jpg</url>
      <title>DEV Community: Motaz Ahmed</title>
      <link>https://dev.to/motaz_ahmed_a98ff26713260</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/motaz_ahmed_a98ff26713260"/>
    <language>en</language>
    <item>
      <title>Your AI coding agent will commit your .env unless you stop it — I built the gate</title>
      <dc:creator>Motaz Ahmed</dc:creator>
      <pubDate>Tue, 10 Nov 2026 16:36:13 +0000</pubDate>
      <link>https://dev.to/motaz_ahmed_a98ff26713260/your-ai-coding-agent-will-commit-your-env-unless-you-stop-it-i-built-the-gate-58pc</link>
      <guid>https://dev.to/motaz_ahmed_a98ff26713260/your-ai-coding-agent-will-commit-your-env-unless-you-stop-it-i-built-the-gate-58pc</guid>
      <description>&lt;p&gt;Every AI coding agent I've used — Claude Code, Cursor, Copilot, Windsurf, Devin — will eventually try something you don't want. Commit a &lt;code&gt;.env&lt;/code&gt;. Run &lt;code&gt;rm -rf&lt;/code&gt;. Hallucinate a deprecated API. Burn your API budget in a loop.&lt;/p&gt;

&lt;p&gt;The guardrails I've seen are &lt;em&gt;suggestions&lt;/em&gt; in a system prompt. "Please don't do that." Models are really good at ignoring suggestions.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;aiZee&lt;/strong&gt;: a local control plane that sits between you and the agent and enforces policy on the actual action path. Not advice — a wall.&lt;/p&gt;

&lt;h2&gt;
  
  
  The demo
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;aizee check 'Bash' --args '{"command":"git add .env &amp;amp;&amp;amp; git commit -m keys"}'&lt;/code&gt; returns:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;"ok"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"decision"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"deny"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"reason"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"guardian: commits secrets file .env"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That denial is not a warning the model can talk itself out of. It happens &lt;em&gt;before&lt;/em&gt; the tool executes.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;Every tool call, LLM request, memory write, and file change flows through one kernel pipeline:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Probity → Guardian → Policy → LoopDetector → Budget → Audit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Probity&lt;/strong&gt; — integrity verification of the runtime itself&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Guardian&lt;/strong&gt; — pre-action checks (secret commits, destructive commands)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Policy&lt;/strong&gt; — YAML rules with &lt;code&gt;allow / ask / deny / modify / observe&lt;/code&gt; verdicts. &lt;code&gt;modify&lt;/code&gt; rewrites a payload (audited), &lt;code&gt;observe&lt;/code&gt; logs without blocking — verdicts beyond the usual allow/deny/ask&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LoopDetector&lt;/strong&gt; — blocks repeated tool-call loops before they burn budget&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Budget&lt;/strong&gt; — token/cost/call limits per session, hour, day, week, month — &lt;em&gt;and per PR&lt;/em&gt; in CI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit&lt;/strong&gt; — append-only, SHA-256 hash-chained, Ed25519-signed trail&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On top of that: prompt-injection detection on inbound content (regex + embeddings + optional LLM judge), secret-leak checks on outbound responses, and an MCP firewall + gateway wrapping every external tool call.&lt;/p&gt;

&lt;h2&gt;
  
  
  It's not just a gate — it's an agent OS
&lt;/h2&gt;

&lt;p&gt;The governance layer sits on top of a full environment:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;245 skills&lt;/strong&gt; with hash-locked integrity (&lt;code&gt;skills-lock.json&lt;/code&gt; detects any tampering)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;29 auto-detected personas&lt;/strong&gt; — keyword scoring in English &lt;em&gt;and&lt;/em&gt; Arabic, multi-persona composition, lifecycle-aware routing that reads your active BMAD initiative and biases selection to the current phase&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BMAD-METHOD vendored&lt;/strong&gt; — the full agile-ai lifecycle (analyst → PM → architect → dev → PO) with ticket trees&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hybrid memory&lt;/strong&gt; — SQLite + FTS5 + optional vectors, bi-temporal queries, HMAC integrity&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP server&lt;/strong&gt; — 46 tools, plus a governed LLM proxy with failover&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dashboard&lt;/strong&gt; — dark-first command center (Python stdlib, no Node required)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The numbers
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;7,656 tests&lt;/strong&gt;, strict mypy on 223 source files, ruff clean&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;99.5% coverage&lt;/strong&gt; on the governed surface&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;1,244 files&lt;/strong&gt; integrity-validated, 0 errors&lt;/li&gt;
&lt;li&gt;MIT licensed&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip install aizee
aizee bootstrap --target ~/.aizee   &lt;span class="c"&gt;# materializes the full OS root from the wheel&lt;/span&gt;
aizee doctor                        &lt;span class="c"&gt;# 46-check health verdict&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The bootstrap extracts 1,900 files — skills, workflows, tech-stack references, policies, scripts — so &lt;code&gt;pip install&lt;/code&gt; alone gives you a full-capability install, not a hollow shell. External tools (CLI utilities, media kits, docker images) are declared in &lt;code&gt;deps.yaml&lt;/code&gt; and provisioned with &lt;code&gt;aizee deps check|install&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I built it
&lt;/h2&gt;

&lt;p&gt;AI agents are becoming the primary way code gets written. They are also the least governed layer in the stack — no audit trail, no budget enforcement, no policy engine. Prompt-level guardrails don't survive contact with a determined (or just confused) model.&lt;/p&gt;

&lt;p&gt;aiZee treats agent actions like production infrastructure: every action passes a gate, every gate decision is logged, every log entry is signed.&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/m3taz-ahmed/aizee" rel="noopener noreferrer"&gt;https://github.com/m3taz-ahmed/aizee&lt;/a&gt; — demo GIF in the README shows the guardian denying a secret commit mid-flight.&lt;/p&gt;

&lt;p&gt;I'd love feedback on the policy model — especially the &lt;code&gt;modify&lt;/code&gt;/&lt;code&gt;observe&lt;/code&gt; verdicts, which go beyond allow/deny/ask. What verdict types do you think we're missing?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>mcp</category>
      <category>claude</category>
    </item>
  </channel>
</rss>
