← Back to Skills Marketplace
zlhad

Claude Code Bridge

by Linghaoz · GitHub ↗ · v0.2.1 · MIT-0
cross-platform ⚠ suspicious
453
Downloads
0
Stars
3
Active Installs
2
Versions
Install in OpenClaw
/install cc-bridge
Description
Bridges OpenClaw (QQ, Telegram, WeChat, and other messaging channels) to a persistent Claude Code CLI session running in a background tmux process. Enables s...
README (SKILL.md)

Claude Code Bridge

Bridge every incoming message to a live, persistent claude CLI process running in a background tmux session. The user interacts via QQ/Telegram/any channel; Claude Code responds as if they were typing in a real terminal.

Session State Detection (CRITICAL — CHECK EVERY TURN)

At the start of EVERY incoming message, determine session state:

~/.openclaw/workspace/skills/cc-bridge/scripts/cc-bridge.sh "\x3CSESSION_ID>" status
  • ✅ Claude Code 会话运行中CC mode active, route message to CC
  • ⭕ 没有活跃CC mode off, respond normally
  • ⚠️ CC 正在等待审批 → tell user and await their approval choice

Construct \x3CSESSION_ID> as \x3Cchannel>_\x3Cchat_id> using only [a-zA-Z0-9_].

Routing Logic

Every incoming message:
  1. Run status check
  2. Is it a CC control command?
       "启动cc"    → start
       "关闭cc"    → stop
       "重启cc"    → restart
       "cc状态"    → status
       "/cc peek"  → peek
       "/cc history [N]" → history
  3. Is CC in approval-waiting state?
       YES → parse user's intent (y/n/1/2/3) → approve
  4. Is CC session active?
       YES → forward as send
       NO  → respond normally as OpenClaw agent

Executing Actions

SCRIPT="$HOME/.openclaw/workspace/skills/cc-bridge/scripts/cc-bridge.sh"

"$SCRIPT" "\x3CID>" start                    # 启动
"$SCRIPT" "\x3CID>" send '\x3Cmessage>'         # 发送(90s 超时)
"$SCRIPT" "\x3CID>" send '\x3Cmessage>' --long  # 长任务(5min 超时)
"$SCRIPT" "\x3CID>" approve 1               # 审批:选 Yes
"$SCRIPT" "\x3CID>" approve 2               # 审批:选 Allow always
"$SCRIPT" "\x3CID>" approve 3               # 审批:选 No
"$SCRIPT" "\x3CID>" approve esc             # 审批:取消
"$SCRIPT" "\x3CID>" stop                    # 停止
"$SCRIPT" "\x3CID>" restart                 # 重启
"$SCRIPT" "\x3CID>" status                  # 状态
"$SCRIPT" "\x3CID>" peek                    # 原始终端画面
"$SCRIPT" "\x3CID>" history 200             # 最近 200 行历史

IMPORTANT — message quoting: Use tmux send-keys -l (literal mode) so special characters ($, !, \) are sent verbatim. The script handles this internally; just pass the raw message as argument 3.

CC Slash Commands — Direct Passthrough

CC's own slash commands work by sending them via send:

User says Forward as
/plan send '/plan'
/model sonnet send '/model sonnet'
/compact send '/compact'
/help send '/help'
/cost send '/cost'
/clear send '/clear'
/diff send '/diff'
/fast send '/fast'
/vim send '/vim'
/context send '/context'
/export send '/export'
/copy send '/copy'
/rewind send '/rewind'
/fork send '/fork'
/permissions send '/permissions'
/tasks send '/tasks'
/status send '/status'
/stats send '/stats'
/review send '/review'
/theme send '/theme'
/sandbox send '/sandbox'
Any /xxx command send '/xxx'

These are NOT OpenClaw commands — forward them verbatim to CC. All CC slash commands work via passthrough, including ones not listed above.

Handling CC Approval Prompts

When CC encounters a tool it needs permission to run, it shows a TUI selection menu (arrow-key navigation, not text input). The approve action handles this:

CC shows:
  Do you want to proceed?
  ❯ 1. Yes
    2. Yes, allow from this project
    3. No

The user's reply should be interpreted:

  • "y" / "是" / "好" / "1" / "同意" → approve 1
  • "2" / "允许" / "一直允许" → approve 2
  • "n" / "否" / "不" / "3" / "拒绝" → approve 3
  • "取消" / "cancel" → approve esc

Long Tasks & Streaming

For tasks that take a long time (refactoring, writing large codebases):

  1. Detect intent: if the user's message implies a large task (e.g. "重构整个项目", "帮我写一个完整的 XXX"), use --long flag (5-minute timeout)
  2. If the output is empty after timeout, use peek to check CC's current state
  3. If CC is still working, inform the user: ⏳ CC 仍在处理中,稍后我再检查
  4. Then use peek or history to get progress updates

Formatting Replies

  1. Prefix CC output with 🤖 **CC →**
  2. Keep code blocks, file paths, and tool output intact
  3. If output is empty: reply ⏳ CC 正在处理中... then try peek after 3s
  4. If output >3000 chars: show the last 2000 chars, note earlier output available via /cc history
  5. If CC is waiting for approval: clearly show the options to the user

Error Handling

Situation Action
send returns empty Wait 3s, run peek, relay result
Session not found Inform user, offer to start
Session crashed Detect via status, offer restart
CC shows error Relay error verbatim
Timeout on long task Inform user, suggest peek or history

Additional Resources

  • scripts/cc-bridge.sh — Full session management (start/send/approve/stop/restart/status/peek/history)
  • references/usage.md — User-facing help text and example conversations
Usage Guidance
This skill does what it says (bridges chats to a local interactive Claude Code terminal), but it grants chat participants the ability to inject arbitrary input into a local CLI process and captures terminal output to local logs. Before installing: (1) review the full scripts yourself (especially send-keys and pipe-pane usage); (2) ensure only trusted channels/users can reach this skill (OpenClaw should enforce author/channel restrictions); (3) confirm you want a remote-to-local CLI bridge — it can be used to run commands that read secrets or modify files; (4) explicitly set/verify CLAUDE_BIN and ensure tmux/claude are installed; (5) consider tightening file permissions on $HOME/.openclaw/cc-bridge and auditing generated logs; (6) if you need stricter safety, add explicit authentication/authorization checks in the bridge (e.g., whitelist chat IDs) or avoid installing in environments with sensitive data.
Capability Analysis
Type: OpenClaw Skill Name: cc-bridge Version: 0.2.1 The skill provides a functional bridge between messaging channels and the Claude Code CLI using tmux and a bash script (cc-bridge.sh). While it implements security best practices like input sanitization for session IDs and using literal mode (tmux send-keys -l) to prevent shell injection, it is classified as suspicious due to the high-risk nature of its core functionality: granting remote terminal access and shell execution capabilities via an AI proxy. The script allows for arbitrary command passthrough to a persistent background process with file system access, which, while aligned with its stated purpose, creates a significant attack surface for remote exploitation if the underlying CLI tool or the agent's routing logic is compromised.
Capability Assessment
Purpose & Capability
The name/description (bridge chat → persistent local Claude Code CLI via tmux) matches the included script and instructions: tmux session management, send-keys, capture-pane, etc. Requiring tmux and a local 'claude' binary is coherent with the stated purpose.
Instruction Scope
SKILL.md and the script instruct the agent to start/stop sessions, forward arbitrary user messages into a live CLI, simulate keypresses (including Ctrl sequences), capture terminal output to a local log, and automatically approve/deny TUI prompts based on chat responses. The instructions do not document any message-author or channel-level access control; forwarding arbitrary chat messages to a local CLI is a high-impact capability (can cause command execution and file read/write via Claude Code). The SKILL.md also references the script path under ~/.openclaw/workspace/skills/cc-bridge which is consistent, but it relies on runtime detection strings like "Do you want to proceed" which could be brittle.
Install Mechanism
There is no remote install or download step; the skill is instruction-only and includes the bridging script. No external packages or network fetches are performed by an installer — lower risk from supply chain perspective. However the script will create local state under $HOME/.openclaw/cc-bridge.
Credentials
Metadata declares no required env vars or config paths, yet the script reads CLAUDE_BIN (not declared) and creates/uses $HOME/.openclaw/cc-bridge for logs/offsets. It also assumes tmux and a usable 'claude' binary in PATH. These implicit dependencies and the ability to capture terminal output (logs) should have been declared; the missing declarations reduce transparency and make it unclear what secrets or files could be accessed.
Persistence & Privilege
always:false (no forced global enable). The skill writes state/logs to $HOME/.openclaw/cc-bridge and creates tmux sessions named ccb_<id>, which is normal for this functionality. Autonomous invocation is allowed by default (not a unique concern), but combined with the bridge behavior this increases blast radius if untrusted chats can trigger actions.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install cc-bridge
  3. After installation, invoke the skill by name or use /cc-bridge
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v0.2.1
Improved marketplace description for better discoverability. Renamed display name to Claude Code Bridge.
v0.2.0
Initial public release. Bridges OpenClaw messaging platforms to persistent Claude Code CLI sessions via tmux.
Metadata
Slug cc-bridge
Version 0.2.1
License MIT-0
All-time Installs 3
Active Installs 3
Total Versions 2
Frequently Asked Questions

What is Claude Code Bridge?

Bridges OpenClaw (QQ, Telegram, WeChat, and other messaging channels) to a persistent Claude Code CLI session running in a background tmux process. Enables s... It is an AI Agent Skill for Claude Code / OpenClaw, with 453 downloads so far.

How do I install Claude Code Bridge?

Run "/install cc-bridge" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Claude Code Bridge free?

Yes, Claude Code Bridge is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Claude Code Bridge support?

Claude Code Bridge is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Claude Code Bridge?

It is built and maintained by Linghaoz (@zlhad); the current version is v0.2.1.

💬 Comments