
Slack Bridge
- 4 repo stars
- Updated July 17, 2026
- qianheng-aws/claude-slack-bridge
Bridge Claude Code sessions to Slack — chat with Claude from your phone via Slack threads
About
slack-bridge is a Claude Code skill in the AI & Agent Building category. Bridge Claude Code sessions to Slack — chat with Claude from your phone via Slack threads
- slack-bridge
- AI & Agent Building
- AI-coding skill
Slack Bridge by the numbers
- Data as of Jul 18, 2026 (Skillselion catalog sync)
/plugin marketplace add qianheng-aws/claude-slack-bridge/plugin install slack-bridge@qianheng-pluginsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| repo stars | ★ 4 |
|---|---|
| Last updated | July 17, 2026 |
| Repository | qianheng-aws/claude-slack-bridge ↗ |
What it does
Bridge Claude Code sessions to Slack — chat with Claude from your phone via Slack threads
README.md
Claude Slack Bridge
Remote-control Claude Code from Slack. Start sessions from your phone, sync your TUI to a thread, and let your team watch along — like Remote Control or OpenClaw, but through the tool your team already lives in.
Works with Bedrock, API keys, and any Claude Code setup. No claude.ai subscription required.
English | 中文
What can you do with it?
Commute coding — DM the bot from your phone: "refactor the auth middleware to use JWT". Claude works on your cloud dev machine. By the time you arrive, the work is done — claude --resume to review and iterate.
Meeting multitasking — Kick off a long task in Slack ("migrate the database schema and update all tests"), check progress between agenda items. Claude keeps working while you're in the meeting.
Team visibility — @mention the bot in a project channel. The whole team sees Claude's work in the thread — great for demos, pair debugging, or keeping teammates in the loop.
On-call incident response — Get paged at 2am? DM the bot from bed: "check the error logs in /var/log/app and find the root cause". Triage from your phone before deciding whether to get up.
Long-running tasks — Start a large refactor from Slack, go about your day. Slack notifications tell you when Claude needs input or finishes. No terminal session to keep alive.
How it works
Slack-first: remote control from your phone
DM or @mention the bot, and a full Claude Code session starts on your machine — reading files, editing code, running tests. All from Slack.
1. @bot or DM → Claude Code session starts on your machine
2. Chat in thread → Claude reads, edits, runs tests — streams results back
3. Keep chatting → multi-turn conversation, full tool access
When you're back at your computer, every session header includes a one-liner to pick up in TUI:
cd /your/project && claude --resume <session-id>
TUI-first: sync to Slack
Working at your desk? Use TUI as usual. Whenever you want Slack as a mirror — run /slack-bridge:sync-on. From that point on, everything syncs bidirectionally.
1. Start TUI: claude
2. Work as usual (sync-on can happen anytime)
3. /slack-bridge:sync-on → session binds to a Slack DM thread
4. Leave for lunch → pull out your phone, reply in the Slack thread
5. Message goes to TUI → tmux send-keys delivers it directly into your session
6. Claude responds → response syncs back to Slack automatically
7. Back at desk → keep working in TUI, full context preserved
How is this different?
| Remote Control | OpenClaw | Claude Slack Bridge | |
|---|---|---|---|
| Client | claude.ai / Claude app | WhatsApp, Telegram, Slack, etc. | Slack |
| Auth | claude.ai Pro/Max/Team/Enterprise | Bring your own LLM key | Any Claude Code setup (Bedrock, API key) |
| Team visibility | Private | Single-user | Shared in channels — team can follow along |
| Integration | Standalone UI | Multi-channel gateway | Native Slack (threads, @mentions, notifications) |
| Session handoff | Web ↔ TUI | N/A | Slack ↔ TUI via claude --resume |
Requirements
- tmux — TUI mode requires tmux. Slack→TUI message forwarding targets the Claude pane via
tmux send-keys -t $TMUX_PANE. If Claude Code runs outside tmux, incoming Slack messages can't reach the TUI.
Quick Start
# 1. Clone and install into an isolated venv
git clone https://github.com/qianheng-aws/claude-slack-bridge.git
cd claude-slack-bridge && python3 -m venv .venv && .venv/bin/pip install -e .
# 2. Register as a Claude Code plugin
claude plugins marketplace add "$PWD"
claude plugins install slack-bridge@qianheng-plugins
# 3. Run init — prompts for Slack tokens, writes config, and symlinks
# the daemon CLI into ~/.local/bin (also added to .bashrc / .zshrc)
.venv/bin/claude-slack-bridge init
Open a new shell (or source ~/.bashrc / ~/.zshrc) so ~/.local/bin is on PATH. Then in Claude Code TUI:
/slack-bridge:sync-on
After init you can run
claude-slack-bridge start/status/stopfrom anywhere — no need to reference.venv/bin/.
Slack App Setup
Fastest path — use the reference manifest:
- Copy
docs/slack-manifest.example.yaml - https://api.slack.com/apps → Create New App → From a manifest → paste
- Install to Workspace (grants the bot scopes listed in the manifest)
- Basic Information → App-Level Tokens → Generate with
connections:write→ this is yourxapp-token - OAuth & Permissions → copy Bot User OAuth Token → this is your
xoxb-token - Feed both tokens to
claude-slack-bridge init
The manifest already enables Socket Mode, Interactivity, the Assistant view, and every scope / event the daemon uses. If you prefer to configure manually, read the manifest — each block is commented with what the daemon needs it for.
Commands
Plugin Commands (in TUI)
| Command | Effect |
|---|---|
/slack-bridge:sync-on |
Start daemon + bind current session, opt in to full TUI↔Slack sync |
/slack-bridge:sync-ring |
Silence sync chatter but keep Slack approval buttons active |
/slack-bridge:sync-off |
Reset to the default: nothing syncs, approvals use the TUI dialog |
/slack-bridge:start-daemon |
Start daemon only |
/slack-bridge:stop-daemon |
Stop daemon |
/slack-bridge:status |
Show status and active sessions |
/slack-bridge:logs |
View recent daemon logs |
Slack Commands
| Command | Where | Effect |
|---|---|---|
@bot <prompt> |
Channel | New session |
<message> |
DM | New session |
| Reply in thread | Thread | Continue session |
@bot resume <UUID> |
Channel | Bind TUI session to thread |
resume <UUID> |
DM | Bind TUI session to thread |
!stop |
Thread | Halt running session |
yolo off |
Thread | Revoke session-scoped YOLO auto-approval |
sync off / sync on |
Thread | Mute/unmute TUI→Slack sync |
Updating
After pulling a new version of this repo, one command syncs everything:
git pull
claude-slack-bridge update
update runs the four steps that used to be manual:
pip install -e .— refresh the Python daemonclaude plugins update slack-bridge@qianheng-plugins— refresh the plugin cache (~/.claude/plugins/cache/…) that the TUI actually reads from- Refresh the
~/.local/bin/claude-slack-bridgesymlink and migrate default config - Restart the daemon (delegates to
systemctlwhen a unit is installed)
Finally, restart the Claude Code TUI so it re-reads the refreshed plugin cache. The daemon and the TUI each carry their own version (plugin.json and __version__); when they drift, the next SessionStart hook posts a mismatch warning in Slack so you don't silently run a half-upgraded setup.
Features
- Bidirectional sync — Slack messages forward into TUI via tmux, TUI responses sync back to Slack
- Streaming responses — live preview with cursor, final result overwrites progress
- Phase-aware reactions — emoji changes with processing stage (thinking → coding → browsing → done)
- Thread status — "is thinking...", "is using Bash" shown in Slack thread header
- Timing footer — "Finished in 2m 15s" posted after each response
- !stop command — type
!stopin thread to halt a running session - OPTIONS buttons — Claude can suggest choices as clickable Slack buttons
- Markdown → mrkdwn — tables, mermaid diagrams, code blocks properly converted
- Dual-mode architecture — Slack drives Claude via
--print(PROCESS), or hooks sync TUI to Slack (HOOK) - Session persistence — sessions survive restarts, resume from either side
Config
~/.claude/slack-bridge/config.json:
{
"daemon_port": 7778,
"work_dir": "/path/to/default/cwd",
"claude_args": ["--tools", "Bash,Read,Write,Edit,Glob,Grep"],
"max_concurrent_sessions": 3,
"session_archive_after_secs": 3600
}
Auto-start with systemd
To keep the daemon running across machine reboots. Run claude-slack-bridge init first — the service points at $HOME/.local/bin/claude-slack-bridge, a symlink init creates into the repo's venv, so upgrades don't need edits here:
sudo tee /etc/systemd/system/claude-slack-bridge.service << EOF
[Unit]
Description=Claude Slack Bridge Daemon
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=$(whoami)
ExecStart=$HOME/.local/bin/claude-slack-bridge start
Restart=always
RestartSec=10
WorkingDirectory=$HOME
Environment=HOME=$HOME
Environment=PATH=$HOME/.local/bin:/usr/local/bin:/usr/bin
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable claude-slack-bridge
sudo systemctl start claude-slack-bridge
Useful commands:
sudo systemctl status claude-slack-bridge # check status
sudo journalctl -u claude-slack-bridge -f # follow logs
sudo systemctl restart claude-slack-bridge # restart
Note: If you previously started the daemon with
make start, stop it first (make stop) to avoid port conflicts.
Architecture
See ARCHITECTURE.en.md | 中文
Contributing
make install # setup venv and install
make test # run tests
make start # start daemon
make stop # stop daemon