﻿﻿{"id":1897,"date":"2025-12-26T10:30:00","date_gmt":"2025-12-26T09:30:00","guid":{"rendered":"https:\/\/elearningsamba.com\/index.php\/claude-code-safety-net-le-plugin-qui-empeche-lia-de-tout-niquer\/"},"modified":"2025-12-26T10:30:00","modified_gmt":"2025-12-26T09:30:00","slug":"claude-code-safety-net-le-plugin-qui-empeche-lia-de-tout-niquer","status":"publish","type":"page","link":"https:\/\/elearningsamba.com\/index.php\/claude-code-safety-net-le-plugin-qui-empeche-lia-de-tout-niquer\/","title":{"rendered":"Claude Code Safety Net &#8211; Le plugin qui emp\u00eache l&#8217;IA de tout niquer"},"content":{"rendered":"<p>Vous utilisez Claude Code comme moi pour bosser plus vite sur vos projets de dev ? H\u00e9 bien j&#8217;esp\u00e8re que vous n&#8217;avez jamais eu la mauvaise surprise de voir l&#8217;agent lancer un petit <code>rm -rf ~\/<\/code> qui d\u00e9truit tout votre r\u00e9pertoire home en 2 secondes. Parce que oui, \u00e7a arrive malheureusement, et plusieurs devs en ont fait les frais cette ann\u00e9e&#8230;<\/p>\n<p>Le probl\u00e8me c&#8217;est que les agents IA, aussi intelligents soient-ils, peuvent manquer de garde-fous sur ce qui est vraiment dangereux. Vous leur dites &#8220;nettoie le projet&#8221; et hop, ils interpr\u00e8tent \u00e7a un peu trop litt\u00e9ralement et une fois que c&#8217;est fait, y&#8217;a plus qu&#8217;\u00e0 pleurer devant son terminal vide.<\/p>\n<p>C&#8217;est pour \u00e7a qu&#8217;un d\u00e9veloppeur du nom de kenryu42 a cr\u00e9\u00e9<br \/>\n<a href=\"https:\/\/github.com\/kenryu42\/claude-code-safety-net\">Claude Code Safety<\/a><br \/>\nNet qui est un plugin pour Claude Code qui agit comme un garde-fou m\u00e9canique. Son id\u00e9e c&#8217;est de bloquer les commandes destructives AVANT qu&#8217;elles ne s&#8217;ex\u00e9cutent, et pas juste avec des r\u00e8gles b\u00eates genre &#8220;si la commande commence par rm -rf&#8221;.<\/p>\n<p>\n<img decoding=\"async\" src=\"https:\/\/korben.info\/cdn-cgi\/image\/width=1200,fit=scale-down,quality=90,f=avif\/claude-code-safety-net-plugin-securite-agent-ia\/claude-code-safety-net-plugin-securite-agent-ia-2.png\" alt=\"\" loading=\"lazy\">\n<\/p>\n<p>Le plugin est bien plus malin que \u00e7a puisqu&#8217;il fait une analyse s\u00e9mantique des commandes. Il comprend la diff\u00e9rence entre <code>git checkout -b nouvelle-branche<\/code> (qui est safe, \u00e7a cr\u00e9e juste une branche) et <code>git checkout -- .<\/code> qui lui va d\u00e9gager tous vos changements non committ\u00e9s sur les fichiers suivis. Les deux commencent pareil, mais l&#8217;une vous sauve et l&#8217;autre vous ruine psychologiquement, vous for\u00e7ant \u00e0 vous r\u00e9fugier dans la coca\u00efne et la prostitution.<\/p>\n<p>Et c&#8217;est pareil pour les force push. Le plugin bloque <code>git push --force<\/code> qui peut \u00e9craser l&#8217;historique distant et rendre la r\u00e9cup\u00e9ration tr\u00e8s difficile, mais il laisse passer <code>git push --force-with-lease<\/code> qui est la version plus s\u00fbre, car elle v\u00e9rifie que la ref distante correspond \u00e0 ce qu&#8217;on attend (m\u00eame si ce n&#8217;est pas une garantie absolue).<\/p>\n<p>Et le truc vraiment bien foutu, c&#8217;est qu&#8217;il d\u00e9tecte aussi les commandes planqu\u00e9es dans des wrappers shell. Vous savez, le genre de pi\u00e8ge o\u00f9 quelqu&#8217;un \u00e9crit <code>sh -c \"rm -rf \/\"<\/code> pour bypass les protections basiques. Le plugin parse r\u00e9cursivement et rep\u00e8re la commande dangereuse \u00e0 l&#8217;int\u00e9rieur. Il fait m\u00eame la chasse aux one-liners Python, Ruby ou Node qui pourraient faire des d\u00e9g\u00e2ts.<\/p>\n<p>C\u00f4t\u00e9 <code>rm -rf<\/code>, le comportement par d\u00e9faut est plut\u00f4t permissif mais intelligent&#8230; les suppressions dans <code>\/tmp<\/code> ou dans le dossier de travail courant sont autoris\u00e9es parce que c&#8217;est souvent l\u00e9gitime, par contre, tenter de nuke votre home ou des dossiers syst\u00e8me, c&#8217;est non n\u00e9gociable.<\/p>\n<p>Et pour les paranos (comme moi), y&#8217;a un mode strict qu&#8217;on active avec <code>SAFETY_NET_STRICT=1<\/code>. Dans ce mode, toute commande non parseable est bloqu\u00e9e par d\u00e9faut, et les <code>rm -rf<\/code> m\u00eame dans le projet courant demandent validation. Mieux vaut pr\u00e9venir que pleurer.<\/p>\n<p>Si \u00e7a vous chauffe, l&#8217;installation se fait via le syst\u00e8me de plugins de Claude Code avec deux commandes :<\/p>\n<div class=\"highlight\">\n<pre class=\"chroma\"><code class=\"language-fallback\" data-lang=\"fallback\"><span class=\"line\"><span class=\"cl\">\/plugin marketplace add kenryu42\/cc-marketplace\n<\/span><\/span><span class=\"line\"><span class=\"cl\">\/plugin install safety-net@cc-marketplace\n<\/span><\/span><\/code><\/pre>\n<p>Et hop, vous red\u00e9marrez Claude Code et c&#8217;est op\u00e9rationnel.<\/p>\n<p>Ensuite, quand le plugin bloque une commande, il affiche un message explicite genre &#8220;BLOCKED by safety_net.py &#8211; Reason: git checkout &#8212; discards uncommitted changes permanently&#8221; donc vous savez exactement pourquoi \u00e7a a \u00e9t\u00e9 refus\u00e9 et vous pouvez d\u00e9cider en connaissance de cause si vous voulez vraiment le faire.<\/p>\n<p>\n<img decoding=\"async\" src=\"https:\/\/korben.info\/cdn-cgi\/image\/width=1200,fit=scale-down,quality=90,f=avif\/claude-code-safety-net-plugin-securite-agent-ia\/claude-code-safety-net-plugin-securite-agent-ia-3.png\" alt=\"\" loading=\"lazy\">\n<\/p>\n<p>Bref, j&#8217;ai test\u00e9 ce plugin sur mes projets et c&#8217;est vraiment cool alors si vous utilisez Claude Code en mode YOLO, \u00e7a vous \u00e9vitera de rejoindre le club des devs qui ont tout perdu \u00e0 cause d&#8217;un agent trop z\u00e9l\u00e9&#8230;<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Vous utilisez Claude Code comme moi pour bosser plus vite sur vos projets de dev ? H\u00e9 bien j&#8217;esp\u00e8re que vous n&#8217;avez jamais eu la mauvaise surprise de voir l&#8217;agent lancer un petit rm -rf ~\/ qui d\u00e9truit tout votre r\u00e9pertoire home en 2 secondes. Parce que oui, \u00e7a arrive malheureusement, et plusieurs devs en ont fait les frais cette ann\u00e9e&#8230; Le probl\u00e8me c&#8217;est que les agents IA, aussi intelligents soient-ils, peuvent manquer de garde-fous sur ce qui est vraiment dangereux. Vous leur dites &#8220;nettoie le projet&#8221; et hop, ils interpr\u00e8tent \u00e7a un peu trop litt\u00e9ralement et une fois que c&#8217;est fait, y&#8217;a plus qu&#8217;\u00e0 pleurer devant son terminal vide. C&#8217;est pour \u00e7a qu&#8217;un d\u00e9veloppeur du nom de kenryu42 a cr\u00e9\u00e9 Claude Code Safety Net qui est un plugin pour Claude Code qui agit comme un garde-fou m\u00e9canique. Son id\u00e9e c&#8217;est de bloquer les commandes destructives AVANT qu&#8217;elles ne s&#8217;ex\u00e9cutent, et pas juste avec des r\u00e8gles b\u00eates genre &#8220;si la commande commence par rm -rf&#8221;. Le plugin est bien plus malin que \u00e7a puisqu&#8217;il fait une analyse s\u00e9mantique des commandes. Il comprend la diff\u00e9rence entre git checkout -b nouvelle-branche (qui est safe, \u00e7a cr\u00e9e juste une branche) et git checkout &#8212; . qui lui va d\u00e9gager tous vos changements non committ\u00e9s sur les fichiers suivis. Les deux commencent pareil, mais l&#8217;une vous sauve et l&#8217;autre vous ruine psychologiquement, vous for\u00e7ant \u00e0 vous r\u00e9fugier dans la coca\u00efne et la prostitution. Et c&#8217;est pareil pour les force push. Le plugin bloque git push &#8211;force qui peut \u00e9craser l&#8217;historique distant et rendre la r\u00e9cup\u00e9ration tr\u00e8s difficile, mais il laisse passer git push &#8211;force-with-lease qui est la version plus s\u00fbre, car elle v\u00e9rifie que la ref distante correspond \u00e0 ce qu&#8217;on attend (m\u00eame si ce n&#8217;est pas une garantie absolue). Et le truc vraiment bien foutu, c&#8217;est qu&#8217;il d\u00e9tecte aussi les commandes planqu\u00e9es dans des wrappers shell. Vous savez, le genre de pi\u00e8ge o\u00f9 quelqu&#8217;un \u00e9crit sh -c &#8220;rm -rf \/&#8221; pour bypass les protections basiques. Le plugin parse r\u00e9cursivement et rep\u00e8re la commande dangereuse \u00e0 l&#8217;int\u00e9rieur. Il fait m\u00eame la chasse aux one-liners Python, Ruby ou Node qui pourraient faire des d\u00e9g\u00e2ts. C\u00f4t\u00e9 rm -rf, le comportement par d\u00e9faut est plut\u00f4t permissif mais intelligent&#8230; les suppressions dans \/tmp ou dans le dossier de travail courant sont autoris\u00e9es parce que c&#8217;est souvent l\u00e9gitime, par contre, tenter de nuke votre home ou des dossiers syst\u00e8me, c&#8217;est non n\u00e9gociable. Et pour les paranos (comme moi), y&#8217;a un mode strict qu&#8217;on active avec SAFETY_NET_STRICT=1. Dans ce mode, toute commande non parseable est bloqu\u00e9e par d\u00e9faut, et les rm -rf m\u00eame dans le projet courant demandent validation. Mieux vaut pr\u00e9venir que pleurer. Si \u00e7a vous chauffe, l&#8217;installation se fait via le syst\u00e8me de plugins de Claude Code avec deux commandes : \/plugin marketplace add kenryu42\/cc-marketplace \/plugin install safety-net@cc-marketplace Et hop, vous red\u00e9marrez Claude Code et c&#8217;est op\u00e9rationnel. Ensuite, quand le plugin bloque une commande, il affiche un message explicite genre &#8220;BLOCKED by safety_net.py &#8211; Reason: git checkout &#8212; discards uncommitted changes permanently&#8221; donc vous savez exactement pourquoi \u00e7a a \u00e9t\u00e9 refus\u00e9 et vous pouvez d\u00e9cider en connaissance de cause si vous voulez vraiment le faire. Bref, j&#8217;ai test\u00e9 ce plugin sur mes projets et c&#8217;est vraiment cool alors si vous utilisez Claude Code en mode YOLO, \u00e7a vous \u00e9vitera de rejoindre le club des devs qui ont tout perdu \u00e0 cause d&#8217;un agent trop z\u00e9l\u00e9&#8230;<\/p>\n","protected":false},"author":1,"featured_media":1898,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"give_campaign_id":0,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_kadence_starter_templates_imported_post":false,"footnotes":""},"class_list":["post-1897","page","type-page","status-publish","has-post-thumbnail","hentry"],"campaignId":"","_links":{"self":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/1897","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/comments?post=1897"}],"version-history":[{"count":0,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/1897\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media\/1898"}],"wp:attachment":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media?parent=1897"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}