Как я включил Claude Code в режим без вопросов
Одна строка в ~/.zshrc — и Claude Code больше не спрашивает разрешение на каждое действие. Флаг --dangerously-skip-permissions выглядит страшно, но внутри своего окружения это нормальный рабочий режим, в котором я живу каждый день. Ниже — правила, по которым я его включаю, и границы, за которые не выхожу.
Что я сделал в этой сессии
Попросил агента добавить третий алиас на ту же команду. До этого было два — lfg и дап (это “let’s fucking go” и “давай, поехали” в русской раскладке, чтобы не переключать язык). Теперь есть ещё cc — короткий, на автомате, из любого состояния руки. Все три указывают на одно и то же: claude --dangerously-skip-permissions.
Написал Claude Code на Opus 4.6:
Агент дописал строку в ~/.zshrc рядом с существующими. Руками я ничего не трогал — по принципу “работает — отлично, не работает — пишу пофикси”.
Что вообще делает этот флаг
По умолчанию Claude Code спрашивает approve на каждую операцию, которая может что-то поменять: bash-команду, запись в файл, git, установку пакетов. Всплывает маленькая панель, ты нажимаешь “yes”, и только после этого агент двигается дальше. --dangerously-skip-permissions отключает эти prompt’ы — агент пишет, запускает, коммитит без прерываний.
Именно поэтому флаг называется со словом “dangerously”. Это не PR-трюк, это честно. Anthropic говорит: снимаешь защиту — значит, сам берёшь риск. Правильно. Я и беру.
Почему approve-режим не работает на потоке
У меня около 88 промптов в день на Max-плане, 5-6 часов активной работы с Claude Code. Если на каждую bash-команду агент будет ждать моего клика — я превращусь в кликера yes-yes-yes вместо того, чтобы думать над задачей. Approve-режим хорош в первый день знакомства с инструментом, дальше он рвёт flow в клочья.
Вайбкодинг держится на делегировании. Approve на каждый шаг — противоположность делегированию: ты не можешь одновременно доверить агенту задачу и контролировать каждое его движение. Либо одно, либо другое.
APPROVE-РЕЖИМ BYPASS-РЕЖИМ
───────────── ────────────
промпт промпт
│ │
▼ ▼
план план
│ │
▼ ▼
шаг 1 ──► approve? ──► wait шаг 1
│ │
▼ ▼
шаг 2 ──► approve? ──► wait шаг 2
│ │
▼ ▼
шаг 3 ──► approve? ──► wait шаг 3
│ │
▼ ▼
результат результат
│ │
▼ ▼
"я думал над задачей?" следующий промпт
Слева — иллюзия контроля. На каждом шаге ты вроде бы решаешь, а на самом деле подтверждаешь то, что понял секунду назад. Справа — настоящее делегирование: ты думаешь над задачей, агент думает над шагами.
Что именно я “одобрил” этим алиасом
Я не дал bypass “на всё подряд”. Я дал его в контексте, который контролирую:
- Свои репо. Я знаю, что у меня в
CLAUDE.md, в хуках, в скиллах — я их сам писал. Проектteach-personal-corpсодержит явные NEVER-правила: не пушить в remote без запроса, не трогатьgit config, не делать force push. Агент читает их каждую сессию. - Своя машина. Я знаю, что стоит в env, какие инструменты установлены, кто
git user. Четыре машины — два старых мака, новый MacBook и один Windows — все настроены по одному шаблону через приватный репоcc-skills. Про синхронизацию рассказывал отдельно в Как я синхронизирую Claude Code на четырёх компах. - Git-обратимость. Любое действие в своём репо откатывается через
git reset, пока не запушено. Агент сломал — говорю “откати”. Агент откатывает.
Это не храбрость. Это понимание размера взрыва.
Приватность — где я bypass не включаю
Теперь про границы. Не в режиме “бойся”, а в режиме “знай, где начинается чужое”.
Секреты в env. Агент видит всё, что видит твой shell. У меня GEMINI_API_KEY торчит в ~/.zshrc как env var — агент прочитает, если попросить. Это ок ровно потому, что ключ не привязан ни к какому аккаунту с платёжкой и его легко отозвать в консоли Google AI Studio. Всё, что стоит денег или открывает доступ к юзерам, — в dev-shell не хранится. Если у тебя там stripe-ключ или prod-токен, bypass тебе не подходит, пока это не уберёшь.
Рандомные репо. Не клонируй чужой проект и не запускай внутри cc сразу после git clone. В CLAUDE.md могут быть prompt injections — это уже встречается в дикой природе, не теория. В post-install скриптах package.json может быть что угодно. Для работы с чужим кодом — отдельная учётка macOS или VM с отдельным gh аккаунтом. Я, честно, редко такое делаю: чужой код почти не трогаю.
Не для продакшен-серверов. Отдельный пункт с личным шрамом. Был у меня Clawdbot на VPS — агент-ассистент на публичном сервере в bypass-режиме. На второй день из-за дыры в setup’е уехали API-ключи. Вывод простой: bypass + белый IP + долгоживущая сессия — это не дом, это витрина. На своём ноуте — да. На сервере в интернете — нет.
Дома учишься быстрее
Approve-режим — это как учиться плавать в спасжилете. Красиво, безопасно, и ты никогда не почувствуешь воду. С bypass ты гораздо быстрее понимаешь, где агент действительно может навредить, а где просто шумит.
На approve-режиме ты боишься всего одинаково: и ls, и rm -rf. Каждый клик выглядит одинаково важным, поэтому ты не учишься отличать опасное от безобидного. На bypass отличие становится видимым сразу, потому что у тебя есть настоящий feedback loop, а не абстрактный “yes/no” на всё подряд.
Страх permission-prompt выполняет педагогическую роль ровно один день. Дальше он мешает учиться.
Guardrails вместо approve
Клики yes-yes-yes я заменил другими guardrails — они работают сами, пока я думаю над задачей:
- Два глобальных хука.
SessionStartподтягивает активные GitHub issues в контекст,PostToolUseнапоминает их закрывать. Агент сам ведёт мой task tracker — описывал это в Хуки Claude Code: агент сам ведёт задачи. - Правило двух фейлов. Агент ошибся два раза подряд —
/clear, новая сессия с чистым контекстом. Не бьюсь головой об стену и не пробую “ну ещё разок”. Контекст протух — начали заново. - Git на всё. Любой чих — коммит. Ничего не теряется, любое действие обратимо, пока не ушло в remote.
- Явные NEVER в
CLAUDE.md. Не пушить в remote без запроса. Не трогатьgit config. Не делать force push. Эти правила агент видит каждую сессию, они в системном промпте раньше, чем моя задача. - Один setup на четырёх машинах. Через
cc-skillsна всех четырёх машинах одинаковые хуки, скиллы и правила. Значит, bypass везде работает в одинаково предсказуемом окружении, а не “тут настроено, там я что-то забыл”.
Это и есть настоящий контроль: не кликнуть yes на каждый чих, а построить контекст, в котором агенту просто некуда свернуть плохо.
Итог
cc — не разрешение “ломай всё”. Это договор: я контролирую контекст, агент работает без прерываний.
- Дома, в своих репо, на своей машине — да.
- На продакшен-сервере — нет.
- В свежеклонированном чужом репо — нет.
- В своём — конечно.
Одна строка в ~/.zshrc. Это не про безрассудство, это про то, чтобы перестать мешать агенту делать то, что ты ему поручил.
Подписаться на обновления — @sereja_tech