
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:
claude plugin install token-chart@your-orgW 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, trybdontAsk), 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 ./katalogsprawdza manifest i wypisuje, jakich zdarzeń mod słucha i jakich metod API używa. Łapie literówki w nazwach zdarzeń.claude plugin testuruchamia 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-weatherrysuje nad promptem prognozę zapełnienia okna kontekstu.blast-radiuswstrzymuje ryzykowną komendę powłoki, taką jakrm -rfczy wymuszony push, pokazuje, co by zmieniła, i daje przyciski „kontynuuj” i „anuluj”.replay-theaterdodaje 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:
claude plugin validate ./some-modPolecenie 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": truew~/.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ąć
- Sprawdź wersję (
claude --version, potrzebna 2.1.287 lub nowsza) i wpisz/plugin, żeby zobaczyć, które mody już działają. - Pobierz
token-weatherz repozytorium Anthropic i uruchom go z--plugin-dir. Zobaczysz mod w akcji, zanim cokolwiek napiszesz. - Zrób
claude plugin validatena jego katalogu i przeczytaj liniehooks:icalls:. To najszybszy sposób, żeby oswoić się z tym, jak wygląda zakres uprawnień modu. - 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
- Mods overview, Create a mod, React to events, Draw in the interface, Use the mods API, Test a mod, Mods reference i Manage mods for your organization w dokumentacji Claude Code (stan na 14 października 2026).
- Przykładowe mody Anthropic i kod wbudowanych modów.
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].

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.