Manage your Claude Code sessions asynchronously via SMS, with automatic session resumption when rate limits reset.
Stay connected to Claude Code when you're away from your computer—whether you're out running errands, enjoying a coffee, taking a walk with family, or having lunch. No need to track rate limit expiration manually—the tools automatically handle session resumption for you when rate limits reset.
- Instant notification via SMS when Claude finishes tasks or needs your input
- View real-time screenshots of the Claude Code terminal for full visibility (configurable by you)
- Automatically detects when Claude hits a rate limit
- Seamlessly resumes the Claude session as soon as the limit resets
- No need to track or manually resume your session. It's handled for you.
- All through your native Messages app on MacOS. No third-party services involved.
- Only commands from authorized sender are accepted.
- Everything operates locally on your machine for maximum privacy.
- Send prompts to Claude Code from anywhere via Messages app on any Apple device
- Check Claude’s current status anytime by texting
cc status. It will text a live screenshot of the Claude Code terminal window directly back to your phone via SMS
- macOS with Messages app signed in to your Apple ID
- iPhone set up Messages app on your MacOS to send and receive messages.
- Terminal App (Terminal, iTerm, or Iterm2) Permissions:
- Full Disk Access (to read Messages database for new messages):
System Settings → Privacy & Security → Screen Recording - Accessibility (for sending the screenshots):
System Settings → Privacy & Security → Accessibility - Screen Recording (for taking the screenshot):
System Settings → Privacy & Security → Screen Recording
- Full Disk Access (to read Messages database for new messages):
- jq command-line tool:
brew install jq
git clone https://github.com/cyzhao/claude-code-tools.git
cd claude-code-tools
./setup.shThe setup wizard will guide you through:
- Entering your phone number and authorized contacts
- Enabling or disabling auto-resume
- Choosing whether to enable screenshots
- Setting how often to check for new SMS messages
- Configuring the auto-resume interval
# Set the tools directory, add it to .bashrc or equivilent of your shell
export CC_TOOLS_DIR="/path/to/claude-code-tools"
# Go to your Claude Code project and add hooks
cd /your/claude-code-project
cp $CC_TOOLS_DIR/.claude/settings.json .claude/settings.json./start.shThis command starts the background daemons to enable SMS notifications, SMS commands, and auto-resume features. You'll want to run it whenever you need the tools active. By default, they're disabled to prevent unnecessary distractions while you're working on your Mac. Personally, I start it only when I need to step away from my computer for a while, and stop it once I'm back and actively working.
This command also asks you select the Claude terminal window, make sure that you choose the right one that you would like to control with SMS remotely.
NOTE: You need to start this in the Terminal app (Terminal, iTerm, or iTerm2) that you configured with proper permissions from above.
Stop all features:
./stop.shThat's it! Your Claude Code sessions will now:
- Send you SMS notifications when tasks finish
- Notify you immediately if your input is required
- Send terminal screenshots via SMS if the feature is enabled by you
- Automatically resume after rate limit expires
You can also control Claude remotely by sending commands using the cc prefix. - For example:
cc status– requests a screenshot of the Claude session to be sent to you via SMScc <your prompt>– sends a new prompt to Claude to start the next task
The 'cc' (case insensitive) prefix helps distinguish your commands to Claude from regular text messages.
NOTE: Ensure Claude Code is either Normal editing mode, or INSERT MODE when it is in Vim editing mode. Command can't be accepted now by Claude Code when it is NORMAL MODE in Vim editing mode.
You start a complex and long running refactoring task and step away. When Claude finishes or requires your input, you get an SMS with a screenshot showing the current state. When Claude requires input, you will be notified and can respond via text message prefixed with 'cc'. See above for details.
Claude hits the usage limit. Instead of manually checking back later when limit expires, you get an SMS notification and the system automatically resumes when limits reset. This is especially valuable when rate limits reset during times you're unavailable—like overnight, during meetings, or while commuting—preventing hours or even days of delay that would otherwise occur if you had to manually resume the session.
You're away from your computer but want to check on a Claude session. Text 'cc status' to get a current screenshot of the Claude terminal
Claude asks a question requiring your input. You get the SMS notification and can quickly respond with cc <your response>.
You're away from your computer and come up with an idea for a new feature or task. Instead of waiting until you're back at your desk, simply text cc <your idea> to start Claude working on it immediately. For example: cc Add dark mode toggle to the settings page or cc Refactor the user authentication system to use JWT tokens.
The system uses a simple JSON configuration file that the setup wizard creates ($CC_TOOLS_DIR/config/config.json):
{
"user_phone": "+1234567890",
"contacts": ["+1234567890"],
"sms_enabled": true,
"auto_resume": true,
"screenshot_enabled": false,
"max_message_length": 160
}Reconfigure anytime:
./setup.sh --reconfigureTest everything:
./sms/test-sms.shTest specific components:
./sms/test-sms.sh --basic # Configuration tests
./sms/test-sms.sh --integration # Send test SMS
./setup.sh --test-config # Validate settings- Verify Messages app is signed in:
Open Messages → Preferences → iMessage - Check contacts exist in Messages app
- Verify configuration:
./setup.sh --test-config
- Grant Screen Recording permission:
System Settings → Privacy & Security → Screen Recording → Add Terminal app (Terminal or iTerm or iTerm2) - Grant Accessibility permission for screenshot automation:
System Settings → Privacy & Security → Accessibility → Add Terminal app (Terminal or iTerm or iTerm2) - Restart your Terminal app after granting permissions
- Ensure your screen is not turned off while you are away.
System Settings → Lock Screen -> Start Screen Saver When inactive -> Never,System Settings → Lock Screen -> Turn display off on power adapter when inactive -> Never. You can adjust the brightness of the screen to dark.
- Ensure sender is in
contactslist inconfig/config.json - Check SMS receiver daemon is running:
ps aux | grep sms-receiver - Start daemon:
./start.shif it is not running
- Ensure
auto_resumeis set to true inconfig/config.json - Check
resume_check_intervalis set to a proper value. - Ensure Claude Code is either Normal editing mode, or INSERT MODE when it is in Vim editing mode. Command can't be accepted now by Claude Code when it is NORMAL MODE in Vim editing mode.
- Check rate limit monitor daemon is running:
ps aux | grep rate-limit-monitor.sh - Start daemon:
./start.shif it is not running
./start.sh --debugNOTE: This has only been thoroughly tested with iTerm2, as it's the terminal I personally use.