Shadowban Radar
BlogTest de shadowban
Blog/Guide
Guide

Filtre « multi-step reply spam » de X : ce que montre le code (2026)

Le 4 septembre 2026, X a ajouté un filtre contre les chaînes d'auto-réponses sous des comptes de 1 000 abonnés et plus. Ce que fait son code public.

SE

Par Sébastien Ego

Fondateur de Shadowban Radar

Publié le 7 octobre 2026 · 6 min de lecture

Le filtre multi-step reply spam de X en un coup d'œil : réponses à ses propres réponses, posts racines de 1 000 abonnés ou plus, 2 posts signalés ou plus, une étiquette et un score de 0
  • Qu'a ajouté X à son code open source le 4 septembre 2026 ?
  • Quelles réponses le filtre « multi-step reply spam » peut-il viser ?
  • Quels comptes le filtre exclut-il ?
  • Comment le modèle décide-t-il ce qui est du spam ?
  • Quels garde-fous suivent la réponse du modèle ?
  • Que se passe-t-il pour une réponse signalée par le filtre ?
  • Ce que les fichiers publiés ne montrent pas
  • Comment savoir si vos réponses sont touchées ?
  • Que suggère le code pour s'en protéger ?
  • Sources

Sur cette page

  • Qu'a ajouté X à son code open source le 4 septembre 2026 ?
  • Quelles réponses le filtre « multi-step reply spam » peut-il viser ?
  • Quels comptes le filtre exclut-il ?
  • Comment le modèle décide-t-il ce qui est du spam ?
  • Quels garde-fous suivent la réponse du modèle ?
  • Que se passe-t-il pour une réponse signalée par le filtre ?
  • Ce que les fichiers publiés ne montrent pas
  • Comment savoir si vos réponses sont touchées ?
  • Que suggère le code pour s'en protéger ?
  • Sources

Le code open source de X contient un filtre, ajouté le 4 septembre 2026, qui vise les chaînes d'auto-réponses sous les posts de comptes d'au moins 1 000 abonnés. Quand un modèle d'IA signale au moins 2 posts du même auteur dans une telle chaîne, le code de X donne à chaque post signalé une étiquette reply spam et un score de classement de la réponse de 0.

Qu'a ajouté X à son code open source le 4 septembre 2026 ?

Le dépôt public xai-org/x-algorithm a reçu le 4 septembre 2026 un nouveau flux anti-spam de réponses, multi_step_reply_spam. Le commit a ajouté quatre fichiers dans grox/flows/reply_spam/ :

  • plan_multi_step_reply_spam.py enchaîne 4 étapes : un filtre d'éligibilité, l'hydratation des médias, la détection du spam et une étape d'écriture.
  • task_multi_step_reply_spam.py contient le filtre, l'étape de détection et l'étape d'écriture.
  • classifier_multi_step_reply_spam.py construit le fil que lit le modèle, analyse sa réponse et applique 3 garde-fous.
  • state_multi_step_reply_spam.py stocke le résultat : une liste d'identifiants de posts signalés et une raison.

Le README de X décrit le dossier grox/ comme du code qui s'exécute à mesure que les posts sont publiés, avec des classifieurs pour des catégories comme le spam. Le nouveau plan est enregistré auprès des mêmes générateurs de flux que les autres flux de classement des réponses de X.

Le fichier de tâches a été modifié de nouveau le 8 septembre 2026 : son étape d'écriture appelle désormais une seule fonction de publication au lieu de deux écritures séparées. La valeur écrite reste 0.0.

Quelles réponses le filtre « multi-step reply spam » peut-il viser ?

Vérifiez votre compte maintenant

Gratuit, sans connexion, résultat en quelques secondes.

Test de shadowban

Le filtre (TaskMultiStepReplySpamFilter) ne retient une réponse que si toutes ces conditions sont réunies :

  • Le post est une réponse qui a des ancêtres, et aucun d'eux n'a été supprimé.
  • Son parent direct est un post du même auteur : le compte se répond à lui-même.
  • Il se situe au moins 2 niveaux sous le post racine.
  • Son auteur n'est pas l'auteur du post racine.
  • L'auteur du post racine a au moins 1 000 abonnés (FOLLOWER_COUNT_THRESHOLD_FOR_SPAM_DETECTION = 1000). En dessous, le code écarte la réponse avec la raison low_blast_radius.

La plus petite forme qui qualifie est un post d'un autre compte, une réponse du compte évalué, puis une seconde réponse de ce même compte à sa propre première réponse. Le filtre ne regarde jamais le nombre d'abonnés de l'auteur de la réponse.

Une réponse dont le parent direct appartient à quelqu'un d'autre est écartée (parent_not_same_author). Il en va de même de toute réponse sous le propre post de son auteur (same_user_reply_as_root).

Quels comptes le filtre exclut-il ?

Le filtre « multi-step reply spam » de X écarte 5 types de cas avant qu'aucun modèle ne tourne :

  • Les réponses écrites par les comptes Grok ou Gork.
  • Les auteurs marqués high page rank (version 2), vérifiés avec is_high_page_rank_v2_user.
  • Les auteurs portant un badge gris, vérifiés avec is_grey_badge_user.
  • Les réponses sous un auteur racine de moins de 1 000 abonnés.
  • Les fils dont un post ancêtre a été supprimé, ou dont un post n'a pas de fiche d'auteur.

Ces fichiers ne définissent ni « high page rank » ni « badge gris ».

Comment le modèle décide-t-il ce qui est du spam ?

Le code de X montre ce que reçoit le modèle et ce qui se passe après sa réponse, mais pas les critères qu'il applique. Le scoreur est lié à l'identifiant de modèle oai-gemma4-26b-2, défini dans constants.py.

Le modèle lit :

  • le profil de l'auteur de la réponse (nom, identifiant, bio et lieu du profil) ;
  • le fil sous forme de posts numérotés, où le Post 0 est le post racine, marqué « never flag », et le dernier post est marqué « the reply being evaluated » ;
  • pour chaque post, l'identifiant, le nombre d'abonnés, le nom affiché, le texte, les URL et jusqu'à 2 médias ;
  • la bio de l'auteur racine, ajoutée au post racine.

Un fil de plus de 10 ancêtres est réduit aux 5 premiers et aux 5 derniers (MAX_THREAD_SIZE = 10). Le modèle répond en JSON : les index des posts qu'il juge être du spam, et une raison.

Le prompt lui-même n'est pas public. prompts.py charge un gabarit nommé multi_step_reply_spam_system.j2, absent du dépôt, et le commentaire du fichier indique que les prompts sont exclus pour limiter la manipulation du système. Le README de X range les prompts de Grox parmi les fichiers qu'il ne publie pas.

Quels garde-fous suivent la réponse du modèle ?

Trois contrôles s'exécutent dans cet ordre, et chacun peut effacer les signalements :

  1. Si la réponse la plus récente ne figure pas parmi les posts signalés, tous les signalements sont abandonnés.
  2. Les posts signalés écrits par d'autres auteurs sont retirés.
  3. S'il reste exactement 1 post signalé, il est abandonné.

Une sanction exige donc au moins 2 posts signalés du même auteur, réponse la plus récente comprise.

Que se passe-t-il pour une réponse signalée par le filtre ?

Pour chaque post signalé du fil, le code de X applique une étiquette de sécurité reply spam et publie un score de classement de la réponse de 0.0. L'étape d'écriture (TaskWriteMultiStepReplySpamReplyRanking) est désactivée hors production par DisableTaskForNonProd.

Pour chaque post signalé, le code :

  • applique l'étiquette de sécurité RiskyHighVizReply, sauf si l'auteur est high page rank, porte un badge gris ou est un compte de test (un score de crédibilité de 62 ou plus compte comme high page rank quand ce score existe) ;
  • publie un score de classement de la réponse de 0.0 avec la raison donnée par le modèle, réduite à ses 500 derniers caractères.

Le principal scoreur de classement des réponses du même dossier refuse tout score hors d'une grille de 0 à 3 : 0 est donc la valeur la plus basse de cette échelle. Quand un post porte un 0, l'étape d'écriture standard du classement des réponses ignore tout nouveau score qui n'est pas inférieur à celui déjà stocké.

Ces fichiers agissent sur des posts pris un à un. Ils ne suspendent pas le compte et ne l'étiquettent pas dans son ensemble.

Ce que les fichiers publiés ne montrent pas

Le dépôt ne montre pas comment une vue de conversation utilise le score ou l'étiquette : une recherche du nom du score ne le trouve que dans le dossier reply_spam. Le nom d'étiquette RiskyHighVizReply n'apparaît nulle part dans le dossier under-the-hood du dépôt, liste des étiquettes comprise : le code publié ne montre donc aucune entrée pour elle dans Under the Hood.

Comment savoir si vos réponses sont touchées ?

Pour savoir si vos réponses sont touchées, regardez où elles se placent dans la conversation. Un reply deboosting (déclassement des réponses) signifie que vos réponses sont reléguées en bas d'une conversation ou cachées derrière « Afficher plus de réponses ».

Shadowban Radar définit ce test de l'extérieur. Le déclassement des réponses est détecté quand X sert une réponse dans la conversation lue par ordre chronologique, mais la laisse hors de l'affichage par défaut de cette même conversation. La page sur le reply deboosting explique comment vérifier à la main.

Un test gratuit sur Shadowban Radar lance ce contrôle sur n'importe quel identifiant public, sans connexion. Il montre la position d'une réponse, pas la cause. Une réponse mal classée peut venir de plusieurs signaux : le test ne peut donc pas dire si ce filtre l'a signalée.

Une réponse absente de la conversation est une autre restriction, un ghost ban.

Que suggère le code pour s'en protéger ?

X n'a pas publié les critères du modèle : ces points découlent donc uniquement des conditions du filtre.

  • Le dire une seule fois. Le filtre n'agit que si au moins 2 posts du même auteur sont signalés, et une réponse isolée sous le post de quelqu'un d'autre ne peut pas qualifier. Fusionner plusieurs courtes réponses en une seule évite la chaîne que cherche le filtre.
  • Mettre le détail supplémentaire dans son propre post. Une suite, un lien ou une explication plus longue peuvent aller dans votre propre post ou fil : les réponses sous votre propre post ne sont jamais évaluées (same_user_reply_as_root).
  • Répondre aux gens, pas à soi-même. Une réponse dont le parent direct est le post d'un autre compte est hors du filtre (parent_not_same_author).
  • Une chaîne est jugée dans son ensemble. Le modèle lit tout le fil d'un coup, et chaque post signalé du même auteur reçoit son propre score de 0.

Les fichiers reply_spam ne contiennent aucune étape qui lève une étiquette ou relève un 0 une fois écrit.

Sources

Lu le 7 octobre 2026 dans le dépôt xai-org/x-algorithm, au commit 78460ca. Les 4 fichiers du filtre ont été ajoutés dans le commit 9b0dc31 le 4 septembre 2026.

  • plan_multi_step_reply_spam.py : les 4 étapes et leur ordre.
  • task_multi_step_reply_spam.py : éligibilité, détection et écriture.
  • classifier_multi_step_reply_spam.py : le fil donné au modèle et les 3 garde-fous.
  • state_multi_step_reply_spam.py : le résultat stocké.
  • task_write.py : la fonction d'étiquette et l'écriture standard du classement des réponses.
  • README.md : la description de grox/ et la liste des fichiers non publiés.
  • Commit 9b0dc31 : 4 septembre 2026.

Shadowban Radar n'est pas affilié à X Corp. Pour comprendre le lien entre le rapport de X et un test en direct, voir Under the Hood de X.

Questions fréquentes

C'est un filtre du code open source de X, ajouté le 4 septembre 2026, qui cherche les chaînes de réponses où un compte se répond à lui-même sous le post d'un compte de 1 000 abonnés au moins. Un modèle d'IA lit le fil et signale les posts qu'il juge être du spam. Chaque post signalé reçoit une étiquette reply spam et un score de classement de la réponse de 0.

Seulement les réponses dont le parent direct est un post du même auteur, situées au moins 2 niveaux sous le post racine. L'auteur de la réponse doit être un autre compte que celui du post racine, qui compte au moins 1 000 abonnés. Une réponse au post d'une autre personne n'est jamais retenue, ni une réponse sous votre propre post.

Le code écarte les comptes Grok et Gork, les auteurs marqués high page rank (version 2) ou portant un badge gris, et les réponses sous un auteur racine de moins de 1 000 abonnés. Il écarte aussi les fils dont un post ancêtre a été supprimé. Les fichiers ne définissent ni high page rank ni badge gris.

Le code de X applique l'étiquette de sécurité RiskyHighVizReply à chaque post signalé et publie pour lui un score de classement de la réponse de 0.0, avec la raison donnée par le modèle. Ces écritures sont désactivées hors production. Elles portent sur des posts, pas sur le compte : aucun des quatre fichiers ne suspend ni n'étiquette le compte.

Le dépôt ne le dit pas. Il montre que l'étape d'écriture ne tourne qu'en production (DisableTaskForNonProd), et que le filtre et la détection ont été publiés le 4 septembre 2026. Savoir si le système en ligne correspond aux fichiers publiés, et depuis quand, n'est pas visible dans le code.

Ce n'est pas publié. Le gabarit du prompt, multi_step_reply_spam_system.j2, est absent du dépôt, et le README de X range les prompts de Grox parmi les fichiers qu'il ne publie pas. Le code public montre ce que reçoit le modèle et les garde-fous qui suivent sa réponse, pas ses critères.

Lancez le test gratuit de Shadowban Radar avec votre identifiant : son check reply deboosting montre si une réponse est laissée hors de l'affichage par défaut de sa conversation. Il montre la position d'une réponse, pas la cause : il ne peut donc pas dire si ce filtre l'a signalée.

Articles similaires

Les quatre restrictions du glossaire du shadowban sur X : search suggestion ban, search ban, ghost ban et reply deboosting, parmi 37 termes
3 octobre 2026Guide

Glossaire du shadowban Twitter (X) : 37 termes définis (2026)

Définition du shadowban Twitter (X) et de 37 termes : ghost ban, search ban, reply deboosting, Under the Hood et mode lecture seule, en mots simples.

Mon compte Twitter (X) est-il restreint ? Comment vérifier (2026)
29 septembre 2026Guide

Mon compte Twitter (X) est-il restreint ? Comment vérifier (2026)

Compte X restreint ou limité ? X annonce les comptes verrouillés, limités et en lecture seule, mais cache 4 autres restrictions. Vérifiez les deux en 2 minutes.

La page d'accueil de Postiz, un écran de recherche de Tweet Hunter et un écran des workers de superX, les outils comparés dans ce classement
3 octobre 2026Comparatif

Meilleurs outils de croissance pour Twitter (X) en 2026 : 3 testés

Meilleurs outils de croissance pour Twitter (X) en 2026, testés et notés : superX 8,8/10, Postiz 8,4/10, Tweet Hunter 8,3/10. Dès $29 par mois, essais inclus.

Vérifiez n'importe quel pseudo maintenant : gratuit, sans connexion.

@

Jusqu'à 10 vérifications gratuites par jour. Sans connexion ni mot de passe.

Shadowban Radar

Restrictions

  • Restriction des suggestions
  • Restriction de recherche
  • Réponses masquées
  • Déclassement des réponses

Guides

  • Suis-je shadowban ?
  • Combien de temps cela dure ?
  • Que faire
  • Suivi
  • Comparatif des outils
  • Méthodologie
  • Statistiques
  • Blog

Produit

  • Tarifs
  • L'audit
  • Exemple d'audit
  • Nouveautés
  • Pourquoi j'ai créé Radar
  • Se connecter
  • Confidentialité
  • Conditions

SSuivez-moi sur X·Avis ou bug

Sans affiliation avec X Corp. X est une marque de X Corp.

Autres languesEnglishFrançaisEspañolPortuguês (Brasil)日本語中文한국어ภาษาไทย