Own Your Stack.

Own Your Stack/The Reach/claude-bridge

Own your remote

claude-bridge

Drive your Claude Code sessions from Discord — watch turns, approve actions with a button, stay in sync on the go.

github → MIT the reach control plane

01What it is

A long Claude Code task is supposed to be autonomous, but it keeps blocking on you. A permission prompt, an ambiguous question, a failing test that wants a hint — and when that happens after the laptop's already closed, the task just sits until morning.

claude-bridge closes that gap from your phone. When a session goes idle waiting for input, it posts the tail of the transcript to a private Discord channel; your reply continues that exact session via claude --resume, full history replayed, and posts the result back. And while you're away, a session about to run a gated command can pause and wait for your ✅ on that exact command. It drives your own claude CLI, so a reply bills like your interactive sessions do — no hosted relay, no separate agent, no second set of credentials.

claude-bridge · approval
# away-mode catches a gated command
🔐 Approval needed b1ed3995
   session 7f3a2c91 — Bash

   git push origin main

# tap a button, or type: approve b1ed3995
[ ✅ Approve ]  [ ❌ Deny ]  [ ⏩ Allow Bash ]
Fig. 1 — an away-mode approval post, awaiting your tap.

02What it does

Pings you the moment a session idles

With the hooks installed, Claude Code's Notification hook tells the bridge exactly when a session needs input; without them, a background loop watches your transcripts and treats one unchanged for idle_seconds as idle. Either way the transcript tail lands in your channel.

A reply continues that exact session

Your reply runs claude --resume <id> --print against the flagged session — the real Claude Code session, full history replayed — so the model answers with the whole conversation in scope, not a context-free guess. The response and the turn's cost post back to the channel.

Approve gated commands with a button

In away-mode, a session about to run a gated tool (Bash, Write, …) pauses at the permission layer while the exact command is posted to Discord. Tap ✅ to run, ❌ to deny, or ignore it to deny by timeout — no answer means deny. Matchers like Bash(git push:*) scope the gate to only the calls that matter.

Read-only by construction, on the phone

With safe_mode on, an unconfirmed reply continues the session in Claude Code's plan mode: the model reads and reasons, but every mutating action is blocked at the permission layer. A phone-paste of "delete the test fixtures" gets a plan, not a deletion; !confirm restores full tools for that one turn.

One channel, every machine

Run a bridge per box and point them all at the same channel. Each ping and approval is labelled with its device_label, and globally unique session ids route replies to the right machine — or address one explicitly with @<device>. Turn on stream_tools to watch each tool call stream as the reply runs. One runtime dependency, MIT-licensed.


03Where it sits

Part of The Reach.

claude-bridge is the remote; The Reach is what extends an agent beyond one machine and one session — portable sessions, a remote control plane, and private search.

Drive the session, from anywhere.

claude-bridge is open source and MIT-licensed. Read the code, run it alongside your work, drive your sessions from your pocket.

View claude-bridge on GitHub →