
Implementazione del plugin Ralph Wiggum che funziona dopo la patch di sicurezza CVE-2025-54795
Un'implementazione funzionante della tecnica del loop autonomo di Ralph Wiggum per Claude Code.
Il plugin ufficiale ralph-wiggum nel marketplace dei plugin di Anthropic è attualmente rotto a causa di un aggiornamento di sicurezza in Claude Code v1.0.20 (Agosto 2025).
La patch di sicurezza (CVE-2025-54795) blocca correttamente la sostituzione di comandi $() e i comandi bash su più righe per prevenire attacchi di command injection. Tuttavia, il file di comando del plugin ufficiale contiene bash su più righe che attiva questa protezione:
Error: Bash command permission check failed for pattern "...":
Command contains newlines that could separate multiple commands
Sono state segnalate diverse issue:
Al 3 Gennaio 2026, queste rimangono irrisolte.
Questa è una reimplementazione pulita che funziona con le attuali restrizioni di sicurezza di Claude Code.
Differenza architetturale chiave: Il plugin ufficiale tenta di eseguire bash direttamente dal file di comando. Questo plugin invece istruisce Claude a creare il file di stato utilizzando il suo strumento Write, mantenendo il file di comando come puro markdown senza esecuzione bash. L'hook di stop viene eseguito come script shell separato al di fuori del sistema di permessi.
claude --plugin-dir /path/to/ralph
# Crea marketplace
mkdir -p ~/claude-plugins/.claude-plugin
echo '{"name": "local", "owner": {"name": "You"}}' > ~/claude-plugins/.claude-plugin/marketplace.json
# Sposta il plugin nel 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"
| Argomento | Descrizione | Default |
|---|---|---|
| prompt | Il task da completare | (obbligatorio) |
| --max-iterations N | Limite di sicurezza | 30 |
| --completion-promise TESTO | Segnale di completamento | 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 con task e configurazione<promise>COMPLETION_PROMISE</promise>{"decision": "block", "reason": "..."}, Claude continuajq (per il parsing JSON nell'hook di stop)MIT