Blog JSystems - uwalniamy wiedzę!

Szukaj

Claude Code

Claude Code wykonał komendę, której nie chciałem - jak temu zapobiec

W skrócie

  • Claude Code wykonał polecenie, którego nie chciałeś - na przykład wypchnął zmiany albo usunął pliki - i szukasz sposobu, żeby to się nie powtórzyło.
  • Najczęściej dzieje się tak, bo działałeś w zbyt otwartym trybie uprawnień albo brakowało reguły, która by taką operację zablokowała.
  • Rozwiązanie to reguły deny na to, co niebezpieczne, reguły ask na to, co ma zawsze pytać, i świadomy wybór trybu uprawnień.

Nie ma nic gorszego niż zobaczyć, że asystent zrobił coś, na co nie było zgody - skasował plik, wysłał commit albo uruchomił polecenie zmieniające stan projektu. Dobra wiadomość jest taka, że w Claude Code masz twarde mechanizmy, żeby to ograniczyć raz na zawsze. Pokażemy Ci, jak je ustawić, zamiast liczyć na to, że "następnym razem będzie ostrożniej".

Jak to wygląda w praktyce

Zwykle wygląda to tak: prosisz Claude o jedną rzecz, a on po drodze robi coś więcej - na przykład wykonuje git push, kasuje pliki poleceniem rm albo odpala polecenie, które zmienia konfigurację. Bywa, że po prostu zatwierdziłeś zgodę zbyt szybko, a bywa, że sesja działała w trybie, który takich rzeczy nie pytał. Warto zapamiętać jedną rzecz: instrukcje w Twoim prompcie albo w pliku CLAUDE.md kształtują to, co Claude próbuje zrobić, ale nie decydują o tym, na co Claude Code pozwala. O tym decydują reguły uprawnień, które egzekwuje samo narzędzie, a nie model.

Dlaczego Claude Code tak działa

Claude Code z założenia ma być pomocny i doprowadzać zadania do końca, dlatego w wygodniejszych trybach część akcji wykonuje bez pytania. To, czego się spodziewać, zależy od trybu uprawnień oraz od reguł, które sam ustawiłeś. Reguły dzielą się na trzy listy: allow (wolno bez pytania), ask (zawsze pytaj) i deny (nigdy). Obowiązuje wśród nich jasna hierarchia: deny bije ask, a ask bije allow. Szeroka reguła deny w rodzaju Bash(git push *) blokuje każde pasujące wywołanie, nawet jeśli inna, węższa reguła allow też by pasowała - allow nie potrafi wyrwać wyjątku z deny. Jeśli więc coś się wykonało bez Twojej zgody, to najczęściej znaczy, że nie miałeś reguły, która by to zatrzymała, albo tryb był zbyt otwarty.

Jak to rozwiązać krok po kroku

  1. Zablokuj to, co naprawdę groźne, regułą deny. Otwórz edytor uprawnień poleceniem /permissions albo dopisz reguły do settings.json - na przykład Bash(git push *) na blokadę wypychania i wzorzec na kasowanie plików tam, gdzie go nie chcesz.
  2. To, co ma zawsze wymagać Twojej decyzji, przenieś na listę ask. Reguła ask zapyta nawet w trybie automatycznym, więc dobrze nadaje się na operacje "zawsze się upewnij".
  3. Dobierz tryb uprawnień do sytuacji. Do ostrożnej pracy zostań w trybie ręcznym, do samej eksploracji użyj trybu planowania (claude --permission-mode plan), który nie wprowadza zmian, dopóki nie zatwierdzisz planu.
  4. Nie używaj na co dzień --dangerously-skip-permissions ani trybu bypassPermissions - tam znika większość pytań i najłatwiej o niechcianą akcję.
  5. Zatwierdzając zgody, czytaj, co dokładnie zatwierdzasz. Opcja "Yes, and don't ask again" zapamiętuje regułę na przyszłość - używaj jej tylko dla poleceń, które faktycznie chcesz mieć wolne.
  6. Jeśli już się sparzyłeś, ustaw deny od razu po fakcie, żeby dokładnie ta operacja nie mogła się powtórzyć w kolejnych sesjach.

Jak sprawdzić, że zadziałało

Po ustawieniu reguł otwórz /permissions - dialog wypisuje wszystkie reguły oraz plik, z którego każda pochodzi, więc od razu widać, że Twoje deny i ask są na miejscu. Następnie zrób test na sucho: poproś Claude o operację, którą zablokowałeś, i sprawdź, że zostaje zatrzymana, a nie wykonana. Dla reguły ask upewnij się, że pojawia się pytanie o zgodę nawet wtedy, gdy pracujesz w wygodniejszym trybie. Jeśli blokada i pytanie działają zgodnie z oczekiwaniem, masz pewność, że przypadkowa komenda już się nie prześlizgnie.

Wróć do listy: 100 najczęstszych problemów z Claude Code

Szkolenie Claude Code - od zera do zespołu agentów AI, prowadzi Łukasz Matuszewski (JSystems)

Szkolenie Claude Code - od zera do zespołu agentów AI -->

Szkolenie Claude Code - od zera do zespołu agentów AI

Tryb planowania, tryby uprawnień, komendy, MCP, hooki i systemy multi-agent - wszystko na żywym kodzie podczas trzydniowego szkolenia. Prowadzi Łukasz Matuszewski. Szkolenie ma terminy gwarantowane - odbędzie się niezależnie od liczby zgłoszeń.

Sprawdź szkolenie Claude Code

To szkolenie może być dofinansowane dla Ciebie z KFS lub BUR.

★★★★★Średnia ocena naszych szkoleń w Google: 5/5

Najczęściej zadawane pytania

Jak zablokować Claude Code przed konkretnym poleceniem?
Dodaj regułę deny na to polecenie, otwierając edytor uprawnień poleceniem /permissions albo dopisując regułę do settings.json. Na przykład Bash(git push *) blokuje wypychanie zmian. Reguła deny działa w każdym trybie i nie da się jej obejść regułą allow ani wygodniejszym trybem.
Czym różnią się listy allow, ask i deny?
Lista allow pozwala wykonać akcję bez pytania, lista ask wymusza pytanie za każdym razem, a lista deny blokuje akcję całkowicie. Obowiązuje hierarchia: deny bije ask, a ask bije allow. Dzięki temu blokada i wymuszone pytanie zawsze mają pierwszeństwo przed pozwoleniem.
Czy instrukcje w prompcie lub CLAUDE.md ograniczają, co Claude może zrobić?
Nie w sensie egzekwowanym. Instrukcje w prompcie albo w pliku CLAUDE.md kształtują to, co Claude próbuje zrobić, ale nie decydują o tym, na co Claude Code pozwala. O tym rozstrzygają reguły uprawnień, które egzekwuje samo narzędzie, a nie model, więc to je trzeba ustawić.
Który tryb wybrać, żeby Claude nic nie zmieniał bez zgody?
Do samej analizy użyj trybu planowania, uruchamiając claude z flagą --permission-mode plan. W tym trybie Claude bada projekt i proponuje zmiany, ale nie wprowadza ich, dopóki nie zatwierdzisz planu. Do ostrożnej pracy z zatwierdzaniem po kolei zostań w trybie ręcznym.

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...