- Map 'auto' permission mode to SDK's 'bypassPermissions' instead of 'acceptEdits' - Set allowDangerouslySkipPermissions: true when using bypassPermissions - This ensures auto mode truly skips all permission prompts, not just file edits Related to #18
wechat-claude-code
English | 中文
A Claude Code Skill that bridges personal WeChat to your local Claude Code. Chat with Claude from your phone via WeChat — text, images, permission approvals, slash commands, all supported.
Features
- Real-time progress updates — see Claude's tool calls (🔧 Bash, 📖 Read, 🔍 Glob…) as they happen
- Thinking preview — get a 💭 preview of Claude's reasoning before each tool call
- Interrupt support — send a new message mid-query to abort and redirect Claude
- System prompt — set a persistent prompt via
/prompt(e.g. "Reply in Chinese") - Text conversation with Claude Code through WeChat
- Image recognition — send photos for Claude to analyze
- Permission approval — reply
y/nin WeChat to approve Claude's tool use - Slash commands —
/help,/clear,/model,/prompt,/status,/skills, and more - Launch any installed Claude Code skill from WeChat
- Cross-platform — macOS (launchd), Linux (systemd + nohup fallback)
- Session persistence — resume conversations across messages
- Rate-limit safe — automatic exponential backoff on WeChat API throttling
Prerequisites
- Node.js >= 18
- macOS or Linux
- Personal WeChat account (QR code binding required)
- Claude Code with
@anthropic-ai/claude-agent-sdkinstalledNote: The SDK supports third-party API providers (e.g. OpenRouter, AWS Bedrock, custom OpenAI-compatible endpoints) — set
ANTHROPIC_BASE_URLandANTHROPIC_API_KEYaccordingly.
Installation
Clone into your Claude Code skills directory:
git clone https://github.com/Wechat-ggGitHub/wechat-claude-code.git ~/.claude/skills/wechat-claude-code
cd ~/.claude/skills/wechat-claude-code
npm install
postinstall automatically compiles TypeScript via tsc.
Quick Start
1. Setup (first time only)
Scan QR code to bind your WeChat account:
cd ~/.claude/skills/wechat-claude-code
npm run setup
A QR code image will open — scan it with WeChat. Then configure your working directory.
2. Start the daemon
npm run daemon -- start
- macOS: registers a launchd agent for auto-start and auto-restart
- Linux: uses systemd user service (falls back to nohup if systemd unavailable)
3. Chat in WeChat
Send any message in WeChat to start chatting with Claude Code.
4. Manage the service
npm run daemon -- status # Check if running
npm run daemon -- stop # Stop the daemon
npm run daemon -- restart # Restart (after code updates)
npm run daemon -- logs # View recent logs
WeChat Commands
| Command | Description |
|---|---|
/help |
Show available commands |
/clear |
Clear current session (start fresh) |
/reset |
Full reset including working directory |
/model <name> |
Switch Claude model |
/permission <mode> |
Switch permission mode |
/prompt [text] |
View or set a system prompt appended to every query |
/status |
View current session state |
/cwd [path] |
View or switch working directory |
/skills |
List installed Claude Code skills |
/history [n] |
View last N chat messages |
/compact |
Start a new SDK session (clear token context) |
/undo [n] |
Remove last N messages from history |
/<skill> [args] |
Trigger any installed skill |
Permission Approval
When Claude requests to execute a tool, you'll receive a permission request in WeChat:
- Reply
yoryesto allow - Reply
nornoto deny - No response within 120 seconds = auto-deny
You can switch permission mode with /permission <mode>:
| Mode | Description |
|---|---|
default |
Manual approval for each tool use |
acceptEdits |
Auto-approve file edits, other tools need approval |
plan |
Read-only mode, no tools allowed |
auto |
Auto-approve all tools (dangerous mode) |
How It Works
WeChat (phone) ←→ ilink bot API ←→ Node.js daemon ←→ Claude Code SDK (local)
- The daemon long-polls WeChat's ilink bot API for new messages
- Messages are forwarded to Claude Code via
@anthropic-ai/claude-agent-sdk - Tool calls and thinking previews are streamed back as Claude works
- Responses are sent back to WeChat with automatic rate-limit retry
- Platform-native service management keeps the daemon running (launchd on macOS, systemd/nohup on Linux)
Data
All data is stored in ~/.wechat-claude-code/:
~/.wechat-claude-code/
├── accounts/ # WeChat account credentials (one JSON per account)
├── config.env # Global config (working directory, model, permission mode, system prompt)
├── sessions/ # Session data (one JSON per account)
├── get_updates_buf # Message polling sync buffer
└── logs/ # Rotating logs (daily, 30-day retention)
Development
npm run dev # Watch mode — auto-compile on TypeScript changes
npm run build # Compile TypeScript