Our review
Immediately stops the autonomous loop mode in Claude Code by writing state files and kill signals.
Strengths
- Immediate execution via a simple Bash script
- Multiple redundancy mechanisms (state file, kill switch, global signal)
- Works at both project and global levels
Limitations
- Requires the .claude directory to exist
- May not stop instantly if a loop iteration is already running
- Depends on the CLAUDE_PROJECT_DIR environment variable
When you need to safely halt an ongoing autonomous Claude Code loop.
If you want to pause the loop or preserve its state for later resumption.
Security analysis
SafeThe script only modifies specific state files within the project's .claude directory and the user's home .claude directory; it does not download, exfiltrate, or execute arbitrary code, and uses safe commands like echo, touch, jq, rm, and date.
No concerns found
Examples
ru stopstop autonomous modedisable loopname: stop description: "Disable autonomous loop mode immediately. TRIGGERS - ru stop, stop autonomous, disable loop, end autonomous mode." allowed-tools: Bash argument-hint: "" model: haiku disable-model-invocation: true
RU: Stop
EXECUTE IMMEDIATELY: Use the Bash tool to run the following script.
/usr/bin/env bash << 'RALPH_UNIVERSAL_STOP'
PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}"
echo "Stopping RU loop..."
# Set state to stopped
STATE_FILE="$PROJECT_DIR/.claude/ru-state.json"
if [[ -d "$PROJECT_DIR/.claude" ]]; then
echo '{"state": "stopped"}' > "$STATE_FILE"
fi
# Create kill switch for redundancy
touch "$PROJECT_DIR/.claude/STOP_LOOP"
# Update config if exists
CONFIG_FILE="$PROJECT_DIR/.claude/ru-config.json"
if [[ -f "$CONFIG_FILE" ]]; then
jq '.state = "stopped"' "$CONFIG_FILE" > "$CONFIG_FILE.tmp" && mv "$CONFIG_FILE.tmp" "$CONFIG_FILE"
fi
# Clean up markers
rm -f "$PROJECT_DIR/.claude/ru-start-timestamp"
# Create global stop signal
echo '{"state": "stopped", "timestamp": "'$(date -u +%Y-%m-%dT%H:%M:%SZ)'"}' > "$HOME/.claude/ru-global-stop.json"
echo ""
echo "RU: STOPPED"
echo "Project: $PROJECT_DIR"
RALPH_UNIVERSAL_STOP
After execution, confirm the loop has been stopped.
Troubleshooting
| Issue | Cause | Solution |
| ----------------------- | --------------------- | ------------------------------------ |
| Loop continues running | Hook still active | Wait for current iteration to finish |
| State file not created | .claude dir missing | Create with mkdir -p .claude |
| jq error | Config file malformed | Delete and recreate config file |
| Permission denied | File not writable | Check directory permissions |
| Global stop not working | Different project dir | Ensure CLAUDE_PROJECT_DIR is correct |
Task Prioritizer
Productivity
Prioritizes your tasks using Eisenhower, ICE, and RICE frameworks.
Weekly Status Report Generator
Productivity
Generate structured and concise weekly status reports.
Daily Standup Report
Productivity
Generates structured and concise daily standup reports.