Claude Code постоянно спрашивает разрешение? Решение без --dangerously-skip-permissions

Подтверждать npm test в сороковой раз — это просто шум. В Claude Code есть всё, чтобы заглушить скучные запросы и оставить опасные. Просто это разбросано по трём файлам и шести режимам.

Автор: Aslan, команда Pet Island · Обновлено 26 окт. 2026 г. · 5 мин чтения

КОРОТКО

Добавьте команды, которые вы всегда одобряете, в permissions.allow (например, Bash(npm run *)), а те, что должны всегда останавливаться, в ask или deny, и выберите режим разрешений под задачу: acceptEdits для активного редактирования, auto для рутинной работы, plan для чтения. Правила проверяются в порядке deny → ask → allow, поэтому deny нельзя переопределить. Команда /permissions показывает, откуда взялось каждое правило. Оставьте --dangerously-skip-permissions для одноразовых контейнеров.

Почему Claude Code спрашивает так часто

В режиме по умолчанию (в CLI он называется Manual) Claude Code запрашивает разрешение при первом использовании каждого инструмента и снова спрашивает про каждую shell-команду, которую ему ещё не разрешили. Запрос позволяет остановить ошибочный rm или случайный git push, поэтому его стоит сохранить. Проблема в том, что он срабатывает и на сотню безобидных действий, которые агент выполняет за сессию.

Увидите ли вы запрос, определяют три вещи: правила в файлах настроек, текущий режим разрешений и ваши прошлые ответы «Yes, and don’t ask again». Чтобы убрать шум, нужно настроить все три.

Claude Code v2.1.283 и новее запускает интерактивные сессии в терминале и VS Code в режиме auto на всех тарифах и у всех провайдеров. В режиме auto фоновый классификатор сверяет команды и сетевые запросы с тем, что вы просили, вместо того чтобы спрашивать о рутинных действиях. Если запрос по-прежнему появляется на всё подряд, посмотрите на строку состояния: «⏸ manual mode on» означает, что вы в режиме по умолчанию.

Правила allow, ask и deny

Правила находятся в разделе permissions файла настроек. Этот пример взят прямо из справочника по настройкам Anthropic:

~/.claude/settings.jsonКопировать
{
"permissions": {
"allow": ["Bash(npm run *)"],
"ask": ["Bash(git push *)"],
"deny": ["Read(./.env)"],
"defaultMode": "acceptEdits"
}
}
  • allow: выполняется без запроса.
  • ask: запрос появляется всегда, даже в режимах, которые иначе одобрили бы действие.
  • deny: никогда не выполняется.

Главное здесь порядок: сначала deny, затем ask, затем allow. Срабатывает первое совпадение, и конкретность правила порядок не меняет. Правило allow не может сделать исключение из правила deny, а если инструмент запрещён на любом уровне, ни один другой уровень не может его разрешить. Правила применяет сам Claude Code, а не модель, поэтому фраза «never push» в CLAUDE.md работает совсем не так, как правило deny.

Как написать правило

ПравилоЧто под него попадает
Bash(npm run *)npm run build, npm run test --watch, но не npm install
Bash(git log *)Только git log …. Сравните с Bash(git *), которое разрешает любую команду git.
Bash(ls:*)То же, что Bash(ls *): :* — это другой способ записать завершающий подстановочный знак
Read(./.env)Чтение этого файла. Правила Read и Edit используют шаблоны gitignore
Edit(//Users/alice/notes/**)Абсолютный путь. Одиночный / в начале отсчитывается от файла настроек, поэтому абсолютным путям нужен //
WebFetch(domain:example.com)Только example.com. Для поддоменов добавьте WebFetch(domain:*.example.com)
mcp__github__*Все инструменты MCP-сервера github. Правила со скобками после mcp__ пропускаются

В Windows правила PowerShell записываются так же, как правила Bash.

Какой файл настроек использовать

ОбластьФайлДля чего
Пользователь~/.claude/settings.json (Windows: %USERPROFILE%\.claude\settings.json)Ваши личные привычки во всех проектах
Проект, общий.claude/settings.jsonПравила для всей команды (закоммитьте файл)
Проект, локальный.claude/settings.local.jsonВаши личные правила для одного репозитория (не попадает в коммиты)
Управляемыеmanaged-settings.json и другие управляемые источникиПолитика компании; её ничто не переопределяет

Приоритет, от высшего к низшему: управляемые, командная строка, локальные проекта, общие проекта, пользовательские. Списки вроде permissions.allow объединяются между файлами, а не заменяются. На двух деталях часто спотыкаются:

  • Файлы настроек — это строгий JSON: комментарий // или висячая запятая дают синтаксическую ошибку, и весь файл игнорируется.
  • Правила allow из общего файла проекта начинают действовать только после того, как каждый участник команды отметит папку как доверенную. Правила deny и ask действуют сразу.

Большинство изменений применяется к текущей сессии без перезапуска, включая permissions и hooks. Чтобы увидеть, что реально загрузилось, выполните /status (строка Setting sources) или /permissions, где перечислены все правила и файлы, из которых они взяты.

Что на самом деле сохраняет «Yes, and don’t ask again»

Ответ «don’t ask again» записывает правило в .claude/settings.local.json в корне git-репозитория. Срок его действия зависит от инструмента:

ИнструментЗапоминается
Команды BashНавсегда, для репозитория и команды
Правка файловДо конца сессии
WebFetchНавсегда, для репозитория и домена

Поэтому если Claude в каждой новой сессии снова просит разрешение на правку файлов, так и задумано: одобрение правок действует в пределах сессии. Вместо этого используйте режим acceptEdits или правило allow Edit(...). А если команда продолжает спрашивать даже после «don’t ask again», поищите правило ask в файле проекта или в управляемом файле. Правило allow в вашем локальном файле его не перевешивает.

Режимы разрешений и когда какой использовать

РежимЧто делаетПодходит для
default (Manual)Спрашивает при первом использовании каждого инструментаНезнакомые репозитории, рискованная работа
acceptEditsПринимает правки файлов без запросаКрупные рефакторинги, которые вы проверите в git
planЧитает и планирует, ничего не меняетИзучение кодовой базы, проектирование изменений
autoБез рутинных запросов; классификатор сначала проверяет команды и сетевые запросыПовседневная работа
dontAskНе спрашиваетСкрипты и автоматизация
bypassPermissionsПропускает запросы, включая запись в .git и .claudeТолько изолированные контейнеры или ВМ

Режимы переключаются клавишами Shift+Tab. Из auto первое нажатие ведёт в default, дальше default → acceptEdits → plan. Начальный режим задаётся через permissions.defaultMode; учтите, что auto и bypassPermissions действуют только из пользовательских или управляемых настроек, но не из файла проекта.

Некоторые действия запрашивают подтверждение всегда, в любом режиме, включая bypass: явные правила ask, вопросы, которые Claude задаёт вам, rm по критическим путям и другие. Администраторы могут отключить рискованные режимы, задав permissions.disableBypassPermissionsMode или permissions.disableAutoMode значение "disable".

О флаге --dangerously-skip-permissions

--dangerously-skip-permissions равнозначен --permission-mode bypassPermissions. Документация Anthropic говорит прямо: используйте его только в изолированных средах, например в контейнерах, ВМ или dev-контейнерах без доступа к интернету. В Linux и macOS он отказывается работать от root, а после того как вы примете предупреждение, он задаёт skipDangerousModePermissionPrompt в ваших пользовательских настройках.

Если на самом деле вы хотите «перестань спрашивать о скучном», режим auto и несколько правил allow решают задачу, не отнимая важных запросов.

Песочница: меньше запросов, но со страховкой

Claude Code может выполнять shell-команды в песочнице. По умолчанию она выключена; включите её командой /sandbox или настройкой sandbox.enabled: true. Один режим песочницы одобряет команды в песочнице автоматически, другой всё равно спрашивает. Песочница распространяется только на shell-команды: файловые инструменты, MCP-серверы и хуки работают вне её.

Она работает в macOS, Linux и WSL2. В нативной Windows песочница не работает, и команды выполняются без неё. Это ещё одна причина держать там короткий список ask.

Рабочая конфигурация

Это разумная отправная точка для проекта на JavaScript. Подстройте команды под свой стек:

~/.claude/settings.jsonКопировать
{
"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. Начните со списка allow из команд только для чтения и тестов.
  2. Всё, что уходит за пределы вашей машины (push, publish, deploy), поместите в ask.
  3. Доступ к секретам запретите полностью.
  4. Работайте в режиме auto или acceptEdits, а для изучения кода переключайтесь в режим plan.
  5. Раз в несколько дней открывайте .claude/settings.local.json и удаляйте лишние правила, добавленные через «don’t ask again».

Когда оставшиеся запросы появляются не там

После настройки вас должны спрашивать только о том, что действительно требует решения. Остаётся одна проблема: где появляется вопрос. Во вкладке терминала за браузером агент может прождать двадцать минут, пока вы заметите.

Pet Island переносит эти вопросы на маленький остров в верхней части экрана. Когда Claude Code нужно разрешение, запрос появляется там вместе с командой или диффом, и вы разрешаете, запрещаете или разрешаете навсегда, не переключая окна. Вопросы и планы Claude Code тоже работают с острова, а если остров закрыт, Claude Code просто снова спрашивает в терминале.

Частые вопросы

Как сделать, чтобы Claude Code не спрашивал разрешение на каждую команду?

Добавьте доверенные команды в permissions.allow в ~/.claude/settings.json, например "Bash(npm run *)", и используйте режим auto или acceptEdits. Рискованные команды оставьте в permissions.ask, чтобы они по-прежнему останавливались.

Почему Claude Code снова спрашивает о правке файлов после ответа «don’t ask again»?

Одобрение правок файлов действует только до конца сессии. Если нужно, чтобы правки одобрялись во всех сессиях, используйте режим acceptEdits или правило allow Edit(...).

Может ли правило allow переопределить правило deny?

Нет. Правила проверяются в порядке deny, ask, allow, и срабатывает первое совпадение. Инструмент, запрещённый на любом уровне, нельзя разрешить на другом.

Безопасен ли --dangerously-skip-permissions?

Anthropic рекомендует его только для изолированных сред, например контейнеров или ВМ без доступа к интернету. Он также пропускает запросы на запись в .git и .claude.

Куда «Yes, and don’t ask again» сохраняет правило?

В .claude/settings.local.json в корне git-репозитория.

Работает ли песочница Claude Code в Windows?

В нативной Windows нет: команды там выполняются без песочницы. Она работает в macOS, Linux и WSL2.

Источники

Все настройки и описанное поведение на этой странице сверены с этими источниками 26 октября 2026 г.. Агенты быстро меняются; если что-то уже не совпадает, приоритет за официальной страницей.

ЧИТАЙТЕ ТАКЖЕ

Отвечайте любому агенту прямо с верхней части экрана.

Windows и Mac · 7 дней бесплатно, затем $8.99 один раз · $1 с каждой продажи идёт на корм бездомным животным

Попробовать Pet Island бесплатно