{"id":"1d43293e-d612-49e6-956f-b957b93d8367","slug":"claude-code-feishu-companion","kind":"mcp","name":"claude-code-feishu-companion","summary":"Native Claude Code Channel for Feishu/Lark - continue the same running session remotely without spawning or replacing Claude Code.","owner":"marcelritzschke","repoUrl":"https://github.com/marcelritzschke/claude-code-feishu-companion","license":"MIT","licenseTier":"permissive","trust":"community","stars":1,"match":null,"fewStars":true,"format":"mcp","createdAt":"2026-08-31T14:33:28.000Z","addedAt":"2026-10-21T05:03:57.802Z","logoUrl":"https://avatars.githubusercontent.com/u/24395815?v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["developer-tools","cloud-infra","memory-knowledge"],"tags":["ai-coding","anthropic","chatops","claude","claude-code","claude-code-channel","developer-tools","feishu"],"runtime":"go","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-21T05:34:10.040Z","sample":false,"url":"https://conduits.dev/tools/claude-code-feishu-companion","language":"Go","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"<h1 align=\"center\">Claude Code Feishu Companion</h1>\n\n<p align=\"center\">\n  Continue the same running Claude Code session from Feishu/Lark.\n  <br>\n  Native Claude Code Channel integration — no spawned agents, no replacement runtime.\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/marcelritzschke/claude-code-feishu-companion/actions/workflows/ci.yml\"><img alt=\"CI\" src=\"https://github.com/marcelritzschke/claude-code-feishu-companion/actions/workflows/ci.yml/badge.svg\"></a>\n  <a href=\"https://github.com/marcelritzschke/claude-code-feishu-companion/releases/latest\"><img alt=\"Release\" src=\"https://img.shields.io/github/v/release/marcelritzschke/claude-code-feishu-companion\"></a>\n  <a href=\"https://github.com/marcelritzschke/claude-code-feishu-companion/releases\"><img alt=\"Downloads\" src=\"https://img.shields.io/github/downloads/marcelritzschke/claude-code-feishu-companion/total\"></a>\n  <a href=\"https://github.com/marcelritzschke/claude-code-feishu-companion/blob/main/go.mod\"><img alt=\"Go version\" src=\"https://img.shields.io/github/go-mod/go-version/marcelritzschke/claude-code-feishu-companion\"></a>\n  <a href=\"LICENSE\"><img alt=\"License\" src=\"https://img.shields.io/github/license/marcelritzschke/claude-code-feishu-companion\"></a>\n</p>\n\n<p align=\"center\">\n  🚀 <a href=\"#quick-start\">Quick Start</a> ·\n  📖 <a href=\"docs/setup.md\">Docs</a> ·\n  🔐 <a href=\"docs/security-and-operations.md\">Security</a> ·\n  📦 <a href=\"https://github.com/marcelritzschke/claude-code-feishu-companion/releases\">Releases</a> ·\n  🌐 <strong><a href=\"README.zh-CN.md\">简体中文</a></strong>\n</p>\n\n<p align=\"center\">\n  <img src=\"docs/assets/companion-demo.gif\" alt=\"Demo of continuing a running Claude Code session from Feishu\" width=\"960\">\n</p>\n\n## Native Claude Code Channel — not a CLI bridge\n\nClaude Code Feishu Companion connects Feishu/Lark through a native Channel to\nthe Claude Code process you already started. The original terminal stays\nactive and usable; Feishu is simply a remote entry point.\n\n<table width=\"100%\">\n  <tr>\n    <td>💡 <strong>Feishu/Lark for the Claude Code session you already have running — not another Claude harness.</strong></td>\n  </tr>\n</table>\n\nClaude Code remains the runtime: it owns the session lifecycle, context,\ntools, authentication, permissions, and native TUI. Claude Code Feishu\nCompanion only connects that running process to Feishu/Lark. It never launches\n`claude -p`, introduces a separate Agent SDK harness, or creates another\nClaude session.\n\n```mermaid\nflowchart LR\n    feishu[\"Feishu / Lark\"] <--> daemon[\"Companion daemon\"]\n    daemon <--> channel[\"Claude Code Channel\"]\n    channel <--> session[\"Your running session\"]\n```\n\n## Quick start\n\nOne command installs the binary and opens QR-based Feishu onboarding.\n\nOn macOS or Linux:\n\n```sh\ncurl -fsSL https://raw.githubusercontent.com/marcelritzschke/claude-code-feishu-companion/main/install.sh | sh\n```\n\nOn Windows, in PowerShell:\n\n```powershell\nirm https://raw.githubusercontent.com/marcelritzschke/claude-code-feishu-companion/main/install.ps1 | iex\n```\n\nBoth verify the download against the release's `checksums.txt` before\ninstalling anything, and both put the binary on your `PATH`.\n\nScan the QR code to connect the app and make that Feishu account the owner.\nExisting app credentials, manual setup, and configuration options are covered\nin [Setup and configuration](docs/setup.md).\n\nStart a session you want to continue remotely with:\n\n```sh\nclaude --dangerously-load-development-channels server:claude-companion\n```\n\nPlain `claude` sessions still send notifications, but cannot accept remote\nmessages while Claude Code Channels remain in preview.\n\n## At a glance\n\n| Capability | What you get | Status |\n| --- | --- | --- |\n| Existing Claude Code sessions | Keep the terminal session you already have open. | ✅ |\n| Session discovery | Choose the exact running session from Feishu/Lark. | ✅ |\n| Notifications | Hear only when Claude needs you or finishes. | ✅ |\n| Remote continuation | Send follow-ups into the selected existing session. | ✅ Preview |\n| Live session card | One card per session, updating in place while a turn runs. | ✅ |\n| Remote interrupt | Stop the current turn without ending the session. | ✅ macOS/Linux |\n| Permission decisions | Approve or deny requests from Feishu/Lark. | ✅ Optional |\n| QR onboarding | Scan once to connect the app and your machine. | ✅ |\n| macOS / Linux | Use the complete companion workflow. | ✅ |\n| Windows | Use the workflow with platform-specific limitations. | 🧪 Partial |\n| Bedrock / Vertex / Foundry | Receive notifications, but not remote continuation. | ❌ Channel limitation |\n\n## User experience\n\n- **Quiet by default.** Feishu surfaces questions, permission requests, and\n  completion summaries—not every file read, command, or tool call.\n- **One card per session.** A card opens by itself when a turn starts real\n  work and keeps itself current until the turn settles into its outcome.\n  There is nothing to switch on and nothing to turn off.\n- **Exact-session control.** Reply in a card's box and the message goes to\n  that session and no other. Typed in the chat instead, it goes to the one\n  session that can take it, or nowhere — never to a session you did not\n  mean. Send `sessions` to bring every card back to the bottom of the chat.\n- **Honest about what it cannot do.** A session started without the\n  Companion channel gets no reply box, and the card says so in a sentence.\n- **Interrupt.** Tap **Interrupt**, or send `interrupt`, to stop the current\n  turn without ending the session.\n\n## How it works and security\n\nA lightweight local daemon maintains the Feishu connection and discovers\nlocal Claude Code sessions. Hooks provide lifecycle and attention events;\nClaude Code Channels carry messages into the selected running session.\n\nSessions, context, authentication, and tools stay local and user-owned. Only\nthe configured Feishu owner can send inbound messages, and remote permission\ndecisions are separately configurable. Companion sends focused cards—not a\nterminal stream, complete transcript, or model reasoning.\n\nSee [Security and operations](docs/security-and-operations.md) for the full\ntrust boundary and the\n[product experience specification](docs/product-experience-spec.md) for the\ndesign rationale.\n\n## Current limitations\n\n- Remote continuation requires the preview flag shown above because Claude\n  Code Channels are a research preview and Companion is not yet allowlisted.\n- Channels require Anthropic authentication through claude.ai or a Console\n  API key. They are unavailable on Bedrock, Vertex, and Foundry. Team and\n  Enterprise organizations must enable Channels centrally.\n- Claude Code multiple-choice `AskUserQuestion` prompts cannot currently be\n  answered through a Channel; answer them in the original terminal.\n- The computer, Claude Code session, Claude Code Feishu Companion daemon, and\n  network connection must remain running for remote continuation.\n- WSL and native Windows are separate installations, each needing its own\n  binary and `init`. Remote interrupt is not available on Windows.\n\n## Contributing\n\n```sh\nmise install\nmise exec -- go test ./...\nmise exec -- go build -o claude-companion .\n```\n\nThe repository pins its Go toolchain with [mise](https://mise.jdx.dev/). Setup\nand diagnostic commands are documented in [Setup and configuration](docs/setup.md)\nand [Security and operations](docs/security-and-operations.md).\n\nWhat the tests cannot reach - a real Feishu account, a phone, a real install -\nis covered by the [manual test plan](docs/manual-test-plan.md).\n"}