NOPE LinkedIn
Déclarer ses outils : comment un 1,5B passe de 6 % à 94,5 %
Agents-outils sous 2B · N°1

Déclarer ses outils : comment un 1,5B passe de 6 % à 94,5 %

Déclarer ses outils : comment un 1,5B passe de 6 % à 94,5 % Résumé exécutif Mes agents-outils tournent sur Qwen 2.5 3B + LoRA, sur CPU, sans GPU. En voulant réévaluer si ce socle était encore le bon en 2026, j’ai construit un banc d’exactitude d’appel d’outil : 214 cas figés, 40 fonctions OPNsense, plus 14 cas où la bonne réponse est de ne rien appeler. Le premier chiffre m’a arrêté net.

Le refus : ce qu'aucun palmarès ne mesure
Agents-outils sous 2B · N°2

Le refus : ce qu'aucun palmarès ne mesure

Le refus : ce qu’aucun palmarès ne mesure Résumé exécutif Tous les bancs d’appel d’outil que j’ai croisés mesurent la même chose : le modèle appelle-t-il la bonne fonction avec les bons arguments ? Aucun ne mesure l’inverse — sait-il ne PAS appeler ? Mon propre corpus d’entraînement ne le mesurait pas davantage : 1978 exemples, zéro sans appel d’outil. J’ai donc construit 14 cas où la bonne réponse est de se taire, répartis en quatre genres.

An LLM with admin rights on your firewall: how not to get pwned
cyber-agent-engine

An LLM with admin rights on your firewall: how not to get pwned

🇫🇷 Version française 💻 Source code (AGPL): github.com/patlegu/cyber-agent-engine A LLM that can block an IP There is something vertiginous about giving a language model the ability to call block_ip or add_filter_rule on a production firewall. You feed it a sentence — “block this IP that’s scanning the LAN” — and a few hundred milliseconds later, a rule shows up in OPNsense. That is exactly the promise of AI-assisted DevSecOps: translate intent into action, with no console, no ticket, no CLI in between.

Assemble and operate with trust: bounded audit, multi-server, packaging, CI
cyber-agent-engine

Assemble and operate with trust: bounded audit, multi-server, packaging, CI

🇫🇷 Version française 💻 Source code (AGPL): github.com/patlegu/cyber-agent-engine From “it works” to “deployable by a third party” The first four articles in this series described boundaries: tokens rather than real values (article 2), a fail-closed policy and human approval (article 3), the LLM off the equipment it drives (article 4). Each answers the question “what is the system allowed to do, to see, or to leak?” This one shifts register: it is no longer about what the system does while it runs, but about what it takes for a third party — not the author of the code, not someone who knows the internals — to run it with confidence, on their own infrastructure, without re-reading all of core/ to check that no guarantee tears at startup.

Assembler et exploiter en confiance : audit borné, multi-serveur, packaging, CI
cyber-agent-engine

Assembler et exploiter en confiance : audit borné, multi-serveur, packaging, CI

🇬🇧 English version 💻 Code source (AGPL) : github.com/patlegu/cyber-agent-engine De « ça marche » à « déployable par un tiers » Les quatre premiers articles de cette série ont décrit des frontières : jetons plutôt que valeurs réelles (article 2), politique fail-closed et approbation humaine (article 3), LLM hors de l’équipement qu’il pilote (article 4). Chacune répond à la question « qu’est-ce que le système a le droit de faire, de voir, ou de laisser fuiter ?

Comment on l'a construit : développement piloté par sous-agents et revue adversariale
cyber-agent-engine

Comment on l'a construit : développement piloté par sous-agents et revue adversariale

🇬🇧 English version 💻 Code source (AGPL) : github.com/patlegu/cyber-agent-engine La rigueur comme livrable Les cinq articles précédents de cette série ont décrit des frontières techniques : jetons plutôt que valeurs réelles, politique fail-closed, topologie hors-boîte, audit borné et packaging reproductible. Ce dernier article change d’angle. Il ne parle pas de ce que cyber-agent-engine fait, mais de comment il a été construit — et pourquoi ce comment fait partie du livrable au même titre que le code.

Deny by default: fail-closed policy and human approval
cyber-agent-engine

Deny by default: fail-closed policy and human approval

🇫🇷 Version française 💻 Source code (AGPL): github.com/patlegu/cyber-agent-engine The firewall reflex, applied to an AI decision The first article in this series laid out the general thesis: an LLM that drives a production firewall must never cross, on its own, the boundary between intent and execution. The second showed how that boundary protects data — the model only ever sees tokens, never a real IP. This one tackles the other half of the problem: once the LLM has proposed an action on tokens, who decides whether it’s allowed to actually happen?

Hors de la boîte : pourquoi le LLM ne doit pas vivre dans le firewall
cyber-agent-engine

Hors de la boîte : pourquoi le LLM ne doit pas vivre dans le firewall

🇬🇧 English version 💻 Code source (AGPL) : github.com/patlegu/cyber-agent-engine Une question de topologie, pas seulement de sécurité Les trois premiers articles de cette série ont détaillé comment cyber-agent-engine encadre un LLM qui pilote un pare-feu de production : jetons plutôt que valeurs réelles (article 2), politique fail-closed et approbation humaine (article 3). Celui-ci s’attaque à une question antérieure, presque architecturale avant d’être sécuritaire : où ce LLM doit-il physiquement s’exécuter ?

How it was built: subagent-driven development and adversarial review
cyber-agent-engine

How it was built: subagent-driven development and adversarial review

🇫🇷 Version française 💻 Source code (AGPL): github.com/patlegu/cyber-agent-engine Rigor as a deliverable The five previous articles in this series described technical boundaries: tokens rather than real values, a fail-closed policy, an off-box topology, bounded audit, and reproducible packaging. This last article shifts angle. It is not about what cyber-agent-engine does, but about how it was built — and why that how is part of the deliverable just as much as the code.

Le LLM ne voit que des jetons : tokenisation PII à la frontière d'exécution
cyber-agent-engine

Le LLM ne voit que des jetons : tokenisation PII à la frontière d'exécution

🇬🇧 English version 💻 Code source (AGPL) : github.com/patlegu/cyber-agent-engine L’invariant Le premier article de cette série posait la thèse générale de cyber-agent-engine : un LLM qui pilote un pare-feu de production ne doit jamais franchir seul la frontière entre intention et exécution. Celui-ci descend dans le pilier le plus contre-intuitif de cette architecture, et probablement le plus simple à énoncer : le LLM de raisonnement ne voit jamais une IP réelle, un hostname réel ou un secret réel.

Off-box: why the LLM must not live inside the firewall
cyber-agent-engine

Off-box: why the LLM must not live inside the firewall

🇫🇷 Version française 💻 Source code (AGPL): github.com/patlegu/cyber-agent-engine A question of topology, not just security The first three articles in this series detailed how cyber-agent-engine constrains an LLM that drives a production firewall: tokens rather than real values (article 2), a fail-closed policy and human approval (article 3). This one tackles a prior question, almost architectural before it is a security matter: where must this LLM physically run? On the equipment it drives, or remotely, on the other side of a network call?

Refuser par défaut : politique fail-closed et approbation humaine
cyber-agent-engine

Refuser par défaut : politique fail-closed et approbation humaine

🇬🇧 English version 💻 Code source (AGPL) : github.com/patlegu/cyber-agent-engine Le réflexe firewall, appliqué à une décision d’IA Le premier article de cette série posait la thèse générale : un LLM qui pilote un pare-feu de production ne doit jamais franchir seul la frontière entre intention et exécution. Le deuxième montrait comment cette frontière protège les données — le modèle ne voit que des jetons, jamais une IP réelle. Celui-ci s’attaque à l’autre moitié du problème : une fois que le LLM a proposé une action sur des jetons, qui décide si elle a le droit de se produire ?