<?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: AgentGuard</title>
    <description>The latest articles on DEV Community by AgentGuard (@agentguard).</description>
    <link>https://dev.to/agentguard</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%2F4116143%2F768d9274-43d2-4083-af5e-a52c32f6cad4.jpeg</url>
      <title>DEV Community: AgentGuard</title>
      <link>https://dev.to/agentguard</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/agentguard"/>
    <language>en</language>
    <item>
      <title>Ich habe mein eigenes Repo angegriffen — mein PR-Bot hat den Angriff selbst blockiert</title>
      <dc:creator>AgentGuard</dc:creator>
      <pubDate>Wed, 09 Sep 2026 03:03:26 +0000</pubDate>
      <link>https://dev.to/agentguard/ich-habe-mein-eigenes-repo-angegriffen-mein-pr-bot-hat-den-angriff-selbst-blockiert-3cfo</link>
      <guid>https://dev.to/agentguard/ich-habe-mein-eigenes-repo-angegriffen-mein-pr-bot-hat-den-angriff-selbst-blockiert-3cfo</guid>
      <description>&lt;p&gt;Coding-Agents sind die neue Benchmark für Dev-Teams: Claude Code, Cursor, Codex &amp;amp; Co. lesen dein Repo — und &lt;strong&gt;vertrauen ihm&lt;/strong&gt;. Ich habe mich gefragt: Was passiert, wenn jemand eine Anweisung ins Repo schmuggelt, die der Agent bereitwillig ausführt?&lt;/p&gt;

&lt;p&gt;Also habe ich &lt;strong&gt;AgentGuard&lt;/strong&gt; gebaut — ein CI-Gate für Agent-Konfigurationen (AGENTS.md, Skills, MCP-Server, Hooks). Und ich habe mein eigenes Repo mit 12 gezielten Angriffen bestückt. Das ehrliche Protokoll:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Die Angriffe waren leicht zu verstecken
&lt;/h2&gt;

&lt;p&gt;12 Payloads: eine versteckte Instruction-Override-Anweisung in der AGENTS.md, unsichtbare Zero-Width-Zeichen in einer Skill-Datei, ein typ-squatted MCP-Server-Host, ein Hook, der Netzwerk-Inhalt in eine Shell piped, ein committeter API-Key, ein Agent mit wildem Bash-Zugriff … &lt;strong&gt;Jeder davon wirkt in einem PR-Review völlig normal.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AgentGuard erkennt alle 12 — &lt;strong&gt;deterministisch&lt;/strong&gt;, ohne LLM im Scan-Pfad — mit &lt;strong&gt;47 Unit-Tests&lt;/strong&gt;, die das für immer beweisen (12/12 erkannt, 0 False Positives im sauberen Kontroll-Repo).&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Der Realitätscheck: 30 Repos, 5 mit kritischen Befunden
&lt;/h2&gt;

&lt;p&gt;Ich habe 30 öffentliche Repos über die GitHub-Code-Suche nach AGENTS.md gescannt — darunter Google, Microsoft und Nextcloud. &lt;strong&gt;5 mit kritischen Befunden.&lt;/strong&gt; Der spannendste: ein unsichtbares Zeichen direkt vor einem Bash-Block in einer Agenten-Spec. Zufall oder Absicht? Genau dafür ist das Tool da. Jeder Befund wurde manuell byte-genau geprüft und ist öffentlich: &lt;a href="https://github.com/agentguard-dev/agentguard/blob/main/docs/REAL-WORLD-FINDINGS.md" rel="noopener noreferrer"&gt;Echtwelt-Befunde&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Doppeltes Dogfooding
&lt;/h2&gt;

&lt;p&gt;Zwei Dinge passierten, die ich nicht besser hätte inszenieren können:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;(a)&lt;/strong&gt; GitHubs eigene Push-Protection blockierte einen meiner Pushes — ein &lt;strong&gt;Fake-Token in meiner eigenen Testdatei&lt;/strong&gt; löste &lt;code&gt;GH013: Push cannot contain secrets&lt;/code&gt; aus. Der größte Code-Host der Welt hat an &lt;em&gt;meinem&lt;/em&gt; Repo demonstriert, was AgentGuard bei &lt;em&gt;deinem&lt;/em&gt; fängt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;(b)&lt;/strong&gt; Wochen später, nach dem v0.2.1-Bypass-Schutz, &lt;strong&gt;blockierte unser eigenes Gate unseren eigenen Pull-Request&lt;/strong&gt; beim Selbsttest — die neue Regel ignoriert jede &lt;code&gt;.agentguard-ignore&lt;/code&gt;, die in einem PR mitgeliefert wird, und unser Selbsttest-Workflow hatte sich auf das alte Verhalten verlassen. Roter Check. Merge verweigert. Funktioniert wie designed. Die ganze Geschichte steht im &lt;a href="https://github.com/agentguard-dev/agentguard/blob/main/CHANGELOG.md" rel="noopener noreferrer"&gt;Changelog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Gestern hat mein eigenes Sicherheits-Tool meinen eigenen Pull-Request geblockt. Das ist die beste Demo, die ein Sicherheitsprodukt haben kann.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Was in v0.2.1 kam
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fail-closed Gates:&lt;/strong&gt; Ein Tippfehler in &lt;code&gt;exit-on&lt;/code&gt; deaktiviert das Gate nicht mehr still — es bricht laut ab.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PR-Bypass-Schutz:&lt;/strong&gt; Eine im PR mitgelieferte &lt;code&gt;.agentguard-ignore&lt;/code&gt; wird ignoriert; Ausnahmen kommen nur aus dem vertrauenswürdigen Workflow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gehärteter Pro-Server:&lt;/strong&gt; HMAC-Längenprüfung, 1-MB-Webhook-Body-Limit, Installation pro Repo, sicheres Tarball-Entpacken (Größenlimit, Symlink-/Traversal-Abweisung).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Neue Secret-Muster:&lt;/strong&gt; Private Keys, GitHub-PATs, npm, Stripe, Slack-Webhooks. Details in &lt;a href="https://github.com/agentguard-dev/agentguard/blob/main/docs/SECURITY.md" rel="noopener noreferrer"&gt;SECURITY.md&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. Der Bot blockierte einen Angriff live
&lt;/h2&gt;

&lt;p&gt;Die GitHub-App kommentiert jeden PR mit Note und Befunden und setzt ein Check-Run-Gate. Der Beweis ist ein echter Pull-Request: Ein gepflanzter Angriff bekam &lt;strong&gt;Note E, einen roten Check und keinen Merge&lt;/strong&gt; — &lt;a href="https://github.com/agentguard-dev/agentguard-demo/pull/2" rel="noopener noreferrer"&gt;live ansehen&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Die Landingpage zeigt jetzt den Moment
&lt;/h2&gt;

&lt;p&gt;Die &lt;a href="https://agentguard-dev.github.io/agentguard/" rel="noopener noreferrer"&gt;Landingpage&lt;/a&gt; hat ein Live-Scan-Terminal im Hero: Es tippt sich durch Dateien, findet die gepflanzte Anweisung und endet im grünen &lt;strong&gt;MERGE-GEBLOCKT&lt;/strong&gt;-Moment — genau das Gefühl, das dieses Produkt verkauft: &lt;em&gt;Dein Agent liest dein Repo. Dein Gate liest mit.&lt;/em&gt; Gemessene Qualität statt Deko: Lighthouse 100/100/100/100 auf Desktop und Mobile, LCP 179 ms, CLS ~0, kein Horizontal-Scroll bis 320 px.&lt;/p&gt;

&lt;h2&gt;
  
  
  Probier es aus
&lt;/h2&gt;

&lt;p&gt;MIT-lizenziert, kostenlos für öffentliche Repos auf dem GitHub Marketplace. Schick dein Repo und bekomm einen kostenlosen Erst-Scan — oder stell die Anfrage direkt: &lt;a href="https://github.com/agentguard-dev/agentguard/issues/new?template=audit-request.yml&amp;amp;labels=audit-request" rel="noopener noreferrer"&gt;Audit/Trial/RedTeam-Formular&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;🔗 Code: &lt;a href="https://github.com/agentguard-dev/agentguard" rel="noopener noreferrer"&gt;https://github.com/agentguard-dev/agentguard&lt;/a&gt;&lt;br&gt;
🛒 Marketplace: &lt;a href="https://github.com/marketplace/actions/agentguard-security" rel="noopener noreferrer"&gt;https://github.com/marketplace/actions/agentguard-security&lt;/a&gt;&lt;br&gt;
📊 Verifizierte Befunde: &lt;a href="https://github.com/agentguard-dev/agentguard/blob/main/docs/REAL-WORLD-FINDINGS.md" rel="noopener noreferrer"&gt;https://github.com/agentguard-dev/agentguard/blob/main/docs/REAL-WORLD-FINDINGS.md&lt;/a&gt;&lt;br&gt;
🔴 Live-Demo (Angriff geblockt): &lt;a href="https://github.com/agentguard-dev/agentguard-demo/pull/2" rel="noopener noreferrer"&gt;https://github.com/agentguard-dev/agentguard-demo/pull/2&lt;/a&gt;&lt;br&gt;
🌐 Landingpage: &lt;a href="https://agentguard-dev.github.io/agentguard/" rel="noopener noreferrer"&gt;https://agentguard-dev.github.io/agentguard/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>devops</category>
      <category>agents</category>
    </item>
    <item>
      <title>I attacked my own repo — my PR bot blocked the attack before merge</title>
      <dc:creator>AgentGuard</dc:creator>
      <pubDate>Tue, 08 Sep 2026 16:49:35 +0000</pubDate>
      <link>https://dev.to/agentguard/i-attacked-my-own-repo-my-pr-bot-blocked-the-attack-before-merge-4fio</link>
      <guid>https://dev.to/agentguard/i-attacked-my-own-repo-my-pr-bot-blocked-the-attack-before-merge-4fio</guid>
      <description>&lt;p&gt;Coding agents are the new benchmark for dev teams: Claude Code, Cursor, Codex &amp;amp; Co. read your repo — and &lt;strong&gt;trust it&lt;/strong&gt;. I asked myself: what happens when someone smuggles an instruction into the repo that the agent happily executes?&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;AgentGuard&lt;/strong&gt; — a CI gate for agent configurations (AGENTS.md, skills, MCP servers, hooks). And I stuffed my own repo with 12 targeted attacks. The honest protocol:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The attacks were easy to hide
&lt;/h2&gt;

&lt;p&gt;12 payloads: a hidden instruction-override in AGENTS.md, invisible zero-width characters in a skill file, a typo-squatted MCP server host, a hook piping network content into a shell, a committed API key, an agent with wild Bash access… Every single one looks normal in a PR review.&lt;/p&gt;

&lt;p&gt;AgentGuard detects all 12 — &lt;strong&gt;deterministically&lt;/strong&gt;, no LLM in the scan path — with &lt;strong&gt;47 unit tests&lt;/strong&gt; that prove it forever (12/12 detected, 0 false positives on the clean control repo).&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The real-world run: 30 repos, 5 with critical findings
&lt;/h2&gt;

&lt;p&gt;I scanned 30 public repos via GitHub's code search for AGENTS.md — including Google, Microsoft and Nextcloud. &lt;strong&gt;5 had critical findings.&lt;/strong&gt; The most interesting: an invisible character right before a bash block in an agent spec. Coincidence or intention? That's exactly what the tool is for. Every finding was byte-verified manually and is public: &lt;a href="https://github.com/agentguard-dev/agentguard/blob/main/docs/REAL-WORLD-FINDINGS.md" rel="noopener noreferrer"&gt;real-world findings&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Double dogfooding
&lt;/h2&gt;

&lt;p&gt;Two things happened that I could not have staged better:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;(a)&lt;/strong&gt; GitHub's own push protection blocked one of my pushes — a &lt;strong&gt;fake token in my own test file&lt;/strong&gt; triggered &lt;code&gt;GH013: Push cannot contain secrets&lt;/code&gt;. The biggest code host on the internet demonstrated on &lt;em&gt;my&lt;/em&gt; repo exactly what AgentGuard catches on &lt;em&gt;yours&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;(b)&lt;/strong&gt; Weeks later, after we shipped the v0.2.1 bypass protection, &lt;strong&gt;our own gate blocked our own pull request&lt;/strong&gt; during the self-test — the new rule ignores any &lt;code&gt;.agentguard-ignore&lt;/code&gt; shipped inside a PR, and our self-test workflow had relied on the old behavior. Red check. Merge refused. Working as designed. The full story is in the &lt;a href="https://github.com/agentguard-dev/agentguard/blob/main/CHANGELOG.md" rel="noopener noreferrer"&gt;changelog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Yesterday my own security tool blocked my own pull request. That is the best demo a security product can have.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. What shipped in v0.2.1
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fail-closed gates:&lt;/strong&gt; a typo in &lt;code&gt;exit-on&lt;/code&gt; no longer silently disables the gate — it fails loudly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PR bypass protection:&lt;/strong&gt; a &lt;code&gt;.agentguard-ignore&lt;/code&gt; shipped inside a PR is ignored; exclusions come only from the trusted workflow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hardened Pro server:&lt;/strong&gt; HMAC length checks, 1 MB webhook body limit, per-repo installation resolution, safe tarball extraction (size limit, symlink/traversal rejection).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;New secret patterns:&lt;/strong&gt; private keys, GitHub PATs, npm, Stripe, Slack webhooks. Details in &lt;a href="https://github.com/agentguard-dev/agentguard/blob/main/docs/SECURITY.md" rel="noopener noreferrer"&gt;SECURITY.md&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. The bot blocked an attack, live
&lt;/h2&gt;

&lt;p&gt;The GitHub App comments on every PR with a grade and findings, and sets a check-run gate. The proof is a real pull request: a planted attack got &lt;strong&gt;Note E, a red check, and no merge&lt;/strong&gt; — &lt;a href="https://github.com/agentguard-dev/agentguard-demo/pull/2" rel="noopener noreferrer"&gt;see it live&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. The landing page now shows the moment
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://agentguard-dev.github.io/agentguard/" rel="noopener noreferrer"&gt;landing page&lt;/a&gt; has a live scan terminal in the hero: it types through files, finds the planted instruction, and ends on the green &lt;strong&gt;MERGE BLOCKED&lt;/strong&gt; moment — the exact emotion this product sells: &lt;em&gt;your agent reads your repo; your gate reads with it.&lt;/em&gt; Measured quality, not decoration: Lighthouse 100/100/100/100 on desktop and mobile, LCP 179 ms, CLS ~0, no horizontal scroll down to 320 px.&lt;/p&gt;

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

&lt;p&gt;MIT-licensed, free for public repos on the GitHub Marketplace. Reply with your repo and get a free first scan — or open a request directly: &lt;a href="https://github.com/agentguard-dev/agentguard/issues/new?template=audit-request.yml&amp;amp;labels=audit-request" rel="noopener noreferrer"&gt;audit/trial/redteam form&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;🔗 Code: &lt;a href="https://github.com/agentguard-dev/agentguard" rel="noopener noreferrer"&gt;https://github.com/agentguard-dev/agentguard&lt;/a&gt;&lt;br&gt;
🛒 Marketplace: &lt;a href="https://github.com/marketplace/actions/agentguard-security" rel="noopener noreferrer"&gt;https://github.com/marketplace/actions/agentguard-security&lt;/a&gt;&lt;br&gt;
📊 Verified findings: &lt;a href="https://github.com/agentguard-dev/agentguard/blob/main/docs/REAL-WORLD-FINDINGS.md" rel="noopener noreferrer"&gt;https://github.com/agentguard-dev/agentguard/blob/main/docs/REAL-WORLD-FINDINGS.md&lt;/a&gt;&lt;br&gt;
🔴 Live demo (attack blocked): &lt;a href="https://github.com/agentguard-dev/agentguard-demo/pull/2" rel="noopener noreferrer"&gt;https://github.com/agentguard-dev/agentguard-demo/pull/2&lt;/a&gt;&lt;br&gt;
🌐 Landing page: &lt;a href="https://agentguard-dev.github.io/agentguard/" rel="noopener noreferrer"&gt;https://agentguard-dev.github.io/agentguard/&lt;/a&gt;&lt;/p&gt;

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