
Реализация плагина Ralph Wiggum, которая работает после патча безопасности CVE-2025-54795
Рабочая реализация техники автономного цикла Ralph Wiggum для Claude Code.
Официальный плагин ralph-wiggum в маркетплейсе Anthropic в настоящее время сломан из-за обновления безопасности в Claude Code v1.0.20 (август 2025).
Патч безопасности (CVE-2025-54795) правильно блокирует подстановку команд $() и многострочные bash-команды для предотвращения атак внедрения команд. Однако файл команд официального плагина содержит многострочный bash, который активирует эту защиту:
Error: Bash command permission check failed for pattern "...":
Command contains newlines that could separate multiple commands
Было подано несколько обращений:
По состоянию на 3 января 2026 года они остаются неисправленными.
Это чистая переработка, работающая с текущими ограничениями безопасности Claude Code.
Ключевое архитектурное отличие: Официальный плагин пытается выполнить bash напрямую из файла команд. Этот плагин вместо этого инструктирует Claude создать файл состояния с помощью своего инструмента Write, оставляя файл команд чистым Markdown без выполнения bash. Хук остановки работает как отдельный shell-скрипт вне системы разрешений.
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"
| Аргумент | Описание | По умолчанию |
|---|---|---|
| prompt | Задача для выполнения | (обязательно) |
| --max-iterations N | Ограничение безопасности | 30 |
| --completion-promise TEXT | Сигнал завершения | 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 с задачей и настройками<promise>COMPLETION_PROMISE</promise>{"decision": "block", "reason": "..."}, Claude продолжаетjq (для разбора JSON в хуке остановки)MIT