Control Claude Code from your phone - approve permissions and answer questions remotely
npx claudepluginhub muhammadtahanaveed/cc-mobControl Claude Code from your phone - approve permissions and answer questions remotely
Control Claude Code from your phone - approve permissions and answer questions remotely.
cc-mob has two components:
npm install -g cc-mob
claude plugin marketplace add MuhammadTahaNaveed/cc-mob
claude plugin install cc-mob
cc-mob
Scan the QR code with your phone to authenticate.
claude
Permissions and questions will now appear on your phone.
If you're developing or testing locally:
# Clone and install
git clone https://github.com/MuhammadTahaNaveed/cc-mob.git
cd cc-mob
npm install
# Terminal 1: Start server
node server.js
# Terminal 2: Run Claude with plugin
claude --plugin-dir /path/to/cc-mob
┌─────────────┐ hooks ┌─────────────┐ http ┌─────────────┐
│ Claude Code │ ─────────────▶ │ cc-mob │ ◀──────────▶ │ Phone │
│ │ ◀───────────── │ server │ websocket │ Browser │
└─────────────┘ response └─────────────┘ └─────────────┘
When loaded as a plugin, cc-mob:
mcp__cc-mob__ask_user) for asking questions via phoneConfiguration is stored in ~/.cc-mob/.env (auto-generated on first server run):
| Variable | Default | Description |
|---|---|---|
AUTH_TOKEN | (generated) | Authentication token |
PORT | 3456 | Server port |
SESSION_TTL | 86400 | Session duration in seconds |
To access from other devices on your local network:
cc-mob --lan
To have cc-mob start automatically:
# Create service file
cat > ~/.config/systemd/user/cc-mob.service << 'EOF'
[Unit]
Description=cc-mob server
[Service]
ExecStart=/usr/bin/cc-mob
Restart=on-failure
[Install]
WantedBy=default.target
EOF
# Enable and start
systemctl --user enable cc-mob
systemctl --user start cc-mob
# Create plist file
cat > ~/Library/LaunchAgents/com.cc-mob.server.plist << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.cc-mob.server</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/cc-mob</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
EOF
# Load the service
launchctl load ~/Library/LaunchAgents/com.cc-mob.server.plist
MCP server fails to connect
curl http://localhost:3456/api/healthPhone not receiving requests
Hooks not triggering
/hooks in Claude Codeclaude plugin listPlugin install fails with EXDEV error (Linux)
This is a known Claude Code bug on Linux when /tmp is on a different filesystem (tmpfs).
Workaround:
mkdir -p ~/.claude/tmp
TMPDIR=~/.claude/tmp claude plugin install cc-mob
Permanent fix (add to ~/.bashrc or ~/.zshrc):
export TMPDIR="$HOME/.claude/tmp"
Apache-2.0