mirror of
https://github.com/anthropics/claude-plugins-official.git
synced 2026-01-30 04:22:03 +00:00
This plugin intercepts sleep commands in Bash and prompts Claude to use
background execution (run_in_background: true) instead. This keeps the
session responsive during long-running operations.
Features:
- Blocks sleep commands with helpful retry message
- Allows sleep in quoted strings (false positive prevention)
- Catches sleep in compound commands (&&, ||, ;) and loops
- Allows background commands through (run_in_background: true)
🏠 Remote-Dev: homespace
Claude-Generated-By: Claude Code (cli/claude-opus-4-5=100%)
Claude-Steers: 6
Claude-Permission-Prompts: 0
Claude-Escapes: 0
1.6 KiB
1.6 KiB
Caffeinate
A Claude Code plugin that blocks sleep commands and reminds Claude to use background tasks instead.
Purpose
When Claude uses sleep commands in Bash, it blocks the session unnecessarily. This plugin intercepts these commands and suggests using proper async patterns like:
run_in_background: trueparameter for long-running commands- Polling for conditions instead of sleeping
- Proper async/background task patterns
Installation
# From the plugin directory
claude --plugin-dir /path/to/caffeinate
Or copy to your project's .claude-plugin/ directory.
What Gets Blocked
| Command | Blocked? | Reason |
|---|---|---|
sleep 5 |
Yes | Direct sleep command |
sleep $TIMEOUT |
Yes | Sleep with variable |
echo "test" && sleep 5 |
Yes | Sleep after separator, outside quotes |
cmd; sleep 10 |
Yes | Sleep after semicolon |
echo "sleep 8 hours" |
No | Sleep is inside quotes (not a command) |
echo "foo && sleep 5" |
No | Entire sleep pattern is in a string |
How It Works
The plugin uses a PreToolUse hook on the Bash tool to:
- Check if commands start with
sleep - Detect
sleepafter command separators (&&,||,;,|) - Use quote-counting to avoid false positives when
sleepappears inside strings
Alternatives to Sleep
Instead of:
sleep 5 && check_status
Use background execution:
# Run in background with run_in_background: true
long_running_command
Or poll for conditions:
# Poll for a file to exist
while [ ! -f /tmp/ready ]; do :; done