Claude Code ciągle prosi o zgodę? Napraw to bez --dangerously-skip-permissions
Zatwierdzanie npm test po raz czterdziesty to zwykły szum. Claude Code ma wszystko, czego potrzebujesz, żeby wyciszyć nudne monity i zachować te niebezpieczne. Tyle że jest to rozrzucone po trzech plikach i sześciu trybach.
KRÓTKA ODPOWIEDŹ
Polecenia, które zawsze zatwierdzasz, dodaj do permissions.allow (na przykład Bash(npm run *)), te, które zawsze muszą się zatrzymać, do ask lub deny, i wybierz tryb uprawnień pasujący do zadania: acceptEdits do intensywnej edycji, auto do rutynowej pracy, plan do czytania. Reguły są sprawdzane w kolejności deny → ask → allow, więc deny nigdy nie da się nadpisać. Użyj /permissions, żeby zobaczyć, skąd pochodzi każda reguła. --dangerously-skip-permissions zostaw dla jednorazowych kontenerów.
Dlaczego Claude Code pyta tak często
W trybie domyślnym (w CLI oznaczonym jako Manual) Claude Code wyświetla monit przy pierwszym użyciu każdego narzędzia i pyta ponownie o każde polecenie powłoki, na które nie dostał zgody. Monit to moment, w którym możesz zatrzymać błędne rm albo przypadkowe git push, więc warto go zachować. Problem w tym, że pojawia się też przy setce nieszkodliwych rzeczy, które agent robi w trakcie sesji.
O tym, czy zobaczysz monit, decydują trzy rzeczy: reguły w plikach ustawień, tryb uprawnień, w którym pracujesz, oraz odpowiedzi udzielone wcześniej przez „Yes, and don’t ask again”. Pozbycie się szumu wymaga dostrojenia wszystkich trzech.
Claude Code v2.1.283 i nowsze uruchamia interaktywne sesje w terminalu i VS Code w trybie auto, w każdym planie i u każdego dostawcy. W trybie auto klasyfikator działający w tle sprawdza polecenia i żądania sieciowe pod kątem tego, o co prosiłeś, zamiast pytać o rutynowe czynności. Jeśli nadal widzisz monit przy wszystkim, sprawdź pasek stanu: „⏸ manual mode on” oznacza, że jesteś w trybie domyślnym.
Reguły allow, ask i deny
Reguły znajdują się pod kluczem permissions w pliku ustawień. Ten przykład pochodzi wprost z dokumentacji ustawień Anthropic:
allow: uruchamia się bez pytania.ask: zawsze pyta, nawet w trybach, które w innym przypadku by to zatwierdziły.deny: nigdy się nie uruchamia.
Najważniejsza jest kolejność: najpierw deny, potem ask, potem allow. Wygrywa pierwsze dopasowanie, a szczegółowość reguły nie zmienia kolejności. Reguła allow nie może zrobić wyjątku od reguły deny, a jeśli narzędzie jest zablokowane na którymkolwiek poziomie, żaden inny poziom nie może na nie zezwolić. Reguły egzekwuje sam Claude Code, nie model, więc wpisanie „nigdy nie pushuj” w CLAUDE.md nie działa tak samo jak reguła deny.
Jak napisać regułę
| Reguła | Co dopasowuje |
|---|---|
Bash(npm run *) | npm run build, npm run test --watch, ale nie npm install |
Bash(git log *) | Tylko git log …. Porównaj z Bash(git *), które zezwala na każde polecenie git. |
Bash(ls:*) | To samo co Bash(ls *): :* to inny zapis symbolu wieloznacznego na końcu |
Read(./.env) | Odczyt tego pliku. Reguły Read i Edit używają wzorców gitignore |
Edit(//Users/alice/notes/**) | Ścieżka bezwzględna. Pojedynczy / na początku jest względny wobec pliku ustawień, więc ścieżki bezwzględne wymagają // |
WebFetch(domain:example.com) | Tylko example.com. Dla subdomen dodaj WebFetch(domain:*.example.com) |
mcp__github__* | Każde narzędzie z serwera MCP github. Reguły z nawiasami po mcp__ są pomijane |
W systemie Windows reguły PowerShell mają tę samą postać co reguły Bash.
Którego pliku ustawień użyć
| Zakres | Plik | Do czego służy |
|---|---|---|
| Użytkownik | ~/.claude/settings.json (Windows: %USERPROFILE%\.claude\settings.json) | Twoje własne nawyki, w każdym projekcie |
| Projekt, współdzielony | .claude/settings.json | Reguły, które ma dostać cały zespół (zacommituj go) |
| Projekt, lokalny | .claude/settings.local.json | Twoje osobiste reguły dla jednego repozytorium (niecommitowany) |
| Zarządzany | managed-settings.json i inne zarządzane źródła | Polityka firmy; nic nie może jej nadpisać |
Pierwszeństwo, od najwyższego: zarządzany, wiersz poleceń, projekt lokalny, współdzielony projekt, użytkownik. Klucze list, takie jak permissions.allow, są między plikami łączone, a nie zastępowane. Dwa szczegóły często zaskakują:
- Pliki ustawień to ścisły JSON: komentarz
//albo przecinek na końcu to błąd składni i cały plik zostaje zignorowany. - Reguły allow we współdzielonym pliku projektu działają dopiero wtedy, gdy każdy członek zespołu zaufa folderowi. Reguły deny i ask działają od razu.
Większość zmian obowiązuje w bieżącej sesji bez restartu, w tym permissions i hooks. Żeby zobaczyć, co faktycznie zostało wczytane, uruchom /status (wiersz Setting sources) lub /permissions, które wyświetla każdą regułę i plik, z którego pochodzi.
Co naprawdę zapisuje „Yes, and don’t ask again”
Odpowiedź „don’t ask again” na monit zapisuje za ciebie regułę w .claude/settings.local.json w katalogu głównym repozytorium git. Jak długo obowiązuje, zależy od narzędzia:
| Narzędzie | Zapamiętane |
|---|---|
| Polecenia Bash | Na stałe, dla repozytorium i polecenia |
| Edycje plików | Do końca sesji |
| WebFetch | Na stałe, dla repozytorium i domeny |
Jeśli więc Claude w każdej nowej sesji pyta o edycję plików, to celowe działanie: zgody na edycję plików obowiązują w ramach sesji. Zamiast tego użyj trybu acceptEdits albo reguły allow Edit(...). A jeśli polecenie nadal pyta nawet po „don’t ask again”, poszukaj reguły ask w pliku projektu lub pliku zarządzanym. Reguła allow w twoim pliku lokalnym nie ma nad nią pierwszeństwa.
Tryby uprawnień i kiedy których używać
| Tryb | Co robi | Dobry do |
|---|---|---|
default (Manual) | Pyta przy pierwszym użyciu każdego narzędzia | Nieznane repozytoria, ryzykowna praca |
acceptEdits | Akceptuje edycje plików bez pytania | Długie refaktoryzacje, które przejrzysz w git |
plan | Czyta i planuje, niczego nie zmienia | Poznawanie bazy kodu, projektowanie zmiany |
auto | Brak rutynowych monitów; klasyfikator najpierw sprawdza polecenia i żądania sieciowe | Codzienna praca |
dontAsk | Nie pyta | Skrypty i automatyzacja |
bypassPermissions | Pomija monity, także przy zapisie do .git i .claude | Wyłącznie izolowane kontenery lub maszyny wirtualne |
Naciśnij Shift+Tab, żeby przełączać tryby. Z trybu auto pierwsze naciśnięcie przechodzi do default, potem default → acceptEdits → plan. Tryb startowy ustawisz w permissions.defaultMode; pamiętaj, że auto i bypassPermissions działają tylko z ustawień użytkownika lub zarządzanych, a nie z pliku projektu.
Niektóre rzeczy zawsze wywołują monit, w każdym trybie, łącznie z bypass: między innymi jawne reguły ask, pytania, które zadaje ci Claude, oraz rm na krytycznych ścieżkach. Administratorzy mogą wyłączyć ryzykowne tryby, ustawiając permissions.disableBypassPermissionsMode lub permissions.disableAutoMode na "disable".
O --dangerously-skip-permissions
--dangerously-skip-permissions to to samo co --permission-mode bypassPermissions. Dokumentacja Anthropic mówi wprost: używaj go tylko w izolowanych środowiskach, takich jak kontenery, maszyny wirtualne lub dev containers bez dostępu do internetu. Odmawia działania jako root w systemach Linux i macOS, a po zaakceptowaniu ostrzeżenia ustawia skipDangerousModePermissionPrompt w twoich ustawieniach użytkownika.
Jeśli tak naprawdę chcesz, żeby „przestał pytać o nudne rzeczy”, tryb auto z kilkoma regułami allow wystarczy, i to bez rezygnowania z monitów, które mają znaczenie.
Piaskownica: mniej monitów z siatką bezpieczeństwa
Claude Code może uruchamiać polecenia powłoki w piaskownicy. Domyślnie jest wyłączona; włączysz ją przez /sandbox lub sandbox.enabled: true. Jeden tryb piaskownicy automatycznie zatwierdza polecenia uruchamiane w piaskownicy, drugi nadal pyta. Piaskownica obejmuje tylko polecenia powłoki: narzędzia plikowe, serwery MCP i hooki działają poza nią.
Działa w systemach macOS, Linux i WSL2. W natywnym systemie Windows piaskownica nie działa i polecenia są uruchamiane bez niej. To kolejny powód, żeby utrzymywać tam krótką listę ask.
Konfiguracja, która działa
To rozsądny punkt wyjścia dla projektu JavaScript. Dostosuj polecenia do swojego stosu:
- Zacznij od listy allow z poleceniami tylko do odczytu i poleceniami testów.
- Wszystko, co opuszcza twój komputer (push, publish, deploy), umieść w
ask. - Całkowicie zablokuj dostęp do sekretów.
- Pracuj w trybie auto lub acceptEdits i przełączaj się na tryb plan, gdy coś badasz.
- Co kilka dni otwieraj
.claude/settings.local.jsoni usuwaj zbędne reguły dodane przez „don’t ask again”.
Gdy pozostałe monity pojawiają się w złym miejscu
Po dostrojeniu powinieneś dostawać pytania tylko o rzeczy, które wymagają decyzji. Pozostaje kwestia tego, gdzie pojawia się pytanie: w karcie terminala za przeglądarką, gdzie agent może czekać dwadzieścia minut, zanim to zauważysz.
Pet Island przenosi te pytania na małą wyspę u góry ekranu. Gdy Claude Code potrzebuje zgody, prośba pojawia się tam razem z poleceniem lub diffem, a ty zezwalasz, odmawiasz albo zezwalasz na stałe bez przełączania okien. Pytania i plany Claude Code też działają z wyspy, a gdy wyspa jest zamknięta, Claude Code po prostu wraca do pytania w terminalu.
CZĘSTE PYTANIA
Jak sprawić, żeby Claude Code nie prosił o zgodę na każde polecenie?
Dodaj zaufane polecenia do permissions.allow w ~/.claude/settings.json, na przykład "Bash(npm run *)", i używaj trybu auto lub acceptEdits. Ryzykowne polecenia zostaw w permissions.ask, żeby nadal się zatrzymywały.
Dlaczego Claude Code znowu pyta o edycję plików, mimo że wybrałem don’t ask again?
Zgody na edycję plików obowiązują tylko do końca sesji. Użyj trybu acceptEdits lub reguły allow Edit(...), jeśli chcesz, żeby edycje były zatwierdzone między sesjami.
Czy reguła allow może nadpisać regułę deny?
Nie. Reguły są sprawdzane w kolejności deny, ask, allow, a wygrywa pierwsze dopasowanie. Narzędzia zablokowanego na dowolnym poziomie nie da się dopuścić gdzie indziej.
Czy --dangerously-skip-permissions jest bezpieczne?
Anthropic zaleca je tylko w izolowanych środowiskach, takich jak kontenery lub maszyny wirtualne bez dostępu do internetu. Pomija ono też monity przy zapisie do .git i .claude.
Gdzie „Yes, and don’t ask again” zapisuje regułę?
W .claude/settings.local.json w katalogu głównym repozytorium git.
Czy piaskownica Claude Code działa w systemie Windows?
Nie w natywnym systemie Windows; tam polecenia są uruchamiane bez piaskownicy. Działa w systemach macOS, Linux i WSL2.
Źródła
Każde ustawienie i zachowanie opisane na tej stronie zostało sprawdzone z tymi stronami 26 października 2026. Agenci szybko się zmieniają; jeśli coś przestało się zgadzać, obowiązuje strona oficjalna.
- Dokumentacja Claude Code: Configure permissions
- Dokumentacja Claude Code: Permission modes
- Dokumentacja Claude Code: Settings
- Dokumentacja Claude Code: Settings reference
- Dokumentacja Claude Code: Sandboxing