<?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: Théo CLEMENT</title>
    <description>The latest articles on DEV Community by Théo CLEMENT (@neo-degen).</description>
    <link>https://dev.to/neo-degen</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%2F4232887%2Fde49883d-456d-40d3-9c14-589ac32a0157.png</url>
      <title>DEV Community: Théo CLEMENT</title>
      <link>https://dev.to/neo-degen</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/neo-degen"/>
    <language>en</language>
    <item>
      <title>I built a free security checker for AI-generated apps</title>
      <dc:creator>Théo CLEMENT</dc:creator>
      <pubDate>Sat, 07 Nov 2026 23:21:22 +0000</pubDate>
      <link>https://dev.to/neo-degen/i-built-a-free-security-checker-for-ai-generated-apps-5259</link>
      <guid>https://dev.to/neo-degen/i-built-a-free-security-checker-for-ai-generated-apps-5259</guid>
      <description>&lt;p&gt;Hi, I'm Théo. I'm a self-taught developer and I build most of my projects with AI tools like Claude Code.&lt;/p&gt;

&lt;p&gt;AI tools are great at making an app that works. But "it works" is not the same as "it's safe". When I looked at my own projects, and at a lot of AI-generated code shared online, I kept seeing the same mistakes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;an OpenAI, Anthropic or Stripe key written directly in the code, or still in the git history&lt;/li&gt;
&lt;li&gt;a secret key put in a &lt;code&gt;NEXT_PUBLIC_&lt;/code&gt; or &lt;code&gt;VITE_&lt;/code&gt; variable, so it ships to the browser&lt;/li&gt;
&lt;li&gt;Supabase tables without Row Level Security, or with &lt;code&gt;using (true)&lt;/code&gt; policies&lt;/li&gt;
&lt;li&gt;Firebase rules that let anyone write&lt;/li&gt;
&lt;li&gt;API routes that call a paid AI API or use the service_role key without checking who is calling&lt;/li&gt;
&lt;li&gt;a committed &lt;code&gt;.env&lt;/code&gt; file&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I built &lt;strong&gt;Garde-Fou&lt;/strong&gt; (French for "guardrail"). It's a small CLI that checks for these problems before you ship.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to try it
&lt;/h2&gt;

&lt;p&gt;In your project folder:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @gardefou/cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You get a score out of 100 and a list of problems, most serious first. For each one: why it's dangerous, how to fix it, and a prompt you can paste into Cursor, Lovable, Bolt or Claude Code so it fixes it for you. &lt;code&gt;--html&lt;/code&gt; gives you a report page instead.&lt;/p&gt;

&lt;h2&gt;
  
  
  A few choices I made
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It runs on your machine.&lt;/strong&gt; It doesn't change your files and doesn't send your code anywhere.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Detection doesn't use AI.&lt;/strong&gt; The rules are deterministic. I'd rather miss something than show false alarms.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The only network call&lt;/strong&gt; is the dependency check on OSV.dev (package names and versions only). &lt;code&gt;--offline&lt;/code&gt; turns it off.&lt;/li&gt;
&lt;li&gt;There's also an MCP server (&lt;code&gt;npx @gardefou/cli mcp&lt;/code&gt;) so an AI agent can run the scan itself, and a GitHub Action for pull requests.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  It's early
&lt;/h2&gt;

&lt;p&gt;It's free and open source (MIT). It only covers the mistakes I see most often, and I'm sure it has gaps and false positives.&lt;/p&gt;

&lt;p&gt;I'd really like your feedback:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What did it miss in your project?&lt;/li&gt;
&lt;li&gt;Did it flag something that was actually fine?&lt;/li&gt;
&lt;li&gt;What check would you add first?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/theojoyerclement-crypto/garde-fou" rel="noopener noreferrer"&gt;https://github.com/theojoyerclement-crypto/garde-fou&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;English is not my first language, so I used AI to help me write this post.&lt;/em&gt;&lt;/p&gt;

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