--dangerously-skip-permissions vypne v Claude Code dotazy na oprávnění pro celou session. Je to totéž co --permission-mode bypassPermissions a dokumentace Anthropicu doporučuje používat ho jen v kontejnerech nebo VM, kde Claude Code nemůže nic poškodit. Bereme to doslova: na notebooku vývojáře pracuje agent pod pravidly allow, ask a deny a pod hooky, plný bypass běží jen v izolovaném stroji s vlastními účty.
Krátká odpověď pro CTO: přepínač nezakazujte, rozhodněte, kde je povolený. Pravidla na notebook, hooky na to, co pravidla nevidí, izolace na všechno, co běží bez dozoru.
Co --dangerously-skip-permissions doopravdy vypne?
Claude Code má šest režimů oprávnění. Přepínač vybere poslední z nich:
Režim
Co běží bez ptaní
Kde ho používáme
default
Jen čtení
Kontroly jen pro čtení v naší agentní smyčce
acceptEdits
Čtení, úpravy souborů, základní souborové příkazy
Interaktivní práce, na kterou se díváte
plan
Čtení, pak plán, který schválíte
Průzkum před změnou
auto
Všechno, akce kontroluje klasifikátor
V produkci zatím ne
dontAsk
Jen předem povolené nástroje, zbytek se zamítne
Uzamčené CI a skripty
bypassPermissions
Všechno
Jen izolované stroje
„Všechno“ má výjimky a ty jsou podstatné. Podle dokumentace k režimům žádný režim automaticky neschválí nástroje, na které sedí explicitní pravidlo ask, rozpoznané mazání kritických cest přes rm ani nástroje, které potřebují člověka, třeba AskUserQuestion. Hooky běží dál. Bypass ale odstraní dotaz před zápisem do chráněných cest jako .git a .claude, který si všechny ostatní režimy nechávají.
Bypass tedy neznamená „žádná pravidla“. Znamená „žádný člověk ve smyčce“. Otázka je, jestli ve smyčce zůstalo něco jiného.
Tvar seznamů je sám o sobě pravidlo. Allow pro to, co agent potřebuje ke kontrole vlastní práce. Ask pro všechno, co opouští stroj: push, merge, deploy. Deny pro tajné klíče, přepisování historie a přímý přístup do databáze.
Claude Code vyhodnocuje nejdřív deny, pak ask, nakonec allow, a vyhrává první shoda. Užší allow deny nikdy neotevře. Platí to i napříč soubory: deny v repozitáři přebije allow v osobním nastavení. Proto týmová pravidla patří do .claude/settings.json v repozitáři a osobní zrychlení do ~/.claude/settings.json.
Permission rules are enforced by Claude Code, not by the model. Instructions in your prompt or CLAUDE.md shape what Claude tries to do, but they don't change what Claude Code allows.
Kvůli téhle větě stojí za to přesunout každé „nikdy nedělej X“ z CLAUDE.md do pravidla nebo hooku.
Co pravidlo oprávnění nevidí?
Pravidlo porovnává text příkazu. Tři věci mu proklouznou:
Do které větve.Bash(git push:*) nerozliší git push origin feat/x od git push origin main. Když se ptá při každém pushi, lidé začnou klikat ano bez čtení.
Nepřímý přístup. Dokumentace to říká na rovinu: pravidla deny pro Read nepokryjí skript v Pythonu nebo Node, který si soubor otevře sám, a deny pro Bash nesedí na stejný program uvnitř sh -c.
Kontext. Pravidlo neví, kdo session spustil a v jakém repozitáři běží.
Tady si PreToolUse hook vydělá na sebe. Dostane celé volání nástroje jako JSON, může v něm mít libovolnou logiku a exit 2 volání zablokuje dřív, než se pravidla vůbec vyhodnotí. Jádro našeho push gate, zkráceně:
CMD=$(jq -r '.tool_input.command // empty')
[[ "$CMD" != *"git push"* ]] && exit 0
BRANCH=$(git -C "${CLAUDE_PROJECT_DIR:-.}" branch --show-current 2>/dev/null)
if [[ "$CMD" =~ [[:space:]:](main|master)([[:space:]]|$) || "$BRANCH" == "main" ]]; then
echo "Pushing to main is not allowed. Push a branch and open a PR." >&2
exit 2
fi
Verze v našem firemním pluginu jde dál: čte úroveň repozitáře, takže v repozitářích s kódem blokuje push do každé chráněné větve všem, zatímco v repozitářích s dokumentací smí pushovat zakladatel. Pravidlem se to vyjádřit nedá.
Když je hranicí samotný stroj. Naše běhy bez dozoru staví s --permission-mode bypassPermissions a --disallowedTools AskUserQuestion ExitPlanMode, protože na dotaz by nikdo neodpověděl. Přijatelné to není kvůli přepínači, ale kvůli tomu, co je kolem něj. Pro AI agenta, který u nás nonstop pracuje na issues, to vypadá takhle:
01
Samostatné macOS VM
Agent žije ve vlastním virtuálním stroji. Jeho síť vidí internet, ale ne naši kancelářskou síť ani služby hostitele.
02
Vlastní GitHub účet
Strojový uživatel s právem zápisu jen do repozitářů, které dostane. Žádný admin, žádné obcházení ochrany větve main.
03
Stejné hooky jako lidé
Hooky z pluginu běží v každé session: push gate i blokace AI podpisu. Bypass přeskočí dotazy, ne hooky.
04
Vypínač
Jeden příkaz zastaví VM. Postup pak zruší jeho GitHub token a odhlásí jeho Claude session.
I v bypassu zůstává merge na člověku. Agent otevře pull request, ochrana větve vyžaduje schválení a to schválení nikdy nepatří agentovi.
CI reviewer je opačný extrém. Taky běží bez dozoru, ale místo bypassu dostane výslovný seznam nástrojů:
Umí přečíst diff a napsat komentář. Neumí upravovat, pushovat ani mergovat, takže není co obcházet.
A co vestavěný sandbox?
Claude Code má sandbox na úrovni operačního systému, který omezuje, co smí shellové příkazy číst, zapisovat a kam se smí připojit, včetně jejich podprocesů. Je to správná odpověď na druhé slepé místo výše, protože nezávisí na textu příkazu.
Dvě nastavení stojí za to znát, než cokoli rozšíříte do týmu. permissions.disableBypassPermissionsMode: "disable" v managed settings vezme bypass všem. Uživatel si ho může nastavit i sám pro sebe.
Jak nastavit oprávnění Claude Code pro tým?
Projděte, co už vaše repozitáře mají:
Na pořadí záleží. Pravidla deny nestojí nic a hned první den zastaví nejhorší případy. Pak přijde hook. Izolaci potřebujete, až když něco běží bez člověka, který se dívá.
Chcete agenty, kteří jsou rychlí a produkci přesto nerozbijí?
Pravidla oprávnění, hooky, izolaci a CI nastavujeme přímo v repozitářích týmu v rámci služby AI-native SDLC pro vývojové týmy. AI dnes píše veškerý náš kód a za výsledek ručí senior. Od roku 2023 jsme dodali 15+ produkčních projektů.
Ozveme se do dvou pracovních dnů a společně vybereme, co vyřešíme jako první.
Co dělá --dangerously-skip-permissions v Claude Code?
Spustí session v režimu bypassPermissions, stejně jako --permission-mode bypassPermissions. Claude Code se přestane ptát před příkazy, úpravami souborů a stahováním. Explicitní pravidla ask, pár kritických mazání a nástroje, které potřebují člověka, se ptají dál a hooky běží dál.
Je YOLO mode v Claude Code bezpečný?
Jen v izolovaném prostředí. Anthropic píše, že bypassPermissions patří jen do kontejnerů nebo VM, kde Claude Code nemůže nic poškodit. Na vývojářském notebooku se skutečnými přístupy použijte pravidla oprávnění a hooky.
V jakém pořadí se vyhodnocují pravidla allow, ask a deny?
Nejdřív deny, pak ask, nakonec allow. Vyhrává první shoda v tomto pořadí, takže pravidlo allow nikdy neudělá výjimku z deny a ask se zeptá, i když sedí i užší allow.
Kde jsou uložená nastavení oprávnění Claude Code?
V souborech settings.json: managed settings pro celou firmu, ~/.claude/settings.json pro jednoho člověka, .claude/settings.json v repozitáři pro tým a .claude/settings.local.json pro lokální výjimky. Managed settings mají přednost a deny z jakékoli úrovně přebije allow z jiné.
Jak vývojářům zakázat režim bypass?
Nastavte permissions.disableBypassPermissionsMode na "disable", ideálně v managed settings, kde to nikdo nepřepíše.
Zeptejte se AI na tento článek
AI při odpovědi využije i naše další články a zkušenosti z reálných projektů.
Playwright MCP dává AI agentovi skutečný prohlížeč. Jak ho používáme, aby agent ověřil svou změnu v běžící aplikaci a vrátil PASS nebo FAIL se screenshoty, co tím chytíme oproti unit testům a kdy jsou lepší obyčejné Playwright skripty.
LLM as a judge znamená, že jazykový model hodnotí práci jiného modelu podle sepsaných kritérií. Jak ho používáme na každém pull requestu našeho AI agenta: nejdřív strojové kontroly, pak čerstvá session jen pro čtení, která má práci vyvrátit, typovaný verdikt a pravidla, která přibyla po jeho chybách.
Jak děláme AI code review s Claude Code na každém pull requestu jednou sdílenou GitHub Action: co má AI recenzent hledat, jak bylo zelené a mlčelo, co přehlédne a proč schvaluje jen člověk.