# Jak sterować Claude Code z telefonu przez Telegram w 2026 roku

> Krok po kroku: utwórz bota Telegram, zainstaluj wtyczkę Claude Code Channels, zabezpiecz ją listą dozwolonych użytkowników i uruchom 24/7 na VPS. Praktyczny przewodnik z gotowymi poleceniami.

Source: https://ailoot.ai/blog/pl/claude-code-telegram-channels/
Canonical: https://ailoot.ai/blog/pl/claude-code-telegram-channels/
Language: pl
Publisher: Ailoot (https://ailoot.ai/)
Translation: guide-054
Revision: sha256-06a328b898d1160d1a3ad9e734f6ec5e5e6d3809f6f83867d0496c24bd7cd153


<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Najważniejsze punkty sekcji">

Najważniejsze punkty

Claude Code Channels to oficjalna wtyczka Anthropic od 20 marca 2026 r. Utwórz bota przez BotFather, zainstaluj wtyczkę jednym poleceniem, uruchom ponownie Claude z flagą `--channels` i wysyłaj wiadomości do bota z telefonu. Claude odczytuje je bezpośrednio w lokalnej sesji, zapisuje kod w plikach i odpowiada w Telegramie. Aby działał 24/7, przenieś sesję na własny VPS i skonfiguruj systemd.

</div>

Więcej materiałów na temat konfigurowania narzędzi znajdziesz w [dokumentacji Ailoot](https://ailoot.ai/docs/).

<div class="aside" data-semantic="ailoot-cta" role="note" aria-label="Ailoot Guides">

[Ailoot Guides](https://ailoot.ai/docs/)

</div>

## Czym jest Claude Code Channels i dlaczego go potrzebujesz

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Najważniejsze punkty sekcji">

Najważniejsze punkty

Channels to wtyczka MCP, która przekazuje wiadomości z Telegrama, Discorda lub iMessage do już uruchomionej sesji Claude Code. Sesja widzi wiadomość jako zwykłe żądanie użytkownika, pracuje na lokalnych plikach i odpowiada na tym samym czacie. Laptop pozostaje włączony, a ty możesz zająć się swoimi sprawami, korzystając z telefonu.

</div>

20 marca 2026 r. Anthropic udostępnił Claude Code Channels, oficjalną wtyczkę do łączenia sesji Claude z aplikacjami do komunikacji. Obsługiwane są Telegram, Discord i iMessage. Funkcja jest dostępna w ramach research preview: dokumentacja znajduje się pod adresem [code.claude.com/docs/en/channels](https://code.claude.com/docs/en/channels), a kod źródłowy wtyczki w publicznym repozytorium [anthropics/claude-plugins-official](https://github.com/anthropics/claude-plugins-official).

Krótko mówiąc, to „most czatowy” między telefonem a sesją Claude Code. Wysyłam botowi wiadomość: „Kontynuuj przepisywanie tabeli cenowej; w pliku `business/products/practicum/README.md` zaktualizuj daty kolejnej edycji”, a bot przekazuje ją do sesji na moim VPS-ie. Claude pobiera kontekst, edytuje plik, zatwierdza zmiany i odpowiada na Telegramie: „Gotowe, sprawdź commit”. Laptop zostaje zamknięty w domu.

⚠️ **Główne ograniczenie research preview:** Channels to most MCP. Sesja musi być uruchomiona na twoim komputerze lub VPS-ie. Gdy sesja jest zamknięta, nikt nie odbiera wiadomości. Dlatego działanie 24/7 trzeba skonfigurować osobno (zobacz sekcję o VPS-ie poniżej).

### Czym Channels różni się od innych sposobów pracy zdalnej

W [oficjalnej dokumentacji](https://code.claude.com/docs/en/channels) Anthropic zamieścił tabelę bezpośredniego porównania. Oto jej adaptacja:

| Funkcja | Działanie | Kiedy wybrać |
|----|----|----|
| **Claude Code on the web** | Uruchamia zadanie w nowym środowisku sandbox w chmurze i klonuje repozytorium z GitHuba | Zlecasz niezależne zadanie w tle i sprawdzasz je później |
| **Slack integration** | Uruchamia sesję internetową w wątku, gdy pojawi się wzmianka `@Claude` | Rozpoczynasz zadania bezpośrednio z rozmów zespołu |
| **MCP server (regular)** | Claude wywołuje go w trakcie zadania; serwer nie przesyła niczego do sesji | Dajesz Claude dostęp na żądanie do systemów zewnętrznych |
| **Remote Control** | Sterujesz lokalną sesją z claude.ai lub aplikacji mobilnej | Obsługujesz istniejącą sesję z ekranu telefonu |
| **Channels** ⭐ | Przesyła zdarzenia ze źródeł innych niż Claude do już uruchomionej sesji lokalnej | Zadajesz pytanie z telefonu i otrzymujesz odpowiedź na czacie; odbierasz webhook z CI |

Główna różnica między Channels a Remote Control jest taka: **Remote Control** zamienia „telefon w okno na terminal” — dosłownie widzisz kursor i naciskasz przyciski. **Channels** to chatbot, którego mózgiem jest lokalna sesja Claude. W Remote Control patrzę na terminal. W Channels piszę do kogoś, kto czyta moje pliki.

Jeśli potrzebujesz pełnej kontroli z poziomu ekranu, użyj Remote Control. Jeśli chcesz „wysłać pytanie, zająć się swoimi sprawami i dostać odpowiedź”, użyj Channels. Korzystam z obu rozwiązań: z Remote Control, gdy muszę zatwierdzić krytyczne zmiany, a z Channels, gdy ufam, że zadanie zostanie wykonane, i chcę odzyskać wieczór.

## Co będzie potrzebne przed rozpoczęciem

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Najważniejsze punkty sekcji">

Najważniejsze punkty

Claude Code v2.1.80 lub nowszy, obsługiwane uwierzytelnianie claude.ai lub klucz API Anthropic Console, zainstalowany Bun i dostęp do Telegrama. Do pracy 24/7 potrzebujesz VPS-a z Ubuntu lub Debianem. Wszystko działa tak samo na macOS, Linuxie i WSL.

</div>

Zanim przejdziesz do poleceń, sprawdź tę listę:

1.  **Konto Anthropic.** Potrzebujesz planu Pro, Max, Team lub Enterprise. Channels nie jest dostępny w bezpłatnym planie. Działa także klucz API Anthropic Console; jeśli organizacja Console wdraża ustawienia zarządzane, sprawdź włączenie kanałów w tych ustawieniach.
2.  **Claude Code v2.1.80 lub nowszy.** Sprawdź wersję poleceniem `claude --version`. Jeśli jest starsza, zaktualizuj ją za pomocą `claude update` lub `npm install -g @anthropic-ai/claude-code@latest`.
3.  **Bun.** Wtyczki Channels są skryptami Bun, a nie Node. Sprawdź wersję poleceniem `bun --version`. Jeśli Bun nie jest zainstalowany, uruchom `curl -fsSL https://bun.sh/install | bash`, a następnie `source ~/.bashrc`.
4.  **Konto Telegram.** Może to być dowolne konto; najważniejsze, żeby było zalogowane w telefonie.
5.  **Jeśli korzystasz z planu Team/Enterprise,** poproś administratora o włączenie `channelsEnabled` w ustawieniach zarządzanych lub na stronie [admin-settings/claude-code](https://claude.ai/admin-settings/claude-code). W organizacjach ta opcja jest domyślnie wyłączona.

Jeśli po raz pierwszy słyszysz o Bun, nie martw się. Bun to alternatywne środowisko uruchomieniowe JavaScript, podobne do Node. Anthropic wybrał je dla wtyczek Channels, ponieważ uruchamia się szybciej i łatwiej spakować je do pojedynczego pliku binarnego. Zainstaluj je raz i zapomnij.

⚠️ **Channels nie działa jeszcze z firmowymi usługami Bedrock / Google Vertex / Azure Foundry.** Obsługuje tylko uwierzytelnianie przez claude.ai lub Anthropic Console.

## Krok 1. Utwórz bota Telegram przez BotFather

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Najważniejsze punkty sekcji">

Najważniejsze punkty

Otwórz @BotFather w Telegramie, wyślij polecenie `/newbot`, wybierz nazwę i nazwę użytkownika (nazwa użytkownika musi kończyć się na `bot`) i odbierz token w formacie `12345678:AAH...`. Chroń token: to hasło do twojego bota. Każdy, kto go zobaczy, może pisać jako bot i potencjalnie przechwytywać wiadomości wysyłane do Claude.

</div>

BotFather zrobi za ciebie całą pracę — wystarczy nacisnąć pięć przycisków. Oto kolejne kroki:

1.  Otwórz [@BotFather](https://t.me/BotFather) w Telegramie (możesz użyć telefonu; pozostałą konfigurację również da się wykonać na telefonie).
2.  Jeśli używasz go pierwszy raz, naciśnij „Start”.
3.  Wyślij polecenie `/newbot`.
4.  BotFather zapyta: „Dobrze, nowy bot. Jak go nazwiemy?”. Wpisz nazwę wyświetlaną, na przykład `Mój asystent - Claude Code`.
5.  Następnie poprosi o nazwę użytkownika. Musi być unikatowa w całym Telegramie i kończyć się na `bot`. Na przykład `my_claude_bot` lub `my_dev_bot`.
6.  BotFather odpowie wiadomością podobną do tej:

```
Done! Congratulations on your new bot. You will find it at
'<OFFICIAL_URL>'.

Use this token to access the HTTP API:
1234567890:AAHzlAU...

Keep your token secure and store it safely, it can be used by anyone to control your bot.
```

Skopiuj token. Będzie potrzebny za dwie minuty.

⚠️ **Bezpieczeństwo tokenu.** Token bota zapewnia nad nim pełną kontrolę. Jeśli wycieknie, każdy będzie mógł pisać jako twój bot i (potencjalnie) przechwytywać wiadomości wysyłane do Claude. Nie publikuj go w repozytoriach, nie wklejaj do kodu ani nie wysyłaj na czatach. Przechowuję tokeny w `~/.claude/channels/telegram/.env`; wtyczka umieści go tam w następnym kroku.

## Krok 2. Zainstaluj wtyczkę Telegram w Claude Code

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Najważniejsze punkty sekcji">

Najważniejsze punkty

Uruchom Claude Code jak zwykle, a następnie wpisz w sesji `/plugin install telegram@claude-plugins-official`. Jeśli wtyczka nie zostanie znaleziona, najpierw dodaj oficjalny marketplace poleceniem `/plugin marketplace add anthropics/claude-plugins-official`. Po instalacji uruchom `/reload-plugins`, aby aktywować polecenia wtyczki w bieżącej sesji.

</div>

Otwórz terminal w dowolnym folderze, w którym zwykle pracujesz z Claude, i uruchom:

```bash
claude
```

Wpisz w sesji polecenie ukośnikowe:

```
/plugin install telegram@claude-plugins-official
```

Jeśli Claude odpowie „Plugin not found in any marketplace”, klient nie zna oficjalnego marketplace'u. Dodaj go:

```
/plugin marketplace add anthropics/claude-plugins-official
```

Jeśli dodano go wcześniej, zaktualizuj go:

```
/plugin marketplace update claude-plugins-official
```

Po pomyślnej instalacji ponownie załaduj wtyczki, aby aktywować ich polecenia:

```
/reload-plugins
```

Powinny być teraz dostępne polecenia ukośnikowe, takie jak `/telegram:configure` i `/telegram:access`. Aby to sprawdzić, wpisz `/help`; na liście powinna być sekcja telegram.

## Krok 3. Połącz token z wtyczką

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Najważniejsze punkty sekcji">

Najważniejsze punkty

W sesji Claude wpisz `/telegram:configure <token>`, podając token z kroku 1. Polecenie zapisze go w `~/.claude/channels/telegram/.env` (dostęp ma tylko twój użytkownik). Możesz też ustawić zmienną środowiskową `TELEGRAM_BOT_TOKEN` w powłoce przed uruchomieniem Claude. W środowisku produkcyjnym korzystam z drugiej opcji: łatwiej zarządzać nią przez systemd i nie trzeba dołączać `~/.claude/` do repozytorium.

</div>

W sesji Claude wpisz:

```
/telegram:configure 1234567890:AAHzlAU...
```

Polecenie zapisze token w `~/.claude/channels/telegram/.env`. Plik jest dostępny tylko dla twojego użytkownika (`chmod 600`), więc nie musisz się tym martwić.

Możesz też ustawić token za pomocą zmiennej środowiskowej. Przydaje się to, gdy wdrażasz Claude przez systemd lub Docker i nie chcesz używać poleceń interaktywnych:

```bash
export TELEGRAM_BOT_TOKEN="1234567890:AAHzlAU..."
claude --channels plugin:telegram@claude-plugins-official
```

⚠️ W środowisku produkcyjnym zawsze używam zmiennych środowiskowych zamiast pliku `.env` w katalogu domowym `~/`. Ułatwia to zarządzanie sekretami przez systemd (`Environment=TELEGRAM_BOT_TOKEN=...`) i zapobiega przypadkowemu dodaniu `~/.claude/` do repozytorium.

## Krok 4. Uruchom ponownie Claude z flagą --channels

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Najważniejsze punkty sekcji">

Najważniejsze punkty

Zakończ sesję (`exit` lub `Ctrl+D`), a następnie uruchom ją ponownie z flagą `--channels plugin:telegram@claude-plugins-official`. Flaga włącza wtyczkę i nakazuje Claude odpytywać Telegram API o nowe wiadomości. Bez niej bot istnieje, ale milczy — wtyczka pozostaje nieaktywna i nie rozpoczęła odpytywania.

</div>

To najważniejsza sprawa i punkt, na którym wszyscy potykają się przy pierwszym uruchomieniu. **Samo zainstalowanie wtyczki nie wystarczy.** Aby bot rzeczywiście zaczął odbierać wiadomości, trzeba uruchomić Claude z jawną flagą:

```bash
claude --channels plugin:telegram@claude-plugins-official
```

Bez tej flagi sesja działa jak zwykle, ale wtyczka Telegram pozostaje nieaktywna. Po dodaniu flagi Claude uruchamia serwer MCP wtyczki, zaczyna odpytywać Telegram API i odpowiadać na wiadomości wysyłane do bota.

Po uruchomieniu w terminalu powinien pojawić się komunikat podobny do tego:

```
✻ Welcome to Claude Code 2.1.80
  Channels: telegram@claude-plugins-official (active)
  Polling for messages...
```

Jeśli nie ma wiersza dotyczącego channels, flaga nie została uwzględniona. Sprawdź, czy masz Claude Code w wersji 2.1.80+ i czy wtyczka jest faktycznie zainstalowana (`/plugin list` w sesji).

⚠️ **Przydatna wskazówka.** Dodałem alias do `~/.zshrc`:

```bash
alias claude-tg="claude --channels plugin:telegram@claude-plugins-official"
```

Teraz wystarczy uruchomić `claude-tg`. Możesz przekazać kilka wtyczek, oddzielając je spacjami: `--channels plugin:telegram@... plugin:discord@...`.

## Krok 5. Sparuj konto i zablokuj wszystkich pozostałych

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Najważniejsze punkty sekcji">

Najważniejsze punkty

Otwórz bota w Telegramie i wyślij dowolną wiadomość. Bot odpowie sześciocyfrowym kodem parowania. Wróć do terminala i wpisz `/telegram:access pair <code>`. Następnie koniecznie ogranicz dostęp za pomocą listy dozwolonych użytkowników: `/telegram:access policy allowlist`. Zatwierdzaj kody parowania wyłącznie zamierzonych osób; lista nadawców kontroluje dostęp do sesji.

</div>

Ten krok dotyczy bezpieczeństwa. **Zatwierdzony nadawca może poprosić Claude o działania na plikach i narzędziach dostępnych sesji.** Sparuj wyłącznie zamierzone konto i zablokuj politykę nadawców przed poleganiem na bocie.

Kroki:

1.  **Otwórz bota w Telegramie.** Znajdź go po nazwie użytkownika `@my_claude_bot` lub skorzystaj z linku w odpowiedzi BotFather. Naciśnij „Start”.
2.  **Wyślij botowi dowolną wiadomość.** Na przykład `hi`.
3.  **Bot odpowie kodem parowania.** Będzie wyglądać mniej więcej tak:

```
Hi! To pair this account, run in your Claude Code session:
/telegram:access pair 847291

This code is valid for 5 minutes.
```

4.  **Wróć do terminala.** W sesji Claude wpisz polecenie z otrzymanej odpowiedzi:

```
/telegram:access pair 847291
```

Claude odpowie: „Account paired”. Teraz możesz wysyłać polecenia z konta Telegram.

5.  **Włącz politykę listy dozwolonych.** Zablokuje ona wszystkie konta, które nie zostały sparowane:

```
/telegram:access policy allowlist
```

Od tej chwili wiadomości od innych kont będą **po cichu ignorowane**. Nie pojawią się w terminalu, a bot nie odpowie — jakby nigdy nie dotarły.

⚠️ **Włączenie listy dozwolonych od razu po sparowaniu jest bardzo ważne.** **Nie odkładaj tego na później.** Nie zatwierdzaj nieznanych próśb parowania podczas konfiguracji ani nie traktuj udanej odpowiedzi jako dowodu poprawnej polityki nadawców. Za pierwszym razem mój bot działał przez dziesięć minut bez listy dozwolonych i dwie przypadkowe osoby na Telegramie zdążyły wysłać „hi”. Na szczęście nie pozwalałem wtedy poleceniom zapisywać plików.

Jeśli chcesz dodać kogoś innego (na przykład partnera projektowego):

```
/telegram:access pair <kod z jego konta>
```

Ta osoba musi najpierw napisać do bota, otrzymać kod i przekazać go tobie. Możesz dodać ją tylko w ten sposób.

Więcej przewodników znajdziesz w [dokumentacji Ailoot](https://ailoot.ai/docs/).

<div class="aside" data-semantic="ailoot-cta" role="note" aria-label="Ailoot Guides">

[Ailoot Guides](https://ailoot.ai/docs/)

</div>

## Jak uruchomić Claude 24/7 na własnym VPS-ie

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Najważniejsze punkty sekcji">

Najważniejsze punkty

Lokalna sesja działa, gdy laptop jest otwarty; zamknij pokrywę, a bot zamilknie. Aby Claude odpowiadał o każdej porze, przenieś sesję na własny VPS: zainstaluj Claude Code i Bun, uwierzytelnij oraz zainstaluj i sparuj wtyczkę jako ten sam wydzielony użytkownik Unix i uruchom usługę systemd z automatycznymi restartami. Serwer Coolify poradzi sobie bez problemu.

</div>

Jeśli chcesz, aby bot był „aktywny przez całą dobę”, a nie „działał przez godzinę, gdy otworzysz laptopa i coś sprawdzisz”, sesja musi być stale uruchomiona. Lokalnie można to zrobić za pomocą tmux, ale VPS jest prostszy i bardziej niezawodny.

Jedna z przykładowych konfiguracji używa VPS-a z Coolify, na którym hostowana jest też witryna ([szczegóły w przewodniku publikowania przez Coolify](https://ailoot.ai/blog/pl/coolify-claude-code-deploy/)). Możesz użyć tego samego serwera — Claude potrzebuje niewiele pamięci. Jeśli nie masz VPS-a, wybierz najtańszy za 4–5 euro miesięcznie, na przykład Hetzner CX11 / Yandex Cloud / Selectel.

### Krok 1: Zainstaluj system na VPS-ie

Najpierw administrator tworzy wydzielone konto Unix i obszar roboczy. Istniejącego konta używaj dopiero po sprawdzeniu katalogu domowego i własności:

```bash
sudo useradd --create-home --shell /bin/bash claude
sudo install -d -o claude -g claude /home/claude/workspace
sudo -iu claude
```

Kontynuuj w tej powłoce logowania `claude`, nie w katalogu root. Zainstaluj Bun oficjalnym instalatorem i Claude Code przez [natywną instalację](https://code.claude.com/docs/en/setup):

```bash
curl -fsSL https://bun.sh/install | bash
curl -fsSL https://claude.ai/install.sh | bash
```

Otwórz świeżą powłokę logowania tego samego użytkownika, aby zadziałały zmiany PATH. Sprawdź konto i ścieżki programów:

```bash
whoami
printf '%s\n' "$HOME"
command -v bun
command -v claude
bun --version
claude --version
cd /home/claude/workspace
claude
```

`whoami` musi zwrócić `claude`, a `HOME` `/home/claude`. Zapisz bezwzględne ścieżki z `command -v`; rzeczywistej ścieżki Claude użyj w `ExecStart`, a katalog Bun dodaj do PATH usługi. Zatrzymaj się, jeśli brakuje któregoś programu.

### Krok 2: Uwierzytelnij, zainstaluj i sparuj jako użytkownik usługi

W tej samej interaktywnej sesji `claude` zakończ logowanie i powtórz kroki 2–5 powyżej pod tym użytkownikiem Unix: zainstaluj wtyczkę Telegram w **zakresie użytkownika**, skonfiguruj token, uruchom ponownie z `--channels`, sparuj konto Telegram i ustaw `policy allowlist`. Przed usługą sprawdź wiadomość i odpowiedź. Nie kopiuj konfiguracji ani poświadczeń Claude użytkownika root do tego katalogu.

Obsługiwane jest zarówno logowanie subskrypcją claude.ai, jak i klucz API Anthropic Console. Team/Enterprise wymaga włączenia organizacyjnego; zarządzane organizacje Console także muszą spełniać ustawienia kanałów. Console rozlicza użycie API zamiast subskrypcji claude.ai. Zachowaj wybrane konto i metodę uwierzytelniania przy przejściu z powłoki do usługi.

### Krok 3: Uruchom sesję przez systemd

Wyjdź z powłoki użytkownika usługi i utwórz jednostkę jako administrator. Poniższa jednostka zakłada wyniki ścieżek `/home/claude/.local/bin/claude` i `/home/claude/.bun/bin/bun`; zastąp je faktycznymi wynikami, jeśli są inne. Dostarcz to samo wybrane środowisko uwierzytelniania i token bota, ogranicz odczyt jednostki do administratora i nigdy nie commituj sekretów. Utwórz plik usługi do automatycznego startu i restartu po awarii:

```bash
cat > /etc/systemd/system/claude-code.service <<'EOF'
[Unit]
Description=Claude Code with Telegram channel
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=claude
WorkingDirectory=/home/claude/workspace
Environment="HOME=/home/claude"
Environment="TELEGRAM_BOT_TOKEN=1234567890:AAH..."
Environment="PATH=/home/claude/.local/bin:/home/claude/.bun/bin:/usr/local/bin:/usr/bin:/bin"
ExecStart=/home/claude/.local/bin/claude --channels plugin:telegram@claude-plugins-official --dangerously-skip-permissions
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable claude-code
systemctl start claude-code
```

Włączyłem następujące ustawienia:

- **`Type=simple`** — prosty tryb; systemd uznaje proces za uruchomiony zaraz po jego starcie.
- **`User=claude`** — proces działa na oddzielnym koncie użytkownika, a nie jako root. To bezpieczniejsze.
- **`WorkingDirectory=/home/claude/workspace`** — przygotowany obszar roboczy należący do użytkownika usługi. Umieść tam zamierzone repozytorium przed startem; nie zostawiaj kopii należącej do root ani nie uruchamiaj z jego katalogu domowego.
- **`Environment=TELEGRAM_BOT_TOKEN=...`** — token jest przekazywany bezpośrednio do procesu. Nie potrzeba pliku `.env`.
- **`--dangerously-skip-permissions`** — niezbędna opcja do pracy bez nadzoru. Bez niej Claude czeka w terminalu na twoje „tak/nie” przed każdą czynnością, a sesja się zawiesi. Lista identyfikuje nadawców; nie czyni ich poleceń bezpiecznymi. Używaj pomijania uprawnień tylko w izolowanym środowisku z celowo ograniczonymi plikami, poświadczeniami i siecią.
- **`Restart=on-failure`** — jeśli proces ulegnie awarii (Claude się zawiesi lub sieć przestanie działać), systemd uruchomi go ponownie po 10 sekundach.

Aby wyświetlić logi, uruchom:

```bash
journalctl -u claude-code -f
```

Jeśli coś pójdzie nie tak, polecenie `journalctl -u claude-code -n 100` wyświetli ostatnie 100 wierszy.

### Krok 4: Sprawdź, czy bot działa

Uruchom usługę dopiero po uzyskaniu rzeczywistej odpowiedzi Telegrama w konfiguracji interaktywnej. Wyślij temu samemu botowi nieszkodliwą wiadomość ze sparowanego konta i sprawdź odpowiedź oraz logi usługi. Jeśli działa interaktywnie, a nie przez systemd, najpierw porównaj użytkownika Unix, HOME, obszar roboczy, ścieżkę programu, PATH i środowisko uwierzytelniania.

Przy późniejszym parowaniu zatrzymaj usługę, wykonaj `sudo -iu claude`, wejdź do `/home/claude/workspace` i uruchom ten sam kanał interaktywnie. Sparuj konto i włącz listę tam, wyjdź i uruchom usługę ponownie. Nie uruchamiaj dwóch odbiorców tego samego bota jednocześnie. `journalctl` czyta logi, nie zapewnia interaktywnego promptu Claude.

## 5 pułapek na serwerze produkcyjnym i jak ich uniknąć

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Najważniejsze punkty sekcji">

Najważniejsze punkty

Zebrałem pułapki na podstawie tygodnia konfiguracji środowiska produkcyjnego: systemd nie widzi Bun, długie odpytywanie przestaje działać po dłuższym okresie bezczynności, limity planu Max wyczerpują się w środku dnia, `--dangerously-skip-permissions` może doprowadzić do wycieku, a lista dozwolonych użytkowników zostaje pominięta po ponownej instalacji. Każdy z tych problemów można rozwiązać jedną linijką konfiguracji, ale jeśli o nich nie wiesz, napotkasz je w ciągu kilku dni.

</div>

### 1. Bun nie ma w PATH systemd

systemd uruchamia procesy z minimalnym środowiskiem i nie widzi zmiennych z `~/.bashrc`. Jeśli Bun zainstalowano tylko w katalogu domowym root, a jednostka ma `User=claude`, usługa nie odziedziczy tej instalacji ani PATH powłoki root.

**Rozwiązanie.** Zainstaluj Bun w całym systemie (`/usr/local/bin/bun`) albo jawnie przekaż PATH:

```ini
Environment="PATH=/home/claude/.bun/bin:/usr/local/bin:/usr/bin:/bin"
```

### 2. Po dłuższym okresie bezczynności sesja traci połączenie TCP z Telegram API

Po 6–12 godzinach bezczynności bot może „zamilknąć” — wiadomości są wysyłane do Telegrama, ale wtyczka ich nie odbiera. To osobliwość długiego odpytywania.

**Rozwiązanie.** Dodaj regularny restart w systemd (co 24 godziny):

```ini
Restart=always
RuntimeMaxSec=86400
```

Możesz też skonfigurować zadanie cron: `0 5 * * * systemctl restart claude-code` (restart o 5 rano).

### 3. Limity Claude Max wyczerpują się w środku dnia

Jeśli intensywnie korzystasz z Claude przez Telegram, w planie Max 5x (około \$100 miesięcznie) możesz osiągnąć limit w ciągu 4–6 godzin. Żądania z Telegrama nie różnią się od tych z normalnego terminala; korzystają z tego samego budżetu.

**Rozwiązanie.** Ustaw przypomnienie: „Bot nie odpowiada — sprawdź `/stats`”. Jeśli osiągniesz limit, poczekaj na jego odnowienie albo przejdź na Max 20x (\$200 miesięcznie). Pomóc mogą [przewodnik oszczędzania tokenów](https://ailoot.ai/blog/pl/claude-code-token-limits-saving/) i [przewodnik porównujący modele Sonnet i Opus](https://ailoot.ai/blog/pl/claude-code-model-effort-sonnet-opus/).

### 4. `--dangerously-skip-permissions` jest niebezpieczne nawet z listą dozwolonych

Ta flaga wyłącza wszystkie potwierdzenia. Każde polecenie wysłane przez ciebie w Telegramie zostanie uruchomione bez pytań: usuwanie plików, wysyłanie żądań zewnętrznych — wszystko. Kiedyś poprosiłem Claude, by „usuń niepotrzebne `console.log`”, a Claude, z zapałem do sprzątania, skasował połowę logów debugowania w skrypcie produkcyjnym. Przywróciłem je przez git, ale szkoda już się stała.

**Rozwiązanie.** Nie włączaj `--dangerously-skip-permissions`, jeśli pracujesz nad krytycznym projektem. Zamiast tego użyj [Remote Control](https://code.claude.com/docs/en/remote-control) do obsługi sesji — prośby o uprawnienia trafią na telefon, gdzie zatwierdzisz je ręcznie. Channels z `--dangerously-skip-permissions` nadaje się do wstępnych wersji, refaktoryzacji i testów.

### 5. Lista dozwolonych „psuje się” po ponownej instalacji

Lista dozwolonych jest przechowywana w `~/.claude/channels/telegram/`. Jeśli przejdziesz na nowy VPS, ponownie zainstalujesz Claude lub zmienisz użytkownika, stare dane parowania nie zostaną wczytane. Brakuje starej listy nadawców; nie zakładaj zachowania poprzedniej polityki dostępu w nowej instancji.

**Rozwiązanie.** Przed migracją wykonaj kopię zapasową `~/.claude/channels/telegram/`. Po migracji przywróć ją w tym miejscu. Możesz też ponownie sparować konto od razu po reinstalacji i **nie pozostawiać nawet minuty przerwy między uruchomieniem bota a ustawieniem `policy allowlist`**.

## Channels czy Remote Control — co wybrać?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Najważniejsze punkty sekcji">

Najważniejsze punkty

W Channels sesja Claude odpowiada na czacie, a ty wysyłasz prompt z telefonu. Remote Control wyświetla ekran terminala w telefonie i pozwala obsługiwać sesję przyciskami. Channels jest wygodniejsze, gdy chcesz „zapytać i zająć się czymś innym”; Remote Control sprawdza się przy krytycznych krokach, gdy musisz widzieć, co robi Claude, i zatwierdzać każde ryzykowne działanie.

</div>

Anthropic udostępnił obie funkcje w podobnym czasie: Remote Control 25 lutego 2026 r., a Channels 20 marca 2026 r. **Nie dublują się** — rozwiązują różne problemy.

| Scenariusz | Channels | Remote Control |
|----|----|----|
| Pytasz „jakie były wczorajsze commity?”, gdy jesteś poza domem | ✅ Idealny wybór | Przesada — potrzebujesz pełnego ekranu |
| Zatwierdzasz zmianę w pliku | ⚠️ Ślepe zatwierdzenie przez `--dangerously-skip-permissions` | ✅ Widzisz, co Claude chce zrobić |
| Uruchamiasz Claude 24/7 | ✅ Konfiguracja VPS + systemd | ⚠️ Wymaga otwartego laptopa |
| Wysyłasz z telefonu tylko kilka promptów | ⚠️ Przesada — bot, token i wtyczka | ✅ Jeden kod QR |
| Odbierasz webhook z CI / Sentry | ✅ Natywne zastosowanie | ❌ Nie do tego |
| Zespół składający się z kilku osób | ✅ Lista dozwolonych dla wielu kont | ⚠️ Tylko właściciel sesji |
| Nie chcesz udostępniać plików w chmurze Anthropic | ✅ Tylko tekst przez MCP | ✅ Również tylko tekst |

Sam korzystam z nich w następujący sposób: **Channels** do pracy asynchronicznej, gdy jestem z dala od laptopa, powiadomień CI i integracji. **Remote Control** — gdy muszę zobaczyć, co robi Claude, lub zatwierdzić ryzykowny krok.

Możesz używać obu jednocześnie. Bot Telegram zapewnia szybki kanał do „zadania pytania i uzyskania odpowiedzi”, a Remote Control służy do „kontrolowania krytycznych spraw”. Oba korzystają z tego samego limitu Claude.

## FAQ

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Najważniejsze punkty sekcji">

Najważniejsze punkty

Odpowiedzi na siedem najczęstszych pytań o Channels: łączenie wielu botów, działanie po zamknięciu terminala, webhooki z CI, Telegram a Discord, ograniczenia planu Team, dostęp Claude do danych z telefonu oraz plan bezpłatny. Więcej materiałów znajdziesz w dokumentacji Ailoot.

</div>

**Czy mogę jednocześnie połączyć kilka botów?**

Tak. Flaga `--channels` przyjmuje listę rozdzieloną spacjami: `--channels plugin:telegram@claude-plugins-official plugin:discord@claude-plugins-official`. Jedna sesja Claude odpowiada na obu czatach.

**Co się stanie, jeśli zamknę terminal?**

Sesja się zamknie, wtyczka przestanie działać, a bot zamilknie. Na VPS-ie sesja będzie działać dalej dzięki systemd. Na komputerze lokalnym po zamknięciu laptopa `claude` rozłączy się z SIGHUP w ciągu kilku sekund.

**Czy mogę odbierać powiadomienia z CI lub Sentry?**

Tak. Channels to **kanał dwukierunkowy**. Możesz napisać własną wtyczkę, która przekaże webhooki do sesji, korzystając z dokumentu [Channels Reference](https://code.claude.com/docs/en/channels-reference). Claude będzie widzieć zdarzenia w czasie rzeczywistym i na nie odpowiadać.

**Czy Telegram ma jakieś ograniczenia w porównaniu z Discordem?**

Podstawowe możliwości są takie same. Discord wymaga włączenia Message Content Intent w ustawieniach bota. iMessage działa tylko na macOS i odczytuje bezpośrednio bazę danych `~/Library/Messages/chat.db`. Telegram jest uniwersalny.

**Co muszę zrobić, jeśli korzystam z planu Team?**

Administrator organizacji musi włączyć `channelsEnabled: true` w ustawieniach zarządzanych lub na stronie [admin-settings/claude-code](https://claude.ai/admin-settings/claude-code). Bez tego wtyczka się połączy, ale wiadomości nie będą przechodzić — w terminalu pojawi się ostrzeżenie podczas uruchamiania.

**Co Claude może zobaczyć z mojego telefonu — czy ma dostęp do samego czatu Telegram?**

Nie. Claude widzi **tylko wiadomość wysłaną do bota**. Historia rozmów Telegrama, lista czatów i kontakty są niedostępne. Wtyczka MCP odczytuje wyłącznie wiadomości skierowane do bota przez Telegram Bot API.

**Czy mogę korzystać z Claude przez Channels bez subskrypcji Pro/Max?**

Tak, obsługiwany jest też klucz API Anthropic Console; użycie API obciąża tę organizację Console. Bezpłatne claude.ai nie jest opisaną ścieżką subskrypcji. Team/Enterprise i zarządzane organizacje Console muszą spełnić ustawienia włączenia kanałów.

## Co dalej

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Najważniejsze punkty sekcji">

Najważniejsze punkty

Bot jest skonfigurowany, lista dozwolonych jest włączona, a sesja działa na VPS-ie. Następnie włącz Channels do codziennej pracy: podłącz webhooki z GitHub Actions i Sentry, połącz je z Routines dla regularnych zadań i skonfiguruj monitor stanu bota. Każdy krok zajmuje 15–30 minut i usuwa jedną lukę w monitorowaniu.

</div>

Gdy bot działa już niezawodnie, możesz zrobić jeszcze kilka rzeczy, aby w pełni wykorzystać Channels:

1.  **Podłącz webhooki z CI.** Jeśli korzystasz z GitHub Actions / GitLab CI, możesz skonfigurować wtyczkę Channels tak, aby przekazywała wyniki kompilacji bezpośrednio do sesji. Claude zobaczy „test nie przeszedł” zaraz po pushu i zaproponuje poprawkę. Zobacz dokumentację [channels-reference](https://code.claude.com/docs/en/channels-reference).
2.  **Połącz z Routines.** Możesz uruchamiać [Routines](https://ailoot.ai/blog/pl/claude-code-routines/) w tej samej sesji, aby wykonywać regularne zadania. Rano bot sam wyśle „dzień dobry, oto podsumowanie projektu”, a ty odpowiesz z telefonu: „przygotuj raport o przychodach”.
3.  **Skonfiguruj monitor bota.** Chcę wiedzieć, jeśli bot zamilknie. Niewielki skrypt cron na VPS-ie może pingować bota Telegram raz na godzinę. Jeśli bot nie odpowie, skrypt wyśle alert na osobny kanał. Bez tego bot może przestać działać o 4 rano, a ty dowiesz się o tym dopiero w południe.
4.  **Rozważ [hooks](https://ailoot.ai/blog/pl/claude-code-hooks/).** Hooks reagują na zdarzenia Claude (uruchomienie narzędzia, zakończenie wiadomości). Hooks i Channels razem umożliwiają automatyczne powiadomienia Telegram, takie jak „Claude ukończył zadanie N”.

Nie podłączaj Channels do wszystkiego. To wygodny sposób, by sprawdzić postęp zadania, gdy jesteś poza domem lub w kawiarni. Kiedy trzeba naprawdę pomyśleć, otwórz laptopa i usiądź. Channels uwalnia cię od myśli „muszę go jeszcze o to zapytać, trzeba otworzyć laptopa”, gdy jesteś poza domem lub w podróży.

<div class="section" role="doc-bibliography" aria-label="Źródła">

### Źródła

- [Push events into a running session with channels - Claude Code Docs](https://code.claude.com/docs/en/channels)
- [anthropics/claude-plugins-official on GitHub](https://github.com/anthropics/claude-plugins-official) - kod źródłowy wtyczek Telegram, Discord, iMessage i fakechat
- [Continue local sessions from any device with Remote Control - Claude Code Docs](https://code.claude.com/docs/en/remote-control)

</div>

Więcej materiałów na temat pracy z narzędziami znajdziesz w [dokumentacji Ailoot](https://ailoot.ai/docs/).



<div class="aside" data-semantic="ailoot-cta" role="note" aria-label="Ailoot Guides">

[Ailoot Guides](https://ailoot.ai/docs/)

</div>

<div class="aside" data-semantic="ailoot-cta" role="note" aria-label="Przejdź do Ailoot">

[Przejdź do Ailoot](https://ailoot.ai/)

</div>

## Pytania i odpowiedzi

### Dlaczego bot Telegram działa ręcznie, a nie jako usługa?

Porównaj użytkownika Unix, HOME, obszar roboczy, ścieżkę Claude, PATH Bun i środowisko uwierzytelniania usługi z udaną sesją interaktywną. Instaluj, konfiguruj i paruj jako ten sam użytkownik usługi; stan root jest inną konfiguracją.

### Czy klucz Console API może zastąpić logowanie Pro lub Max dla Channels?

Tak. Uwierzytelnianie kluczem API Anthropic Console jest obsługiwane i korzysta z rozliczeń API Console. Sprawdź wymagane ustawienia kanałów organizacji oraz zakończ konfigurację tokenu, parowanie i listę nadawców pod kontem uruchamiającym sesję.


## Ailoot · Firma i jej portfel projektów

Ailoot opiera się na zgromadzonym doświadczeniu operacyjnym, szerokiej bazie klientów, stabilnej usłudze i stałej kontroli KPI.

Firma i jej portfel projektów: miliony klientów; miesięczna sprzedaż liczona w miliardach.

Ailoot wykorzystuje to doświadczenie operacyjne, zapewniając dostęp przez API do funkcji AI w produktach klientów, agentach, aplikacjach i automatyzacjach.
