Panduan - AI & Otomatisasi

Cara Menjalankan Claude Code Channels 24/7 di Mac mini Khusus

Claude Code Channels adalah fitur research preview dari CLI Claude Code milik Anthropic: sebuah saluran adalah server MCP yang mendorong event ke sesi Claude Code Anda yang sedang berjalan, sehingga Anda dapat berbicara dengan agen coding yang sedang membuka repositori Anda dari Telegram, Discord, atau iMessage, dan menyetujui pemanggilan tool-nya dari ponsel Anda. Event hanya tiba selama sesi terbuka, jadi dibutuhkan mesin yang tidak pernah tidur. Mac mini Apple Silicon khusus adalah host always-on yang alami, dan, karena saluran iMessage hanya untuk macOS, jenis host yang tidak akan pernah bisa digantikan VPS Linux, mulai dari $85/bulan.

Baca 25 menit Diperbarui 28 September 2026

1. Mengapa Menjalankan Claude Code Channels di Mac mini?

Dokumentasi resmi menyatakannya dengan tegas: "Event hanya tiba selama sesi terbuka, jadi untuk pengaturan always-on Anda menjalankan Claude dalam proses latar belakang atau terminal persisten." Laptop yang masuk mode sleep, ditutup layarnya, atau di-reboot untuk pembaruan diam-diam membuat bot Anda offline; Telegram Bot API tidak menawarkan riwayat atau pencarian, sehingga Claude tidak dapat mengambil pesan lama, dan Telegram menyimpan update yang belum terkirim paling lama 24 jam. Mac mini khusus dari MyRemoteMac menjaga sesi itu tetap terbuka 24/7 di Apple Silicon (Claude Code mendukung macOS 13+ di ARM64), dengan root penuh melalui SSH, VNC untuk dialog izin macOS yang hanya sekali, 1 Gbps termasuk, dan harga bulanan tetap. Ini juga satu-satunya jenis host cloud yang dapat menjalankan saluran iMessage, yang hanya untuk macOS: ia membaca database Messages dan mengendalikan Messages.app melalui AppleScript, mustahil di VPS Linux.

Fitur VPS Cloud (Linux) Mac mini (MyRemoteMac)
Biaya Bulanan Bervariasi (lihat analisis biaya) M4 mulai $85/bln · M6 mulai $149/bln (tetap)
Saluran iMessage Tidak mungkin (hanya macOS) Ya, Messages.app + Full Disk Access
Saluran Telegram / Discord Ya Ya (hanya outbound, tanpa port inbound)
Sesi Selalu Aktif Ya Ya (SLA 99.9%)
Hardware Bersama, tervirtualisasi Mac fisik khusus 1:1
Akses & Toolchain SSH SSH + VNC, root penuh, Xcode dan Simulator dalam sesi yang sama

Keunggulan Utama: Channels menjembatani aplikasi chat ke sesi Claude Code yang sudah membuka proyek nyata Anda. Di Mac mini, proyek itu bisa berupa aplikasi iOS atau macOS, agen yang Anda kirimi pesan dari ponsel dapat membangun dan mengujinya dengan Xcode di mesin yang sama (lihat panduan pengembangan Xcode jarak jauh kami). Ketiga plugin resmi meneruskan prompt izin, sehingga Anda menyetujui atau menolak setiap pemanggilan Bash, Write, atau Edit dari chat.

2. Prasyarat

Claude Code Channels adalah fitur dari CLI Claude Code proprietary milik Anthropic, bukan produk terpisah, dan memerlukan paket Claude berbayar. Ini adalah research preview: flag --channels bahkan belum muncul di claude --help, dan Anthropic menyatakan sintaks serta protokolnya dapat berubah. Fakta di bawah ini diperiksa terhadap dokumentasi resmi pada 28 September 2026 (Claude Code 2.1.283).

  • Sebuah Mac mini khusus dari MyRemoteMac, M4 mulai $85/bln (16 GB / 256 GB) atau M6 mulai $149/bln. Claude Code membutuhkan macOS 13.0+, RAM 4 GB+, dan prosesor ARM64 atau x64: semuanya memenuhi syarat.
  • Akses SSH dan VNC ke Mac mini Anda (keduanya disediakan bersama langganan MyRemoteMac Anda). SSH untuk terminal; VNC untuk login browser dan dialog Full Disk Access / Automation macOS yang dibutuhkan saluran iMessage.
  • Sebuah akun Claude dengan akses Claude Code: Pro ($20/bln), Max (mulai $100/bln), Team ($25/kursi/bln), Enterprise, atau kunci API Console yang ditagih per token. Paket claude.ai gratis tidak mencakup Claude Code. Channels tidak tersedia di Amazon Bedrock, Google Cloud Agent Platform, atau Microsoft Foundry. Di Team/Enterprise, seorang Owner harus mengaktifkan channels terlebih dahulu (claude.ai → Admin settings → Claude Code → Channels).
  • Bun di Mac mini: "Setiap saluran yang didukung adalah plugin yang memerlukan Bun" (diinstal di Langkah 1).
  • Kredensial bot untuk saluran Anda: token bot Telegram dari @BotFather, atau aplikasi bot Discord dengan Message Content Intent diaktifkan dan diundang ke server yang Anda ikuti bersamanya. iMessage tidak memerlukan token: dokumentasi mensyaratkan macOS, Full Disk Access, izin Automation pada balasan pertama, dan "perangkat apa pun yang masuk dengan Apple ID Anda" untuk mengirim pesan ke diri sendiri, menjaga pengguna Mac mini tetap login dengan Messages yang sudah masuk adalah kesimpulan kami dari mekanisme tersebut (lihat Langkah 3), dan kami merekomendasikan Apple ID khusus dengan autentikasi dua faktor, bukan Apple ID pribadi Anda.
  • Pemahaman dasar tentang perintah terminal, tmux, dan pengeditan ~/.claude/settings.json.

3. Langkah 1: Hubungkan melalui SSH, Instal Claude Code dan Bun

SSH ke Mac mini Anda dengan kredensial dari dashboard MyRemoteMac Anda, konfirmasi versi macOS, lalu instal Claude Code. Installer native adalah metode yang direkomendasikan Anthropic: tidak memerlukan Node.js dan memperbarui dirinya sendiri di latar belakang. Homebrew dan npm adalah alternatif yang terdokumentasi (paket npm menginstal binary native yang sama dan memerlukan Node.js 22+; jangan pernah menjalankannya dengan sudo).

Hubungkan melalui SSH dan Periksa Persyaratan

# Connect to your Mac mini
ssh admin@your-server-ip

# Confirm Apple Silicon (Claude Code supports x64 and ARM64)
uname -m
# arm64

# Claude Code and Bun both need macOS 13.0+
sw_vers -productVersion

Instal Claude Code (Installer Native Resmi)

Jalankan installer, lalu verifikasi versinya dan biarkan claude doctor menjalankan diagnostik read-only-nya. Cask claude-code dari Homebrew mengikuti saluran stable (tertinggal sekitar seminggu, melewati regresi) dan tidak memperbarui otomatis; claude-code@latest mengikuti latest.

# Recommended: official native installer (no Node.js needed, auto-updates in the background)
curl -fsSL https://claude.ai/install.sh | bash
# Pin a release channel or exact version at install time if you prefer:
#   curl -fsSL https://claude.ai/install.sh | bash -s stable

# Alternative A: Homebrew (stable channel; does not auto-update)
# brew install --cask claude-code

# Alternative B: npm (Node.js 22+, same native binary, never with sudo)
# npm install -g @anthropic-ai/claude-code

# Verify (prints e.g. "2.1.283 (Claude Code)") and run read-only diagnostics
claude --version && claude doctor

Instal Bun (Dibutuhkan oleh Setiap Plugin Saluran)

Plugin saluran resmi adalah skrip Bun. Persyaratan minimum Bun sendiri juga macOS 13.0+. Baik bun.com/install (dari dokumentasi Bun) maupun bun.sh/install (dari README plugin) keduanya resmi; Homebrew juga bisa. Plugin tidak menyebutkan versi minimum Bun.

# Official Bun installer
curl -fsSL https://bun.com/install | bash
# Homebrew alternative: brew install oven-sh/bun/bun

# Open a new shell (or source ~/.zshrc), then verify
bun --version

4. Langkah 2: Autentikasi dan Pilih Mode Izin

Channels memerlukan autentikasi Anthropic: login claude.ai (Pro, Max, Team, Enterprise) atau kunci API Console. Jalankan claude sekali dan ikuti login di browser. Melalui SSH, browser mungkin menampilkan kode untuk ditempel pada prompt "Paste code here if prompted"; di Mac mini headless Anda juga dapat menyelesaikan login di sesi VNC. Di macOS, kredensial disimpan ke Keychain; jika Keychain terkunci (umum saat melalui SSH), Claude Code beralih ke ~/.claude/.credentials.json dengan mode 0600.

Masuk (Langganan atau Kunci API)

Untuk sesi always-on, login langganan adalah titik lemahnya: ia kedaluwarsa (Claude Code memperingatkan "Your login expires in 3 days · run /login to renew" saat startup, dan sesi tanpa pengawasan "berhenti membuat kemajuan begitu kredensial kedaluwarsa"). Dua solusi yang terdokumentasi: buat token OAuth berlaku satu tahun dengan claude setup-token (Pro/Max/Team/Enterprise; token ini hanya dapat membuat permintaan model) dan ekspor di tempat sesi berjalan, atau gunakan ANTHROPIC_API_KEY dari Console, yang ditagih per token.

# Option A: subscription login (Pro, Max, Team, Enterprise)
cd ~/project
claude
# Follow the browser login. Over SSH, paste the code shown at
# "Paste code here if prompted": or finish the login over VNC.

# Option B: Console API key, billed per token (Claude Code asks once to approve it)
export ANTHROPIC_API_KEY="sk-ant-YOUR_API_KEY_HERE"
claude

# Option C (always-on subscription box): one-year OAuth token, printed once, never saved
claude setup-token
export CLAUDE_CODE_OAUTH_TOKEN=your-token

# Check which credential is active
# inside Claude Code: /status   (see the "Login" row)

Model dan Penyedia

Sesi menggunakan model yang dipilih paket Anda; ubah dengan /model atau claude --model <alias> (alias seperti opus, sonnet, haiku) dan tingkat effort dengan /effort. Tidak ada opsi model lokal atau penyedia pihak ketiga untuk Channels: backend Bedrock, Vertex, dan Foundry dikecualikan dan pengalihan ke endpoint non-Claude bukan konfigurasi yang didukung. Jika Anda menginginkan LLM lokal di Mac mini yang sama, perlakukan sebagai beban kerja terpisah, lihat panduan LLM lokal kami.

Pilih Mode Izin dan Kunci Saluran Rilis

Sejak Claude Code 2.1.283, mode auto (sebuah classifier meninjau tindakan) adalah mode awal bawaan untuk sesi interaktif. Untuk sesi saluran kami merekomendasikan tetap melibatkan persetujuan manusia: dalam mode Manual (--permission-mode default) setiap prompt Bash, Write, atau Edit diteruskan ke chat yang ada di allowlist Anda, tempat Anda menjawab yes <id> atau no <id>. Dalam mode auto, classifier yang memutuskan dan "tidak ada dialog yang akan terbuka untuk dijawab pihak jarak jauh". Karena fitur ini masih research preview, kunci juga saluran rilis stable dan versi minimum di ~/.claude/settings.json (pengaturan pengguna, mode auto dan bypass yang diatur di .claude/settings.json proyek diabaikan):

# ~/.claude/settings.json (user settings: applies to every project on the Mac mini)
{
  "permissions": {
    "defaultMode": "default"
  },
  "sandbox": {
    "enabled": true
  },
  "autoUpdatesChannel": "stable",
  "minimumVersion": "2.1.211"
}

# minimumVersion = the version YOU validated on this Mac mini (the docs' example is "2.1.100").
# Auto-updates and `claude update` refuse to install anything below it, so never set it to a
# version you have not tested with --channels: 2.1.283 has an open launchd regression (#97701).

# Equivalent per-launch flag instead of defaultMode:
#   claude --permission-mode default --channels plugin:telegram@claude-plugins-official

Jangan nonaktifkan izin. Peringatan dari dokumentasi sendiri tentang --dangerously-skip-permissions / bypassPermissions: "Gunakan mode ini hanya di lingkungan terisolasi seperti container, VM, atau dev container tanpa akses internet, di mana Claude Code tidak dapat merusak sistem host Anda" dan mode ini "tidak menawarkan perlindungan terhadap prompt injection atau tindakan yang tidak diinginkan". Mode ini ditolak sebagai root/sudo di macOS, aturan deny tetap berlaku, dan admin dapat memblokirnya dengan permissions.disableBypassPermissionsMode. Jika Mac mini yang sepenuhnya tepercaya, khusus, dan terisolasi harus berjalan tanpa pengawasan, pola yang terdokumentasi adalah claude -p "<prompt>" --dangerously-skip-permissions sebagai pengguna non-root, opsi dengan peringatan jelas, tidak pernah menjadi default. Pola tanpa pengawasan yang lebih aman adalah -p --permission-mode auto --permission-prompts none (2.1.259+), yang menolak apa pun yang akan memunculkan prompt alih-alih macet.

5. Langkah 3: Hubungkan Telegram, Discord, atau iMessage

Research preview ini menyertakan tiga plugin saluran resmi, Telegram, Discord, dan iMessage, ditambah demo localhost bernama fakechat, semuanya dari marketplace Anthropic claude-plugins-official (Apache-2.0). Masing-masing diinstal sebagai plugin di dalam Claude Code, dikonfigurasi dengan kredensial bot Anda sendiri, dan diaktifkan dalam sesi dengan flag --channels. Dua aturan berlaku untuk semuanya: Anda harus keluar dan memulai ulang Claude Code dengan --channels setelah menginstal plugin, dan bot hanya dapat membalas selama sesi itu berjalan. Setiap plugin yang disetujui memelihara allowlist pengirim: "hanya ID yang telah Anda tambahkan yang dapat mendorong pesan, dan semua orang lain diabaikan secara diam-diam."

Telegram (saluran pertama yang direkomendasikan)

Buat bot di Telegram: buka @BotFather, kirim /newbot, beri nama tampilan dan username unik yang berakhiran bot, lalu salin tokennya. Kemudian, di dalam sesi Claude Code di Mac mini, instal plugin (pilih scope user saat ditanya), simpan token, mulai ulang dengan flag saluran, lakukan pairing, dan kunci kebijakannya. Plugin melakukan long-polling ke Bot API, sehingga Mac mini tidak memerlukan port inbound.

# 1. In Telegram: open @BotFather, send /newbot, copy the token

# 2. Inside a Claude Code session on the Mac mini (choose the USER scope when asked)
/plugin install telegram@claude-plugins-official
# "Marketplace not found"? add it first, then retry:
#   /plugin marketplace add anthropics/claude-plugins-official
# If the summary says "Run /reload-plugins to activate.", do so.

# 3. Store the token (written to ~/.claude/channels/telegram/.env;
#    a TELEGRAM_BOT_TOKEN in the shell environment takes precedence)
/telegram:configure <token>

# 4. Exit Claude Code and restart with the channel flag
claude --channels plugin:telegram@claude-plugins-official

# 5. Send any message to your bot: it replies with a pairing code. Then, in Claude Code:
/telegram:access pair <code>
/telegram:access policy allowlist    # only your account can send from now on

Discord (alternatif)

Di Discord Developer Portal buat New Application, buka Bot, klik Reset Token dan salin, aktifkan Message Content Intent di bawah Privileged Gateway Intents, lalu gunakan OAuth2 → URL Generator dengan scope bot dan izin View Channels, Send Messages, Send Messages in Threads, Read Message History, Attach Files, dan Add Reactions untuk mengundangnya ke server yang Anda ikuti, DM hanya berfungsi jika Anda berbagi server dengan bot. Saluran guild bersifat opt-in per ID saluran.

# Discord Developer Portal (https://discord.com/developers/applications):
# New Application > Bot > Reset Token (copy it) > enable Message Content Intent
# OAuth2 > URL Generator: scope "bot"; permissions View Channels, Send Messages,
#   Send Messages in Threads, Read Message History, Attach Files, Add Reactions
# Open the generated URL and invite the bot to a server you are in

# Inside Claude Code (token saved to ~/.claude/channels/discord/.env, or set DISCORD_BOT_TOKEN)
/plugin install discord@claude-plugins-official
/discord:configure <token>

# Restart with the channel, DM the bot for a pairing code, pair, lock down
claude --channels plugin:discord@claude-plugins-official
/discord:access pair <code>
/discord:access policy allowlist

# Several channels at once: pass the entries space-separated
# claude --channels plugin:telegram@claude-plugins-official plugin:discord@claude-plugins-official

iMessage (hanya macOS, keunggulan Mac mini)

Tanpa token bot: plugin membaca ~/Library/Messages/chat.db secara langsung dan mengirim balasan melalui AppleScript. Pembacaan pertama memunculkan prompt Full Disk Access, prompt menyebut aplikasi mana pun yang meluncurkan Bun (Terminal, iTerm, IDE Anda), dan balasan pertama memicu prompt Automation ("Terminal wants to control Messages"). Keduanya adalah dialog GUI, jadi lakukan melalui VNC; tanpa Full Disk Access server keluar dengan "authorization denied". Kemudian buka Messages di perangkat apa pun yang masuk dengan Apple ID Anda dan kirim pesan ke diri sendiri: chat ke diri sendiri melewati kontrol akses, dan kontak lain harus dimasukkan ke allowlist secara eksplisit. Plugin melakukan polling chat.db sekali per detik, mulai dari baris terbaru (tidak ada replay setelah restart), menambahkan "Sent by Claude" kecuali IMESSAGE_APPEND_SIGNATURE=false, dan mengabaikan SMS/RCS secara default karena "ID pengirim SMS dapat dipalsukan". Kesimpulan kami dari mekanisme tersebut, bukan kalimat dari dokumentasi: jaga pengguna Mac mini tetap login dengan Messages yang sudah masuk.

# Over VNC: System Settings > Privacy & Security > Full Disk Access > add your terminal app
# (or click "Allow" when the first read of ~/Library/Messages/chat.db prompts)

# Inside Claude Code (user scope), then relaunch with the channel
/plugin install imessage@claude-plugins-official
claude --channels plugin:imessage@claude-plugins-official

# From any device signed into your Apple ID: open Messages and text yourself.
# The first reply triggers the macOS Automation prompt ("Terminal wants to control Messages"): click OK.

# Let another contact in (phone in +country format, or Apple ID email)
/imessage:access allow +15551234567

Uji Coba Opsional: fakechat di localhost

Untuk menguji alur tanpa layanan eksternal apa pun, demo resmi fakechat menyajikan UI chat di http://localhost:8787 (akses melalui SSH tunnel atau VNC). Demo ini tidak memiliki token dan tidak ada kontrol akses, jadi gunakan hanya untuk pengujian. Jika Claude Code meminta izin untuk balasan pertama, setujui.

/plugin install fakechat@claude-plugins-official
claude --channels plugin:fakechat@claude-plugins-official

# From your laptop, tunnel the demo UI (it listens on localhost only)
ssh -N -L 8787:127.0.0.1:8787 admin@your-server-ip
# then open http://localhost:8787

Yang akan Anda lihat: pesan masuk muncul di terminal Anda, tetapi teks balasannya tidak, terminal menampilkan pemanggilan tool dan konfirmasi seperti "sent", dan balasan muncul di aplikasi chat. Dalam mode -p (non-interaktif), tool yang memerlukan input terminal, pertanyaan pilihan ganda dan persetujuan plan mode, dinonaktifkan agar sesi tidak pernah macet; dalam sesi tmux interaktif yang direkomendasikan panduan ini, plan mode berfungsi (dipulihkan untuk sesi --channels di 2.1.126). Dialog kepercayaan proyek dan persetujuan MCP tidak pernah diteruskan, jadi percayai folder proyek dan setujui server MCP plugin secara lokal terlebih dahulu.

6. Langkah 4: Jaga Sesi Tetap Hidup 24/7 dan Perbarui

Anthropic tidak menetapkan mekanisme layanan apa pun: dokumentasi hanya menyebut menjalankan Claude "dalam proses latar belakang atau terminal persisten", dan tidak ada instruksi launchd, systemd, screen, atau nohup di code.claude.com per 28 September 2026. Yang terdokumentasi adalah halaman konfigurasi tmux, sehingga tmux adalah host yang didukung. Semua yang ada di bagian ini di luar pengaturan tmux adalah rekomendasi kami untuk Mac mini MyRemoteMac, yang ditandai dengan jelas sebagai rekomendasi.

Jalankan Sesi Saluran di tmux (rekomendasi kami)

Mulai sesi interaktif claude --channels di dalam sesi tmux bernama melalui SSH lalu detach. Anda dapat reattach kapan saja untuk menjawab prompt yang tidak diteruskan, memperbarui login dengan /login, atau membaca pemberitahuan Channels saat startup. Tambahkan tiga pengaturan tmux yang didokumentasikan Anthropic agar notifikasi sampai ke terminal luar dan Shift+Enter berfungsi:

# Install tmux
brew install tmux

# The three settings Anthropic documents for running Claude Code inside tmux
printf 'set -g allow-passthrough on\nset -s extended-keys on\nset -as terminal-features "xterm*:extkeys"\n' >> ~/.tmux.conf

# Start a named session in your project and launch the channel session inside it
tmux new -s claude -c ~/project
claude --channels plugin:telegram@claude-plugins-official

# Detach: Ctrl-b d      Reattach later: tmux attach -t claude
# Renew an expiring login from inside the session: /login

Supervisor Opsional: LaunchAgent Pengguna (rekomendasi kami, dengan peringatan)

Untuk membuat ulang sesi tmux setelah reboot atau crash, Anda dapat mendaftarkan LaunchAgent pengguna dengan RunAtLoad dan KeepAlive yang programnya adalah skrip wrapper kecil. Harus LaunchAgent, bukan LaunchDaemon: izin iMessage (Full Disk Access, Automation), Messages.app, dan login Keychain milik sesi pengguna yang sedang login, yang di Mac mini headless berarti Automatic login harus diaktifkan (System Settings > Users & Groups). Dua peringatan: apakah proses Bun yang diluncurkan dengan cara ini menerima izin Full Disk Access-nya sendiri tanpa prompt GUI belum diuji, dan issue regresi terbuka #97701 (2026-09-27) melaporkan daemon --channels yang diawasi launchd terus mengganti sesi setiap ~2 menit di 2.1.283, tanpa balasan maintainer saat tulisan ini dibuat. Uji pada versi target Anda dan pertahankan saluran stable tetap terkunci.

# OUR RECOMMENDATION: not documented by Anthropic. See the warning about issue #97701 above.

# 1. Wrapper script: ~/bin/claude-channels.sh  (chmod 700)
#!/bin/zsh
export PATH="$HOME/.local/bin:$HOME/.bun/bin:/opt/homebrew/bin:/usr/bin:/bin"   # where `which claude` / `which bun` point
# Optional: one-year token from `claude setup-token`, stored in a chmod 600 file
[ -f "$HOME/.claude-channels.env" ] && source "$HOME/.claude-channels.env"
tmux has-session -t claude 2>/dev/null || \
  tmux new -d -s claude -c "$HOME/project" \
    'claude --permission-mode default --channels plugin:telegram@claude-plugins-official'
# Stay alive while the session exists, so launchd's KeepAlive relaunches us when it dies
while tmux has-session -t claude 2>/dev/null; do sleep 30; done

# 2. LaunchAgent: ~/Library/LaunchAgents/com.example.claude-channels.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict>
  <key>Label</key><string>com.example.claude-channels</string>
  <key>ProgramArguments</key><array><string>/Users/admin/bin/claude-channels.sh</string></array>
  <key>RunAtLoad</key><true/>
  <key>KeepAlive</key><true/>
  <key>ThrottleInterval</key><integer>30</integer>
  <key>StandardOutPath</key><string>/Users/admin/Library/Logs/claude-channels.log</string>
  <key>StandardErrorPath</key><string>/Users/admin/Library/Logs/claude-channels.log</string>
</dict></plist>

# 3. Load it into the logged-in user session (LaunchAgent, never a LaunchDaemon)
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.example.claude-channels.plist
launchctl print gui/$(id -u)/com.example.claude-channels
# Unload: launchctl bootout gui/$(id -u)/com.example.claude-channels

Jaga Mac mini Tetap Aktif dan Login

Administrasi macOS umum, bukan item dari dokumentasi Claude Code: nonaktifkan sleep agar sesi dan poller Messages tidak pernah berhenti (jalankan man pmset di Mac untuk detailnya), dan aktifkan Automatic login untuk pengguna Anda agar LaunchAgent dan Messages.app kembali setelah reboot.

# Generic macOS administration (see `man pmset`): never sleep
sudo pmset -a sleep 0 disksleep 0 standby 0 powernap 0

# Automatic login for your user (needed for LaunchAgents and Messages.app after a reboot):
# System Settings > Users & Groups > Automatic login: set it over VNC

# Reboot-test once, then message the bot again
sudo reboot

Perbarui Claude Code, Bun, dan Plugin

Installer native memeriksa pembaruan saat startup dan secara berkala, mengunduh di latar belakang, dan menerapkan versi baru saat Anda memulai Claude Code berikutnya, sehingga sesi tmux yang berjalan lama tetap pada versinya sampai Anda memulai ulang. claude update menerapkannya segera. Karena sintaks --channels "dapat berubah berdasarkan masukan", baca kembali dokumentasi channels setelah setiap pembaruan dan periksa kembali pemberitahuan Channels saat startup untuk baris peringatan.

# Claude Code (native installer): apply a pending update now
claude update
# "Successfully updated from X to version Y" or "Claude Code is up to date (X)"
claude doctor            # shows the last update attempt
# Homebrew: brew upgrade claude-code      npm: npm install -g @anthropic-ai/claude-code@latest

# Channel plugins: refresh the catalogue, then update
claude plugin marketplace update claude-plugins-official
claude plugin update telegram@claude-plugins-official
# (loads in the next session, or after /reload-plugins in a running one)

# Bun
bun upgrade              # curl install   |   brew upgrade bun  (Homebrew install)

# Restart the channel session so the new versions take effect
tmux kill-session -t claude
tmux new -s claude -c ~/project
claude --channels plugin:telegram@claude-plugins-official
# Re-read the startup "Channels" notice for any warning line

7. Penguatan Keamanan

Setiap pesan masuk mendarat di sesi dengan akses sistem file, git, dan shell, dan "siapa pun yang dapat membalas melalui saluran dapat menyetujui atau menolak penggunaan tool di sesi Anda". Dokumentasi referensi menyatakannya secara blak-blakan: "Saluran tanpa gerbang adalah vektor prompt injection." Berikut kontrol yang terdokumentasi, ditambah rekomendasi kami di bagian yang tidak disebutkan dokumentasi:

  • Allowlist segera setelah pairing. Jalankan /telegram:access policy allowlist (atau padanan Discord-nya) begitu akun Anda sendiri sudah di-pairing. Setelah daftarnya final, TELEGRAM_ACCESS_MODE=static / IMESSAGE_ACCESS_MODE=static menonaktifkan pairing runtime sepenuhnya.
  • Hanya masukkan ke allowlist pengirim yang Anda percayai dengan wewenang persetujuan. Persetujuan yang diteruskan mencakup Bash, Write, dan Edit; sejak 2.1.211 teks yang diteruskan disanitasi dan sejak 2.1.234 kredensial disamarkan sebagai [REDACTED] dan relay hanya menuju server yang didaftarkan melalui --channels, tetapi dokumentasi tetap menyarankan memperlakukan field yang diteruskan sebagai tidak tepercaya.
  • Biarkan prompt izin tetap aktif. Mode Manual plus relay, atau mode auto dengan classifier, jangan pernah bypassPermissions di mesin yang menyimpan kode atau kredensial nyata. Aturan deny di settings memblokir perintah di setiap mode.
  • Aktifkan sandbox Bash (fitur resmi, rekomendasi kami untuk mengaktifkannya): di macOS tidak ada yang perlu diinstal, ia menggunakan framework Seatbelt bawaan. Tambahkan entri sandbox.credentials untuk ~/.ssh dan ~/.aws karena kebijakan baca default masih mengizinkannya.
  • Batasi file token (rekomendasi kami, dokumentasi tidak menyebutkan mode file): perintah configure menulis ~/.claude/channels/<telegram|discord>/.env; variabel lingkungan TELEGRAM_BOT_TOKEN / DISCORD_BOT_TOKEN lebih diutamakan daripada file. Jangan pernah commit; rotasi melalui BotFather atau portal Discord jika bocor.
  • Permukaan privasi iMessage: Full Disk Access memberi aplikasi terminal dan semua yang diluncurkannya akses baca ke seluruh database Messages, dan izin Automation memungkinkannya mengirim iMessage atas nama Anda. Gunakan Apple ID khusus dengan 2FA di Mac mini khusus, dan biarkan IMESSAGE_ALLOW_SMS pada default-nya yaitu false.
  • Tanpa port inbound. Plugin resmi melakukan polling ke Telegram atau terhubung outbound ke gateway Discord; fakechat hanya mendengarkan di localhost. Jika Anda membangun saluran webhook kustom dari dokumentasi referensi (dalam preview hanya dapat dimuat dengan --dangerously-load-development-channels, yang menurut dokumentasi jangan pernah digunakan untuk sumber tidak tepercaya), ekspos portnya hanya melalui VPN WireGuard Mac mini.
# Restrict the channel state and token files (our recommendation: no documented mode)
chmod 700 ~/.claude/channels
chmod 600 ~/.claude/channels/*/.env

# Freeze the allowlists once they are final (disables runtime pairing)
export TELEGRAM_ACCESS_MODE=static
export IMESSAGE_ACCESS_MODE=static

# Bash sandbox with strict mode and protected credential paths: ~/.claude/settings.json
{
  "sandbox": {
    "enabled": true,
    "allowUnsandboxedCommands": false,
    "credentials": {
      "files": [
        { "path": "~/.aws/credentials", "mode": "deny" },
        { "path": "~/.ssh", "mode": "deny" }
      ],
      "envVars": [
        { "name": "GITHUB_TOKEN", "mode": "deny" }
      ]
    }
  }
}

# Team/Enterprise admins: managed settings (users cannot override)
#   "channelsEnabled": true
#   "allowedChannelPlugins": [{ "marketplace": "claude-plugins-official", "plugin": "telegram" }]
#   "permissions": { "disableBypassPermissionsMode": "disable" }

8. Pemecahan Masalah Umum

Bot tidak merespons

Jawaban resmi: "pastikan Claude Code berjalan dengan --channels … Bot hanya dapat membalas selama saluran aktif." Sesi SSH yang ditutup, crash, reboot, atau sleep diam-diam membuat bot offline. Sejak 2.1.281 nama plugin yang terinstal juga harus sama persis dengan entri --channels:

# Is the session still there?
tmux attach -t claude
# Was it started WITH the flag, and with the exact plugin name?
claude --channels plugin:telegram@claude-plugins-official
# Read the startup "Channels" notice: it says why a channel did not register

# Telegram: the Bot API offers no history or search, so Claude cannot fetch older messages;
# Telegram holds undelivered updates for at most 24 hours.
# Discord can catch up: ask Claude to use fetch_messages (max 100).

"Marketplace claude-plugins-official not found" atau tidak ada perintah /telegram:configure

Tambahkan marketplace terlebih dahulu, pilih scope user saat instalasi, dan jalankan /reload-plugins jika ringkasan instalasi memintanya (atau cukup mulai ulang):

/plugin marketplace add anthropics/claude-plugins-official
/plugin install telegram@claude-plugins-official     # choose the USER scope
/reload-plugins
/telegram:configure <token>

# Bun missing? every channel plugin requires it
bun --version

Saluran terhubung tetapi tidak ada pesan yang masuk (org Team, Enterprise, atau Console)

channelsEnabled adalah pengaturan terkelola yang tidak dapat ditimpa pengguna. Di claude.ai Team/Enterprise, pengaturan ini diblokir secara default sampai Owner mengaktifkannya; org Console yang menerapkan pengaturan terkelola juga harus mengaturnya. Server MCP tetap terhubung dan tool-nya berfungsi, hanya pesan masuk yang hilang, dengan peringatan saat startup. Periksa pemberitahuan startup dan tanyakan kepada Owner Anda:

# Owner: claude.ai > Admin settings > Claude Code > Channels, or in managed settings:
#   "channelsEnabled": true
# Pro/Max accounts without an organization skip this check entirely.

# Also check that the plugin is on the allowlist (or the org's allowedChannelPlugins)
# and that nothing forces MCP_PROTOCOL_NEGOTIATION=auto in the environment

Server iMessage keluar dengan "authorization denied"

Full Disk Access tidak diberikan ke aplikasi yang meluncurkan Bun, atau Claude Code dimulai dari peluncur yang berbeda (sshd, server tmux yang dimulai di tempat lain, LaunchAgent) dari yang Anda setujui. Berikan izin melalui VNC dan luncurkan ulang dari tempat yang sama:

# Over VNC: System Settings > Privacy & Security > Full Disk Access > add the terminal app
# that launches your tmux/claude session, then restart the session from that same app.

# The reply path needs the Automation grant as well: the first outbound reply shows
# "Terminal wants to control Messages": click OK in the VNC session.

# SMS/RCS senders are ignored by design unless IMESSAGE_ALLOW_SMS=true (not recommended)

Sesi berhenti: "Login expired · Please run /login"

Login langganan kedaluwarsa dan sesi tanpa pengawasan berhenti membuat kemajuan. Reattach ke tmux dan perbarui, atau alihkan mesin always-on ke token OAuth berlaku satu tahun atau kunci API:

tmux attach -t claude
/login                   # renew the subscription login
/status                  # check the "Login" row

# Or make the box independent of the browser login:
claude setup-token       # one-year CLAUDE_CODE_OAUTH_TOKEN (Pro/Max/Team/Enterprise)
# or export ANTHROPIC_API_KEY (Console, per-token billing)
# Over SSH the Keychain may be locked: credentials then live in ~/.claude/.credentials.json (0600)

9. Analisis Biaya vs. VPS Cloud

Claude Code Channels tidak menambah biaya sendiri, tetapi Claude Code itu sendiri memerlukan paket berbayar, sama di host mana pun. Yang berbeda adalah mesinnya. VPS Linux serbaguna lebih murah per bulan daripada Mac mini, tetapi tidak dapat menjalankan saluran iMessage, tidak memiliki Xcode, dan berbagi hardware. Berikut biaya pengaturan tipikal dalam USD per bulan:

Kasus Penggunaan Akses Claude Host VPS Linux Host Mac mini (MyRemoteMac) Yang Ditambahkan Mac mini
Developer solo, Telegram atau Discord Pro, $20/bln ~$20–40/bln (asumsi) $85/bln (M4, 16 GB / 256 GB) Hardware khusus 1:1, VNC, toolchain macOS
Developer solo, iMessage Pro, $20/bln Tidak mungkin (hanya macOS) $85/bln (M4) Satu-satunya jenis host yang dapat menjalankannya
Penggunaan berat, beberapa sesi, build Xcode Max, mulai $100/bln ~$40–80/bln (asumsi) $149/bln (M6) Xcode, Simulator, build Apple Silicon yang cepat
Bot tim (Owner mengaktifkan channels) Team, $25/kursi/bln ~$40–80/bln (asumsi) $149/bln (M6) Satu mesin khusus per tim, pengaturan terkelola berlaku

Asumsi: angka VPS adalah kisaran kasar kami untuk instans Linux serbaguna kelas entry (4–8 GB) dan menengah (16 GB), bukan penawaran dari penyedia tertentu. Harga paket Claude berasal dari claude.com/pricing pada 28 September 2026 (Pro $20/bln atau $17/bln jika ditagih tahunan; Max mulai $100/bln; Team $25/kursi/bln standar atau $20 tahunan, $125 premium). Penagihan kunci API Console sebaliknya per token, harga resmi pihak pertama saat tulisan ini dibuat: Sonnet 5 $2/$10, Opus 5 $5/$25, Haiku 4.5 $1/$5 per juta token input/output. Paket langganan memiliki kuota terukur: bot always-on berbagi jatah yang sama dengan coding interaktif Anda. Anthropic tidak mempublikasikan jejak RAM atau CPU untuk sesi saluran, jadi kami menentukan ukuran secara kualitatif: Mac mini M4 dengan 16 GB lebih dari cukup untuk satu sesi Claude Code + plugin Bun; pilih M6 (tersedia sejak 22 September 2026) jika mesin yang sama juga menjalankan build berat, beberapa sesi, atau model lokal.

Kesimpulan: Jika Anda hanya membutuhkan Telegram atau Discord dan tidak pernah menyentuh macOS, VPS Linux adalah host yang lebih murah. Mac mini sepadan dengan harganya ketika agen harus membuka proyek Xcode Anda, ketika Anda menginginkan iMessage, atau ketika Anda menginginkan hardware khusus non-virtual dengan VNC untuk prompt macOS yang hanya sekali, mulai dari $85/bulan di atas paket Claude yang sudah Anda bayar.

10. Claude Code Channels vs. OpenClaw

Keduanya memecahkan masalah yang berbeda. Claude Code Channels adalah fitur dari CLI proprietary, bukan asisten mandiri: ia menjembatani Telegram, Discord, atau iMessage ke sesi Claude Code yang sudah berjalan, sehingga nilainya adalah "berbicara dengan agen coding yang sedang membuka repo Anda", dengan dukungan Anthropic, model izin Claude Code, persetujuan yes/no yang diteruskan dengan prompt yang disanitasi, allowlist pengirim, sandbox Bash, dan pengaturan org terkelola. Ia hanya untuk Claude melalui autentikasi Anthropic, tidak memiliki daemon sendiri, dan saluran kustom hanya dapat dimuat di balik flag development selama preview. OpenClaw (github.com/openclaw/openclaw, MIT, dipelihara komunitas, sekitar 391k bintang GitHub versus 148k untuk anthropics/claude-code pada 28 September 2026) adalah gateway open-source self-hosted yang berjalan 24/7 sebagai layanan launchd terawasi miliknya sendiri, mendukung jauh lebih banyak platform chat (WhatsApp, Telegram, Discord, iMessage, Slack, Signal, Teams, Google Chat, dan lainnya) dan memungkinkan Anda memilih penyedia model, termasuk model lokal. Beberapa artikel sekunder membingkai Channels sebagai alternatif OpenClaw; dokumentasi resmi tidak membuat perbandingan semacam itu.

Pilih Channels jika Anda sudah membayar Claude Pro, Max, atau Team dan ingin file proyek nyata Anda dapat dijangkau dari ponsel dengan dukungan resmi dan izin yang diteruskan. Pilih OpenClaw untuk WhatsApp, Slack, atau Signal, pilihan penyedia, model lokal, atau operasi daemon sejati, lihat panduan OpenClaw di Mac mini kami (dan sepupu Python-nya, Hermes Agent). Kedua bridge iMessage memerlukan macOS dengan Messages yang sudah masuk dan izin TCC yang sama, itulah tepatnya mengapa Mac mini khusus 1:1 cocok untuk keduanya.

11. FAQ

Apakah Claude Code Channels gratis atau open source?

Tidak untuk keduanya, dalam hal Claude Code itu sendiri: CLI-nya proprietary ("© Anthropic PBC. All rights reserved. Use is subject to Anthropic's Commercial Terms of Service.") dan memerlukan akun Pro, Max, Team, Enterprise, atau Console, paket claude.ai gratis tidak mencakup Claude Code. Hanya plugin saluran di repositori claude-plugins-official yang open source (Apache-2.0). Channels tidak menambah biaya di luar paket atau penggunaan API Anda.

Apakah saya harus membiarkan terminal terbuka agar bot berfungsi?

Ya, sesi harus tetap terbuka. Menurut dokumentasi resmi, event hanya tiba selama sesi Claude Code berjalan dengan --channels, jadi untuk pengaturan always-on Anda menjalankannya dalam proses latar belakang atau terminal persisten. Anthropic tidak menetapkan mekanisme; rekomendasi kami di Mac mini adalah sesi tmux bernama yang dapat Anda reattach melalui SSH, opsional diawasi oleh LaunchAgent pengguna (lihat Langkah 4 untuk peringatannya).

Bisakah saya menggunakan model lokal, Ollama, Bedrock, atau Vertex dengan Channels?

Tidak. Channels memerlukan autentikasi Anthropic melalui claude.ai atau kunci API Console dan tidak tersedia di Amazon Bedrock, Google Cloud Agent Platform, atau Microsoft Foundry. Pengalihan ke endpoint non-Claude bukan konfigurasi yang didukung. Anda tetap dapat menjalankan LLM lokal di Mac mini yang sama sebagai beban kerja terpisah, lihat panduan LLM lokal kami, tetapi bukan sebagai otak sesi saluran.

Konfigurasi Mac mini mana yang sebaiknya saya pilih?

Persyaratan yang dinyatakan Anthropic cukup ringan (macOS 13+, RAM 4 GB+) dan tidak ada jejak per sesi yang dipublikasikan, jadi kami menentukan ukuran secara kualitatif: Mac mini M4 dengan 16 GB / 256 GB seharga $85/bulan lebih dari cukup untuk satu sesi Claude Code plus plugin saluran Bun. Pilih Mac mini M6 mulai $149/bulan jika mesin yang sama juga akan menjalankan build Xcode berat, beberapa sesi saluran, atau model lokal secara bersamaan.

Apakah saluran iMessage berfungsi di Mac mini headless?

Ya, dengan dua langkah GUI satu kali yang dilakukan melalui VNC: memberikan Full Disk Access ke aplikasi yang meluncurkan Bun, dan mengklik OK pada prompt Automation ("Terminal wants to control Messages") pada balasan pertama. Plugin membaca ~/Library/Messages/chat.db milik pengguna yang login dan mengendalikan Messages.app melalui AppleScript, jadi, kesimpulan kami dari mekanisme tersebut, bukan kalimat dari dokumentasi, jaga pengguna tetap login dengan Messages yang masuk ke Apple ID, dan aktifkan Automatic login agar bertahan setelah reboot. Gunakan Apple ID khusus dengan 2FA.

Bagaimana dengan WhatsApp, Slack, Signal, atau Teams?

Semuanya bukan saluran resmi. Research preview menyertakan plugin Telegram, Discord, dan iMessage ditambah demo fakechat; saluran lain adalah server MCP kustom yang, selama preview, hanya dimuat di balik --dangerously-load-development-channels atau pengaturan allowedChannelPlugins organisasi. Claude in Slack adalah fitur berbeda yang menjalankan sesi cloud. Jika keluasan platform adalah prioritas, OpenClaw lebih cocok.

12. Sumber dan Bacaan Lanjutan

Setiap perintah, flag, dan persyaratan dalam panduan ini diperiksa pada 28 September 2026 terhadap dokumentasi resmi Claude Code, CHANGELOG (Claude Code 2.1.283, dipublikasikan ke npm pada 25 September 2026), dan repositori claude-plugins-official (telegram 0.0.7, discord 0.0.4, imessage 0.1.0, fakechat 0.0.1). Channels adalah research preview yang flag-nya dapat berubah, lihat halaman-halaman ini untuk status terkini:

Panduan Terkait

Siap Mengirim Pesan ke Agen Coding Anda 24/7?

Deploy Mac mini Apple Silicon khusus sebagai host Claude Code Channels Anda. M4 mulai $85/bulan, M6 mulai $149/bulan, 1 Gbps termasuk, SSH dan VNC.

Butuh detail lebih lanjut?

Jelajahi dokumentasi lengkap untuk panduan langkah demi langkah, referensi konfigurasi, dan pemecahan masalah.

Buka dokumentasi →