AI Extensions, 7 novembre : Quarry et le sens d'une analyse incomplète
Quarry applique des règles de séquence aux traces d'agents. Analyses incomplètes, adaptateurs et blocage des actions restent des frontières distinctes.

Une lecture de fichier suivie d'une requête HTTP peut avoir un autre sens que les mêmes appels dans l'ordre inverse. Cisco Project Quarry propose des règles portant sur des séquences d'événements d'un agent, au-delà de l'évaluation de chaque message isolé.
Cette revue de l'alpha libre et de son plugin a été vérifiée le 7 novembre 2026. J'ai lu le dépôt, la documentation, la configuration d'exemple et la licence. Je n'ai pas installé le paquet, connecté de modèle, analysé de conversations privées ou reproduit l'analyse d'incident de Cisco. Le dernier commit de la branche principale est daté du 3 novembre. C'est un signal de maintenance, pas une mesure de qualité.
Le plugin donne accès au détecteur
La documentation du plugin décrit cinq outils en lecture seule : recherche de référence, compilation, arbres de décision, comptage des parcours et analyse d'un JSON de conversation fourni explicitement. MCP relie l'hôte de l'agent au moteur installé localement. L'outil d'analyse ne lit pas lui-même des fichiers ou des sessions sauvegardées. L'hôte peut avoir d'autres accès aux fichiers : ce contrat ne garantit donc pas l'isolation de toute la session.
Le lancement documenté utilise le dépôt comme une seule installation et une configuration uv verrouillée. Le README indique Python 3.11 à 3.13. Les exemples locaux n'exigent pas de clé fournisseur. Ajouter un modèle sémantique change la frontière : son adaptateur peut transmettre des éléments choisis de la conversation au point de terminaison configuré.
Le fichier LICENSE contient Apache 2.0, avec ses obligations de licence et de mentions ainsi que son absence de garantie. Le DSL est en alpha et peut changer avant la version 1.0. Je fixerais une révision examinée pour un essai.
Ce que l'automate évalue
Selon How Quarry works, les règles sont analysées, validées et compilées en automates finis déterministes au chargement. Le moteur construit une trace finie à partir de la conversation. Un message assistant contenant un appel d'outil produit un événement de message et un événement d'appel. Les positions des événements peuvent différer des index des messages.
Les contrôles locaux examinent noms d'outils, arguments, textes et compteurs. Les contrôles de modèle facultatifs transforment scores ou catégories en prédicats pour la même logique. Avec les mêmes résultats de contrôles, l'automate suit le même chemin ; un modèle peut pourtant répondre différemment lors d'un autre appel.
L'exemple documentaire cherche la lecture d'un chemin sensible avant une requête vers un hôte donné. Une correspondance établit ce motif sur la trace fournie. Elle ne prouve pas que la requête transporte les octets du fichier. Cette affirmation demande une comparaison des valeurs et un enregistrement adéquat. L'activité absente de la trace demeure invisible.
Conserver le troisième résultat
La CLI distingue le code 0, analyse complète sans correspondance ; 1, complète avec correspondance ; 2, entrée invalide ou analyse incomplète. Un délai dépassé ou une erreur d'évaluation ne signifie pas « rien trouvé ».
Le guide d'intégration demande de vérifier le statut avant d'utiliser les correspondances. QuarryGuard le fait avant de retourner ; avec DSLScanner, l'appelant doit le faire. Cet exemple original n'a pas été exécuté et ne constitue pas un mécanisme de blocage :
def classify_supplied_trace(scanner, conversation):
result = scanner.scan_data(conversation)
result.raise_for_status()
return "matched" if result.rule_matches else "complete_clean"
# L'hôte doit traiter explicitement les erreurs d'analyse.
# Le résultat n'autorise ni action ni divulgation.
L'hôte pourrait suspendre une opération après une correspondance ou un échec, avec une frontière d'action distincte. Une analyse après l'envoi HTTP ne peut pas arrêter rétroactivement cet envoi. Une analyse sans correspondance ne crée pas le consentement de l'utilisateur.

La portée d'un témoin
Lorsque les explications sont activées, Quarry fournit des événements justificatifs, appelés witness. Pour certaines règles, le moteur retire des événements et réévalue la règle pour réduire l'ensemble. Les limites de travail peuvent laisser des événements superflus ; un autre ensemble peut convenir. Il s'agit d'une explication possible, pas forcément la plus courte ni du dossier complet d'un incident.
Deux éléments voisins dans le témoin réduit peuvent être éloignés dans la trace d'origine. Les règles de distance exigent les positions originales. Une condition d'absence ou portant sur tous les messages peut citer l'ensemble entier ; une condition statique peut correspondre avec un témoin vide. Un témoin vide n'implique donc pas un échec.
Le masquage de certains secrets et la troncature des extraits ne rendent pas leur partage sûr. Témoins, erreurs de validation et requêtes aux modèles peuvent contenir des données privées. Le guide déconseille l'envoi de diagnostics bruts vers une télémétrie publique.
Un essai limité avant adoption
Je proposerais des données inventées : lecture puis requête, ordre inverse, hôte bénin distinct, arguments mal formés et dépassement de limite. Conserver révision de règle, statut complet, correspondances et positions originales. Ce sont des cas proposés, pas des résultats obtenus avec Quarry.
Règle relue -> compilation -> moteur candidat
Trace fictive -> validation -> complète sans/avec correspondance
|
invalide ou incomplète
|
politique d'erreur de l'hôte
Le guide de configuration décrit les limites d'entrée, de temps, de compilation et d'appels modèle. Une grande trace rejetée ne devient pas une conversation raccourcie déclarée saine. Les politiques compilées enregistrées demandent une provenance authentifiée.
La configuration d'exemple compte quatorze fichiers de règles. Quatre exemples sémantiques utilisent des simulations déterministes par mots-clés ; le commentaire interdit de les employer pour des décisions en production. Une démonstration sans clé ne mesure pas la détection d'attaques.
Mon avis : Quarry mérite un essai limité pour des règles de séquence inspectables. Alpha, adaptateurs et statut d'achèvement doivent rester visibles. L'annonce Cisco présente un incident de façon contrefactuelle, sans reproduction sur ses données originales. Cela ne fournit aucun taux de détection.