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.

Autor: Aslan, zespół Pet Island · Zaktualizowano 26 paź 2026 · 5 min czytania

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:

~/.claude/settings.jsonKopiuj
{
"permissions": {
"allow": ["Bash(npm run *)"],
"ask": ["Bash(git push *)"],
"deny": ["Read(./.env)"],
"defaultMode": "acceptEdits"
}
}
  • 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łaCo 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ć

ZakresPlikDo 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.jsonReguły, które ma dostać cały zespół (zacommituj go)
Projekt, lokalny.claude/settings.local.jsonTwoje osobiste reguły dla jednego repozytorium (niecommitowany)
Zarządzanymanaged-settings.json i inne zarządzane źródłaPolityka 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ędzieZapamiętane
Polecenia BashNa stałe, dla repozytorium i polecenia
Edycje plikówDo końca sesji
WebFetchNa 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ć

TrybCo robiDobry do
default (Manual)Pyta przy pierwszym użyciu każdego narzędziaNieznane repozytoria, ryzykowna praca
acceptEditsAkceptuje edycje plików bez pytaniaDługie refaktoryzacje, które przejrzysz w git
planCzyta i planuje, niczego nie zmieniaPoznawanie bazy kodu, projektowanie zmiany
autoBrak rutynowych monitów; klasyfikator najpierw sprawdza polecenia i żądania siecioweCodzienna praca
dontAskNie pytaSkrypty i automatyzacja
bypassPermissionsPomija monity, także przy zapisie do .git i .claudeWyłą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:

~/.claude/settings.jsonKopiuj
{
"permissions": {
"allow": [
"Bash(npm run *)",
"Bash(npx tsc *)",
"Bash(git status)",
"Bash(git diff *)",
"Bash(git log *)"
],
"ask": [
"Bash(git push *)",
"Bash(npm publish *)"
],
"deny": [
"Read(./.env)",
"Read(./.env.*)"
]
}
}
  1. Zacznij od listy allow z poleceniami tylko do odczytu i poleceniami testów.
  2. Wszystko, co opuszcza twój komputer (push, publish, deploy), umieść w ask.
  3. Całkowicie zablokuj dostęp do sekretów.
  4. Pracuj w trybie auto lub acceptEdits i przełączaj się na tryb plan, gdy coś badasz.
  5. Co kilka dni otwieraj .claude/settings.local.json i 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.

CZYTAJ DALEJ

Odpowiadaj każdemu agentowi z górnej części ekranu.

Windows i Mac · 7 dni za darmo, potem jednorazowo 8,99 USD · 1 USD z każdej sprzedaży idzie na karmę dla bezdomnych zwierząt

Wypróbuj Pet Island za darmo