Przejdź do treści
Mody w Claude Code: co potrafią, jak je zainstalować i czy im ufać
··11 min czytania

Mody w Claude Code: co potrafią, jak je zainstalować i czy im ufać

Mod to wtyczka Claude Code, która działa wewnątrz programu, a nie obok niego. Dzięki temu robi rzeczy niedostępne dla skilli, serwerów MCP i hooków z pliku ustawień: rysuje własny panel, podmienia fragmenty interfejsu, wstrzymuje wywołanie narzędzia i pyta Cię o zgodę. Kosztem jest bezpieczeństwo. Mod działa z Twoimi uprawnieniami i nie jest odizolowany od systemu.

Ten wpis porządkuje to, co dokumentacja Claude Code mówi o modach: co potrafią, jak je zdobyć, gdzie działają, komu można ufać i jak zespół może je kontrolować. Wszystko poniżej to stan dokumentacji na 14 października 2026. Mody są nowe, a dokumentacja sama przyznaje, że zdarzenia i metody mogą się zmieniać między wydaniami, więc przy szczegółach sprawdzaj ją jeszcze raz.

Jeśli wolisz zacząć od działającego przykładu, zbudowałem panel pokazujący pracę subagentów i ten wpis jest jego uzupełnieniem.


Co mod potrafi, a inne rozszerzenia nie

Skille, serwery MCP i hooki z ustawień działają z zewnątrz: uruchamiają skrypt albo dają Claude’owi tekst lub narzędzia. Mod jest funkcją JavaScript lub TypeScript, którą Claude Code woła we własnym procesie, gdy zajdzie zdarzenie. Dokumentacja wymienia pięć rzeczy, które to umożliwia:

  • Narysować interfejs, w którym da się klikać. Panel obok rozmowy albo pasek nad polem wpisywania, z zakładkami, przyciskami i polami tekstowymi.
  • Przerysować to, co Claude Code rysuje sam. Wiersz wywołania narzędzia, spinner czy okno, w którym Claude zadaje Ci pytanie. Jedyny wyjątek to monit o uprawnienia: tego mod zmienić nie może.
  • Wejść w wywołanie narzędzia lub zapytanie. Wstrzymać komendę i zapytać Cię, odpowiedzieć za narzędzie bez jego uruchamiania albo wysłać jedno zapytanie do innego modelu.
  • Dodać komendę /coś, która uruchamia Twoją funkcję od razu, bez tury Claude’a, nawet gdy Claude akurat pracuje.
  • Współdzielić dane między hookami. Hooki jednego modu widzą te same zmienne, więc jeden może liczyć wywołania narzędzi, a drugi pokazywać wynik obok spinnera.

Zdarzenie, na które reaguje mod, może obsłużyć na trzy sposoby: obserwować (zapisać, co się stało, i puścić dalej), przepisać (zmienić zdarzenie, na przykład obciąć prompt) albo odpowiedzieć samemu (na przykład odmówić wykonania komendy). Szczegóły i kod każdego z trzech sposobów są w wpisie o Agent Radar.

Mod, hook z ustawień, skill czy MCP

Te cztery rzeczy zachodzą na siebie, więc zanim napiszesz mod, sprawdź, czy prostsze narzędzie nie wystarczy:

Mod Hook z ustawień Skill Serwer MCP
Czym jest funkcje we wtyczce, wołane w procesie Claude Code polecenie, żądanie HTTP lub prompt uruchamiane na zdarzenie plik SKILL.md z instrukcjami zewnętrzny proces lub usługa z narzędziami dla Claude’a
Co może zmienić wywołania narzędzi, prompty, komendy, tury, wygląd interfejsu czy wywołanie lub prompt przejdzie, argumenty i wynik narzędzia, kontekst dla Claude’a co Claude wie i robi jakie narzędzia ma Claude
Rysuje w interfejsie tak nie nie nie
Co piszesz JavaScript lub TypeScript skrypt i wpis w settings.json Markdown serwer w dowolnym języku
Wybierz, gdy chcesz panel, pasek nad promptem, własną komendę albo przepisać zdarzenie chcesz zablokować, zezwolić lub zapisać zdarzenie skryptem, który już masz wklejasz w kółko te same instrukcje Claude ma sięgnąć do zewnętrznego systemu

Jedna wtyczka może zawierać wszystko naraz, więc mod może jechać w jednej paczce ze skillem i serwerem MCP. Skille opisałem w tekście o Agent Skills.

Trzy sposoby, żeby mieć mod

Mody wymagają Claude Code w wersji 2.1.287 lub nowszej (w aplikacji Desktop od 2.1.286) i są domyślnie włączone. Wersję sprawdzisz poleceniem claude --version.

1. Zainstalować gotowy

Mod instaluje się jak każdą wtyczkę, z marketplace’u. Podajesz nazwę wtyczki, znak @ i nazwę marketplace’u:

Terminal window
claude plugin install token-chart@your-org

W sesji ten sam efekt daje /plugin install token-chart@your-org. Jeśli instalujesz lub aktualizujesz mod z powłoki przy otwartej sesji, wpisz w niej /reload-plugins, bo inaczej mod załaduje się dopiero przy następnym uruchomieniu.

2. Poprosić Claude’a, żeby go napisał

Opisz w zwykłej sesji, czego chcesz, na przykład „zrób mod, który pokazuje aktualną gałąź git nad promptem”. Claude korzysta wtedy z wbudowanego skilla plugin-authoring i zapisuje mod w katalogu ~/.claude/dev-mods/ pod identyfikatorem sesji. Przy pierwszym zapisanym pliku Claude Code pyta, czy włączyć przeładowanie na żywo dla tej sesji. Po zgodzie mod ładuje się po zakończeniu tury i przeładowuje po każdej kolejnej zmianie.

Dwie rzeczy warto wiedzieć z góry:

  • Taki mod działa tylko w sesji, która go napisała, a jej katalog jest czyszczony po czasie ustawionym w cleanupPeriodDays. Żeby go zachować, skopiuj katalog gdzieś do siebie i ładuj flagą --plugin-dir.
  • Mod napisany przez Claude’a nie załaduje się, gdy nikt nie może go zatwierdzić (claude -p, tryb dontAsk), gdy katalog nie jest zaufany albo gdy mody są wyłączone.

3. Napisać samemu

Najmniejszy mod to trzy pliki: manifest plugin.json, plik hooks/hooks.json z kluczem modules, który wskazuje kod, oraz sam kod z funkcją register. Nie potrzebujesz Node.js, bundlera ani kroku budowania. Claude Code ładuje pliki .js i .ts bezpośrednio, a podczas pracy z --plugin-dir przeładowuje je po każdym zapisie. Pełny, sprawdzony testem przykład jest w Agent Radar.

Dwa narzędzia, które oszczędzają czas:

  • claude plugin validate ./katalog sprawdza manifest i wypisuje, jakich zdarzeń mod słucha i jakich metod API używa. Łapie literówki w nazwach zdarzeń.
  • claude plugin test uruchamia testy z pominięciem sesji, logowania i sieci. Test wysyła zdarzenia do modu i sprawdza, co mod zrobił lub narysował.

W interaktywnej sesji Claude Code zapisuje obok modu pliki z typami TypeScript dla Twojej wersji. Dokumentacja radzi ufać im bardziej niż własnym stronom, gdy się rozchodzą.

Gotowe przykłady od Anthropic

W repozytorium claude-code-playground są trzy kompletne mody, udostępnione bez wsparcia:

  • token-weather rysuje nad promptem prognozę zapełnienia okna kontekstu.
  • blast-radius wstrzymuje ryzykowną komendę powłoki, taką jak rm -rf czy wymuszony push, pokazuje, co by zmieniła, i daje przyciski „kontynuuj” i „anuluj”.
  • replay-theater dodaje komendę /replay, która krok po kroku odtwarza edycje plików z ostatniej tury.

Żeby wypróbować jeden z nich, sklonuj repozytorium i uruchom claude --plugin-dir ./token-weather w katalogu claude-code/mods. Przed uruchomieniem możesz zrobić claude plugin validate na katalogu modu i zobaczyć, po co sięga.

Mody wbudowane w Claude Code

Część funkcji Claude Code to mody. Zobaczysz je w /plugin, w zakładce Installed, w sekcji Built-in. Nie można ich zaktualizować ani odinstalować, ale większość da się wyłączyć.

Nazwa w /plugin Co robi
cc-plugin-agents-md wczytuje AGENTS.md jako instrukcje projektu
cc-plugin-diff przejmuje /diff i rysuje jego panel
cc-plugin-plugin-authoring daje Claude’owi skill do pisania modów
cc-plugin-sec-default chroni to, czym zarządza organizacja, przed modami użytkowników; nie da się go wyłączyć
cc-plugin-telemetry wysyła rekordy analityczne Claude Code
cc-plugin-you-should-know uruchamia agenta pomocniczego, który przy dłuższych zadaniach pokazuje notatki nad promptem; domyślnie wyłączony

Jeśli czytałeś mój tekst o AGENTS.md i CLAUDE.md, to właśnie ten mod odpowiada za wczytywanie AGENTS.md. Kod diff, agents-md, sec-default i telemetry jest publiczny w katalogu mods repozytorium Claude Code, więc to dobre źródło wzorców, gdy piszesz własny.

Gdzie mody działają

Hooki modu działają w każdej sesji, która ładuje wtyczkę. Rysowanie jest węższe: panele i paski widać tylko w terminalu i w aplikacji Desktop.

Gdzie uruchamiasz Claude Code Hooki działają Rysunek modu widać
claude w terminalu, także w terminalu edytora i we wtyczce JetBrains tak tak
Zakładka Code w Desktopie (poza sesją WSL) tak tak, z wyjątkiem elementów tylko dla terminala
Sesja WSL w Desktopie nie, bo wtyczki nie działają w WSL nie
Panel czatu w rozszerzeniu VS Code tak nie
claude -p i Agent SDK tak nie
Remote Control z claude.ai lub aplikacji mobilnej tak, w sesji na Twoim komputerze w terminalu na Twoim komputerze
Sesja w chmurze tak, dla wtyczki, która trafia do sesji w chmurze nie

Mod, który rysuje, powinien sprawdzać, w jakiej aplikacji działa, i tam, gdzie nic się nie rysuje, wypisać wynik jako linię w rozmowie albo odpowiedź komendy.

Czy mod jest bezpieczny

Mod to kod, który działa z Twoimi uprawnieniami, i nie jest w piaskownicy. Po załadowaniu może:

  • czytać i zapisywać pliki wszędzie tam, gdzie dostęp ma Twoje konto, uruchamiać programy i łączyć się z siecią,
  • czytać zmienne środowiskowe i pliki ustawień, w tym klucze API,
  • widzieć każdy Twój prompt i każde wywołanie narzędzia przez Claude’a,
  • przepisać prompt lub wywołanie, wysłać prompt tak, jakbyś go wpisał, albo wysłać wiadomość do innej Twojej sesji,
  • zatwierdzić wywołanie narzędzia, zanim zostaniesz zapytany,
  • wywoływać model na Twoim planie lub kluczu API.

Jeśli włączysz piaskownicę, izoluje ona polecenia powłoki uruchamiane przez Claude’a, ale proces, który wystartuje mod, działa poza nią. Dlatego instaluj mody tylko od autorów i z marketplace’ów, którym ufasz.

Sprawdź mod, zanim go uruchomisz

Pobierz pliki wtyczki, na przykład klonując repozytorium, i uruchom:

Terminal window
claude plugin validate ./some-mod

Polecenie nie uruchamia kodu. W wyniku linie hooks: i calls: pokazują, jakie zdarzenia mod obsługuje i po jakie metody API sięga. Dokumentacja radzi szukać w calls: szczególnie tych metod:

Wywołanie Co oznacza
$.fs.read, $.fs.write czyta lub zapisuje pliki wszędzie, gdzie ma dostęp użytkownik
$.process.run, $.process.spawn uruchamia programy jako Ty
$.http.fetch wysyła żądania sieciowe
$.env.get, $.settings.read czyta zmienne środowiskowe i ustawienia, które mogą zawierać klucze API
$.env.set ustawia zmienną środowiskową dla Claude Code i wszystkich programów, które potem uruchomi
$.model.complete zużywa Twój plan lub klucz API
$.prompt.submit wysyła prompt, także jako Twój własny
$.session.send wysyła wiadomość, którą przeczyta inna sesja, subagent lub członek zespołu

W linii hooks: zwróć uwagę na tool.call i prompt.submit, bo mod widzi wtedy każde wywołanie narzędzia i każdy prompt i może je zmienić, oraz na tool.check, bo mod może zatwierdzić lub odrzucić wywołanie, zanim pojawi się monit o uprawnienia.

Jak mody wyłączyć

  • Jeden mod: wyłącz lub odinstaluj jego wtyczkę w zakładce Installed w /plugin.
  • Wszystkie zainstalowane mody na jedną sesję: uruchom Claude Code z flagą --safe-mode. Wyłącza ona też inne Twoje dostosowania.
  • Wszystkie zainstalowane mody na stałe: ustaw "disableAllHooks": true w ~/.claude/settings.json. Zatrzymuje to także hooki z ustawień i własny pasek statusu.

Żadne z tych ustawień nie wyłącza modów wbudowanych w Claude Code.

Jak zespół może kontrolować mody

Administratorzy robią to przez ustawienia zarządzane (managed settings). Domyślnie mody są włączone, a Claude Code ładuje przed modami użytkownika wbudowanego strażnika sec-default. Strażnik działa, gdy na komputerze są ustawienia zarządzane albo użytkownik jest zalogowany na planie Team lub Enterprise. Chroni on to, co organizacja zarządza: hooki z ustawień zarządzanych, prompt systemowy, zarządzane instrukcje i zarządzane serwery MCP. Poza tym mod użytkownika może nadal robić prawie wszystko, co potrafi, z jednym wyjątkiem: reguła odmowy (deny) ma pierwszeństwo przed zatwierdzeniem wywołania przez taki mod.

Przy sztywniejszych zasadach masz kilka poziomów:

Cel Ustawienie
żaden zainstalowany mod nie działa, hooki z ustawień zostają opcja allowManagedModsOnly strażnika sec-default
żadnych modów i żadnych hooków, także zarządzanych disableAllHooks: true w ustawieniach zarządzanych
tylko mody organizacji allowManagedModsOnly i własne mody ładowane z katalogu na dysku, wskazanego w ustawieniach zarządzanych
dowolny mod z zatwierdzonych marketplace’ów ograniczenia marketplace’ów i disableSideloadFlags: true
dowolny mod, ale z własnym modem kontrolującym inne własny mod na liście prependPlugins

Własny mod kontrolujący inne reaguje na zdarzenie plugin.register, które dostaje listę zdarzeń i wywołań API ładowanego modu, i może go odmówić. Dokumentacja pokazuje przykład, który odrzuca każdy mod użytkownika wołający $.process.run lub $.process.spawn, i prowadzi dziennik audytu. Jest tu pułapka: jeśli taki hook rzuci wyjątek albo przekroczy limit czasu, Claude Code go pomija, więc kontrola przestaje działać i mod się ładuje. Żeby kontrola odmawiała w razie awarii, dopisz do hooka obsługę błędu .catch, która zwraca odmowę.

Dwa zastrzeżenia z dokumentacji administracyjnej, które łatwo przeoczyć. Po pierwsze, reguły odmowy (deny) i hooki z ustawień zarządzanych dotyczą wywołań narzędzi przez Claude’a, ale nie wywołań $.fs i $.process wykonywanych przez sam mod: przy zablokowanym odczycie .env mod nadal może ten plik przeczytać. Po drugie, sesja może działać bez modu organizacji, jeśli użytkownik uruchomi --safe-mode albo proces obsługujący mody padnie trzy razy. Mody nie zastępują więc kontroli, które już masz.

Od czego zacząć

  1. Sprawdź wersję (claude --version, potrzebna 2.1.287 lub nowsza) i wpisz /plugin, żeby zobaczyć, które mody już działają.
  2. Pobierz token-weather z repozytorium Anthropic i uruchom go z --plugin-dir. Zobaczysz mod w akcji, zanim cokolwiek napiszesz.
  3. Zrób claude plugin validate na jego katalogu i przeczytaj linie hooks: i calls:. To najszybszy sposób, żeby oswoić się z tym, jak wygląda zakres uprawnień modu.
  4. Zbuduj własny mod według wpisu o Agent Radar: panel z drzewem subagentów, ich zadaniami, narzędziami i odpowiedziami, razem z testem.

Źródła

Nowe materiały prosto na maila

Publikuję nowy artykuł albo lekcję kursu — dostajesz jednego maila. Nic poza tym.

Bez cyklu wydawniczego i newsów o każdej premierze modelu

Zapisy do newslettera otwieram partiami, żeby nie zamieniać go w kolejny kanał ze spamem i recyklingiem linków.

Jeśli chcesz dostać informację przy następnym otwarciu zapisów, napisz na [email protected].

UdostępnijX / TwitterLinkedIn
Marcin Szymański

O autorze

Marcin Szymański

Od kilkunastu lat buduję systemy w .NET i Azure — obecnie rozproszony monitoring PingView. Piszę tu o pracy człowiek + agenci AI na realnych workflow, nie na demach. Zawodowo prowadzę audyty, rescue projektów i wdrożenia AI-assisted delivery w zespołach.