
Implementação do plugin Ralph Wiggum que funciona após o patch de segurança CVE-2025-54795
Uma implementação funcional da técnica de loop autônomo do Ralph Wiggum para o Claude Code.
O plugin oficial ralph-wiggum no marketplace de plugins da Anthropic está atualmente quebrado devido a uma atualização de segurança no Claude Code v1.0.20 (agosto de 2025).
O patch de segurança (CVE-2025-54795) bloqueia corretamente a substituição de comandos $() e comandos bash de várias linhas para prevenir ataques de injeção de comandos. No entanto, o arquivo de comandos do plugin oficial contém bash de várias linhas que aciona essa proteção:
Error: Bash command permission check failed for pattern "...":
Command contains newlines that could separate multiple commands
Várias issues foram abertas:
Até 3 de janeiro de 2026, essas issues continuam sem correção.
Esta é uma reimplementação limpa que funciona com as restrições de segurança atuais do Claude Code.
Principal diferença arquitetural: O plugin oficial tenta executar bash diretamente do arquivo de comandos. Este plugin, em vez disso, instrui o Claude a criar o arquivo de estado usando sua ferramenta Write, mantendo o arquivo de comandos como markdown puro, sem execução de bash. O stop hook é executado como um script shell separado, fora do sistema de permissões.
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"
| Argumento | Descrição | Padrão |
|---|---|---|
| prompt | A tarefa a ser concluída | (obrigatório) |
| --max-iterations N | Limite de segurança | 30 |
| --completion-promise TEXT | Sinal de conclusão | 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 com a tarefa e a configuração<promise>COMPLETION_PROMISE</promise>{"decision": "block", "reason": "..."} e o Claude continuajq (para análise de JSON no stop hook)MIT