claude-watermark-cleaner README

The project's README from github.com/mikiane/claude-watermark-cleaner. As one markdown file: README.md.

Nettoyeur de watermark textuel Claude

Projet expérimental et critique : ce dépôt cherche à démontrer qu'un watermark statistique appliqué au texte est contournable et risque surtout de provoquer davantage de calcul, de coût et de consommation énergétique.

Pourquoi ce projet existe

Ce projet défend une thèse assumée : imposer un watermark statistique à du texte généré est une contrainte techniquement absurde. Une marque que l'on peut affaiblir en reformulant le texte ne constitue pas une preuve fiable de son origine. Elle crée en revanche une forte incitation à effectuer une seconde passe avec une autre IA.

Le résultat prévisible est contre-productif :

Autrement dit, la contrainte européenne risque d'obtenir l'inverse de l'effet recherché : elle ne supprimera pas les usages que ses utilisateurs veulent dissimuler, mais fera exploser les usages d'IA destinés à contourner la marque. Ce dépôt matérialise cette critique avec un outil volontairement simple.

Conclusion de l'analyse

La nouvelle marque annoncée par Anthropic n'est pas décrite comme une simple suite de caractères Unicode cachés. Elle est appliquée pendant la génération, au niveau du modèle, puis voyage avec le texte lors d'un copier-coller. La documentation technique du détecteur n'est pas encore publiée.

La méthode exacte n'est donc pas publiquement vérifiable à ce jour. L'hypothèse technique la plus crédible est une signature statistique : le modèle favorise légèrement certains tokens parmi plusieurs choix valides, et le détecteur mesure ce biais sur un passage suffisamment long. Il s'agit ici d'une inférence, pas d'un détail confirmé par Anthropic. Elle correspond toutefois au fonctionnement publié de systèmes comparables comme SynthID Text. Dans ce cas :

Sources :

Solution livrée

clean_claude_watermark.py réalise deux étapes :

  1. suppression des caractères Unicode invisibles ou directionnels suspects ;
  2. reformulation contrôlée du texte par un modèle autre que Claude.

Le script protège les blocs de code, le code en ligne, les URL et les variables. Il refuse également une sortie si un nombre a changé. Il fonctionne uniquement avec la bibliothèque standard de Python.

Moteurs utilisés et stratégie à venir

L'outil utilise actuellement Ollama et Codex :

Ollama n'injecte actuellement pas de watermark par lui-même. Le comportement exact dépend néanmoins du modèle chargé. Codex est un fallback pratique, mais un service distant pourrait toujours faire évoluer sa politique de marquage.

Si Ollama, Codex ou les modèles utilisés ajoutent un watermark à l'avenir, le projet basculera vers un modèle open source dont la chaîne de génération est auditable et pour lequel le watermarking peut être explicitement désactivé. Pour une démonstration sans dépendance à un fournisseur distant, le mode Ollama avec un modèle open source est donc recommandé.

Utilisation

Traiter un fichier :

python3 clean_claude_watermark.py texte.md -o texte-nettoye.md

Traiter directement le presse-papiers macOS :

python3 clean_claude_watermark.py --clipboard

Utiliser explicitement un modèle Ollama local :

python3 clean_claude_watermark.py texte.md -o texte-nettoye.md \
  --engine ollama --model qwen3:8b

Le mode par défaut effectue jusqu'à deux tentatives et conserve la plus forte. Il s'arrête après la première si au moins 70 % des séquences de cinq tokens ont déjà été perturbées. Pour limiter le traitement à une tentative :

python3 clean_claude_watermark.py texte.md -o texte-nettoye.md --passes 1

Ne retirer que d'éventuels caractères invisibles, sans reformuler :

python3 clean_claude_watermark.py texte.md -o texte-normalise.md --engine clean

Le script affiche sur la sortie d'erreur le moteur utilisé, le nombre de caractères invisibles retirés et le taux de variation lexicale. Une variation des séquences de cinq tokens inférieure à 60 % déclenche un avertissement.

Tests

Le projet n'utilise aucune dépendance Python externe. La suite de tests se lance avec :

python3 -m unittest discover -s tests -v

Limites

Position du projet

Cet outil n'affirme pas qu'un texte réécrit devient humain. Il montre qu'un watermark probabiliste n'est pas un mécanisme robuste de preuve ou d'attribution face à un utilisateur motivé. La provenance utile devrait reposer sur des mécanismes explicites, vérifiables et proportionnés, pas sur une contrainte qui pousse mécaniquement à consommer une seconde inférence.

claude-watermark-cleaner (mikiane/claude-watermark-cleaner)

Searching Database…

What is this?An experimental Python CLI that tries to strip Claude's statistical text watermark: it removes suspicious invisible Unicode characters, then has a non-Claude model rewrite the text. It doubles as a critical demo arguing such watermarks are easy to circumvent.
Is it a library I import, or a program I run?A single command-line script, cleanclaudewatermark.py, written in pure Python — it relies only on the standard library, so there are no extra packages to install.
How do I run it on my text?Point it at a text file or run it on the macOS clipboard directly; you can also force a specific local Ollama model. By default it makes up to two rewrite attempts and keeps the stronger one, stopping early once 70% of five-token sequences are already perturbed.
What do I need installed besides Python?A rewrite engine: a local model via Ollama is used first, with the Codex CLI already configured on your machine as a fallback. The script itself has zero external Python dependencies.
Can it actually guarantee the watermark is gone?No — real success can't be measured until Anthropic publishes its detector and thresholds. Rewriting can also subtly change meaning, so human review is still advised for legal, medical or financial text.
Does my text leave my machine?With the default Ollama engine everything stays fully local. In Codex fallback mode the text is sent to whatever service your Codex CLI is configured with, so the README says to prefer local Ollama for confidential documents.
Why does the author think Claude's watermark is a bad idea?Thesis: a mark you can weaken by rephrasing is not reliable proof of origin, so it mainly incentivizes a second AI pass — more compute, latency, cost and energy for the same content, plus ambiguous signals when someone uses Claude to edit or translate their own text.
How is the watermark believed to work?Per the README, it is not hidden Unicode: it is applied during generation at the model level and survives copy-paste, printing and OCR. The most credible hypothesis — an inference, not confirmed by Anthropic — is a slight statistical bias toward certain tokens, similar to SynthID Text.
What does the script protect from rewriting?Code blocks, inline code, URLs and variables are preserved, and the script refuses to return output if any number has changed during the rewrite.
How do I know if the cleanup actually worked?The script prints the engine used, the count of invisible characters removed and the lexical variation rate to stderr; a five-token sequence variation under 60% triggers a warning.
Creator
mikiane
Size
<0.1 MB
Stars
151
Updated
CommitAug 11
Age
2mo
Commits · 90 Days