
Implémentation du plugin Ralph Wiggum qui fonctionne après le correctif de sécurité CVE-2025-54795
Une implémentation fonctionnelle de la technique de boucle autonome Ralph Wiggum pour Claude Code.
Le plugin officiel ralph-wiggum du marketplace de plugins d'Anthropic est actuellement cassé en raison d'une mise à jour de sécurité dans Claude Code v1.0.20 (août 2025).
Le correctif de sécurité (CVE-2025-54795) bloque correctement la substitution de commande $() et les commandes bash multi-lignes pour empêcher les attaques par injection de commandes. Cependant, le fichier de commande du plugin officiel contient du bash multi-lignes qui déclenche cette protection :
Error: Bash command permission check failed for pattern "...":
Command contains newlines that could separate multiple commands
Plusieurs problèmes ont été signalés :
Au 3 janvier 2026, ces problèmes ne sont toujours pas corrigés.
Il s'agit d'une réimplémentation propre qui fonctionne avec les restrictions de sécurité actuelles de Claude Code.
Différence architecturale clé : Le plugin officiel tente d'exécuter du bash directement à partir du fichier de commande. Ce plugin demande plutôt à Claude de créer le fichier d'état à l'aide de son outil Write, en conservant un fichier de commande en markdown pur, sans exécution bash. Le hook d'arrêt s'exécute comme un script shell séparé, en dehors du système d'autorisations.
claude --plugin-dir /path/to/ralph
# Create marketplace
mkdir -p ~/claude-plugins/.claude-plugin
echo '{"name": "local", "owner": {"name": "You"}}' > ~/claude-plugins/.claude-plugin/marketplace.json
# Move plugin into marketplace
mv /path/to/ralph ~/claude-plugins/
# In Claude Code:
/plugin marketplace add ~/claude-plugins
/plugin install ralph@local
/ralph:ralph-loop "Your task" --max-iterations 30 --completion-promise "DONE"
| Argument | Description | Défaut |
|---|---|---|
| prompt | La tâche à accomplir | (requis) |
| --max-iterations N | Limite de sécurité | 30 |
| --completion-promise TEXT | Signal d'achèvement | TASK_COMPLETE |
/ralph:ralph-loop "Build a REST API with tests" --completion-promise "API_COMPLETE"
/ralph:ralph-loop "Follow the instructions in CLAUDE.md" --max-iterations 50 --completion-promise "BENCHMARK_COMPLETE"
/ralph:cancel-ralph
.claude/ralph-loop.local.md avec la tâche et la configuration<promise>COMPLETION_PROMISE</promise>{"decision": "block", "reason": "..."}, Claude continuejq (pour l'analyse JSON dans le hook d'arrêt)MIT