Agent AI z pełnym dostępem do Twojego repozytorium — brzmi jak przepis na katastrofę. Ale Claude Code od Anthropic ma system uprawnień, który daje Ci pełną kontrolę nad tym, co AI może robić. Żadna edycja pliku, żadna komenda nie wykona się bez Twojej świadomej zgody.
W tym artykule pokażę jak skonfigurować uprawnienia, by Claude Code był jednocześnie pomocny i bezpieczny.
- System uprawnień Claude Code
- Tryby uprawnień: od ostrożnego do autonomicznego
- Składnia reguł: allow, ask, deny
- Reguły dla komend Bash
- Reguły dla plików
- Praktyczna konfiguracja
System uprawnień Claude Code
Claude Code używa warstwowego systemu uprawnień, który balansuje między produktywnością a bezpieczeństwem.
| Typ narzędzia | Przykład | Wymaga zgody | Zapamiętanie zgody |
| Tylko odczyt | Czytanie plików, Grep | Nie | N/A |
| Komendy Bash | Uruchamianie skryptów | Tak | Na stałe per projekt i komenda |
| Modyfikacja plików | Edycja, zapis | Tak | Do końca sesji |
Zasada jest prosta: odczyt jest wolny, każda zmiana wymaga zgody. Gdy raz zatwierdzisz komendę npm test w danym projekcie, Claude Code już nie będzie pytał. Ale edycja plików wymaga zgody w każdej nowej sesji.
Możesz sprawdzić i zarządzać uprawnieniami komendą /permissions. Wyświetla wszystkie reguły i ich źródła.
Tryby uprawnień: od ostrożnego do autonomicznego
Claude Code wspiera kilka trybów określających poziom autonomii agenta.
| Tryb | Zachowanie | Użycie |
| default | Pyta przy pierwszym użyciu narzędzia | Standardowa praca |
| acceptEdits | Auto-akceptuje edycje plików w sesji | Szybkie kodowanie |
| plan | Tylko analiza, bez zmian i komend | Bezpieczny przegląd kodu |
| dontAsk | Auto-odmawia, chyba że pre-approved | Restrykcyjne środowisko |
| bypassPermissions | Pomija wszystkie pytania o zgodę | Tylko izolowane kontenery! |
Plan Mode jest szczególnie przydatny, gdy chcesz by Claude przeanalizował kod bez ryzyka wprowadzenia zmian. Agent może czytać pliki i odpowiadać na pytania, ale nie wykona żadnej komendy ani edycji.
Ostrzeżenie: Tryb bypassPermissions wyłącza wszystkie kontrole bezpieczeństwa. Używaj go wyłącznie w izolowanych środowiskach — kontenerach Docker lub maszynach wirtualnych. Administratorzy mogą zablokować ten tryb w ustawieniach zarządzanych.
Składnia reguł: allow, ask, deny
Reguły uprawnień dzielą się na trzy kategorie:
- Allow — Claude Code używa narzędzia bez pytania
- Ask — zawsze pyta przed użyciem
- Deny — blokuje użycie narzędzia
Kolejność ewaluacji: deny → ask → allow. Reguły deny zawsze wygrywają.
Reguły definiujesz w pliku settings.json:
{
"permissions": {
"allow": [
"Bash(npm run *)",
"Bash(git commit *)"
],
"deny": [
"Bash(git push *)"
]
}
}
W tym przykładzie Claude może uruchamiać npm run test, git commit -m "fix", ale nie może wykonać git push.
Reguły dla komend Bash
Reguły Bash wspierają wzorce z gwiazdką *. Pozycja gwiazdki ma znaczenie:
Bash(npm run build)— dokładnie ta komendaBash(npm run *)— komendy zaczynające się odnpm runBash(* --version)— komendy kończące się na--versionBash(git * main)— np.git checkout main,git merge main
Spacja przed gwiazdką wymusza granicę słowa. Bash(ls *) pasuje do ls -la, ale nie do lsof. Natomiast Bash(ls*) bez spacji pasuje do obu.
Bezpieczeństwo operatorów shell: Claude Code rozpoznaje operatory jak &&. Reguła Bash(safe-cmd *) nie pozwoli na wykonanie safe-cmd && dangerous-cmd — to by wymagało osobnej zgody.
Ograniczenia wzorców
Wzorce ograniczające argumenty są podatne na obejście. Na przykład Bash(curl http://github.com/ *) nie złapie:
- Opcji przed URL:
curl -X GET http://github.com/... - Innego protokołu:
curl https://github.com/... - Przekierowań:
curl -L http://bit.ly/xyz
Dla bardziej niezawodnej kontroli URL-i użyj reguł WebFetch(domain:example.com) zamiast ograniczania curl.
Reguły dla plików
Reguły Read i Edit używają składni zgodnej ze specyfikacją gitignore.
| Wzorzec | Znaczenie | Przykład |
| //path | Ścieżka absolutna od roota | Read(//Users/jan/secrets/**) |
| ~/path | Ścieżka od katalogu home | Read(~/Documents/*.pdf) |
| /path | Względem roota projektu | Edit(/src/**/*.ts) |
| path lub ./path | Względem bieżącego katalogu | Read(*.env) |
Ważne: * dopasowuje pliki w jednym katalogu, ** dopasowuje rekurencyjnie przez wszystkie podkatalogi.
Przykłady:
Edit(/docs/**)— edycje w<projekt>/docs/Read(~/.zshrc)— odczyt pliku konfiguracyjnego z homeEdit(//tmp/scratch.txt)— edycja konkretnego pliku systemowego
Praktyczna konfiguracja
Oto rekomendowane ustawienia dla typowych scenariuszy.
Dla zespołu developerskiego
{
"defaultMode": "default",
"permissions": {
"allow": [
"Bash(npm *)",
"Bash(pnpm *)",
"Bash(git status)",
"Bash(git diff *)",
"Bash(git log *)"
],
"deny": [
"Bash(rm -rf *)",
"Bash(git push --force *)",
"Bash(git reset --hard *)"
]
}
}
Dla przeglądu kodu (Plan Mode)
{
"defaultMode": "plan"
}
Claude analizuje kod, odpowiada na pytania, ale nic nie zmienia.
Dla CI/CD
{
"defaultMode": "dontAsk",
"permissions": {
"allow": [
"Read",
"Bash(npm run lint)",
"Bash(npm run test)"
]
}
}
Tylko jawnie dozwolone operacje, reszta automatycznie odrzucana.
Checklista bezpieczeństwa:
- ✅ Reguły deny mają pierwszeństwo — użyj ich dla niebezpiecznych komend
- ✅ Plan Mode do bezpiecznego przeglądu kodu
- ✅ Wzorce Bash z ostrożnością — sprawdź edge cases
- ✅ /permissions do audytu aktualnych reguł
- ✅ Ustawienia zarządzane do wymuszania standardów w zespole
Więcej o instalacji i pierwszych krokach znajdziesz w kompletnym poradniku konfiguracji Claude Code. A jeśli chcesz dowiedzieć się jak Claude Code chroni przed prompt injection, przeczytaj artykuł o bezpieczeństwie i prywatności danych w ChatGPT.
Bezpieczne wdrożenie agentów AI