Stop Autonomous Loop Mode

VerifiedSafe

Immediately disables autonomous loop mode by running a Bash script that updates state files and creates a global stop signal. Helps when you need to halt continuous autonomous execution to regain manual control.

Sby Skills Guide Bot
ProductivityBeginner
506/2/2026
Claude Code
#autonomous-loop#stop-loop#claude-automation#loop-interruption

Recommended for

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 to use it

When you need to safely halt an ongoing autonomous Claude Code loop.

When not to use it

If you want to pause the loop or preserve its state for later resumption.

Security analysis

Safe
Quality score85/100

The 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

Stop autonomous loop
ru stop
Disable loop mode
stop autonomous mode
End autonomous
disable loop

name: 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 |

Related skills