Как настроить разрешения Claude Code и убрать постоянные Allow | AI-Mrkt

Как настроить разрешения Claude Code и убрать постоянные нажатия Allow

Каждый раз нажимать Allow на git push, vercel deploy и curl надоедает быстро. Рассказываю как один раз настроить settings.json — и Claude Code будет работать автономно без прерываний.

Почему Claude Code спрашивает разрешение на каждую команду

По умолчанию Claude Code работает в «безопасном режиме»: перед каждой командой, которая потенциально может изменить что-то в системе, он останавливается и спрашивает подтверждение. Это сделано специально — чтобы вы контролировали что происходит.

Звучит разумно, но на практике если вы работаете с git, деплоите на Vercel, запускаете скрипты — диалог Allow вылезает каждые 30 секунд. Это разрушает поток работы и превращает вайбкодинг в клик-фест.

Решение — файл settings.json, в котором вы явно прописываете какие команды Claude Code может выполнять без вашего подтверждения.

Два уровня настроек: проектный и глобальный

В Claude Code есть два места где можно прописать разрешения:

Проектный settings.json — файл внутри конкретного проекта. Применяется только когда Claude Code запущен из этой папки:

ваш-проект/
└── .claude/
    └── settings.json

Глобальный settings.json — файл в домашней папке пользователя. Применяется ко всем проектам:

~/.claude/settings.json

Если оба файла существуют — проектный имеет приоритет. Это удобно: в глобальном можно разрешить базовые команды (git, curl), а в проектном добавить специфику конкретного проекта (например, команды деплоя).

Формат permissions.allow

Структура файла простая:

{
  "permissions": {
    "allow": [
      "Bash(команда *)",
      "Bash(другая команда *)"
    ],
    "deny": []
  }
}

Паттерны в allow могут быть трёх видов:

Точное совпадение — разрешает только эту конкретную команду:

"Bash(git status)"

С wildcard * — разрешает команду с любыми аргументами. Важно: пробел перед звёздочкой обязателен:

"Bash(git push *)"

Широкий wildcard — разрешает весь инструмент целиком:

"Bash(vercel *)"

Чем шире паттерн — тем больше разрешено. Используйте широкие паттерны только для инструментов, которым доверяете.

Готовый конфиг для типичного проекта с деплоем

Если вы работаете с git, Vercel, npm и запускаете Python/Node скрипты — вот конфиг который закрывает 95% диалогов Allow. Создайте файл .claude/settings.json в корне проекта:

{
  "permissions": {
    "allow": [
      "Bash(git add *)",
      "Bash(git commit *)",
      "Bash(git push *)",
      "Bash(git pull *)",
      "Bash(git rebase *)",
      "Bash(git checkout *)",
      "Bash(git stash *)",
      "Bash(git merge *)",
      "Bash(vercel *)",
      "Bash(curl -s *)",
      "Bash(curl -sL *)",
      "Bash(curl -sI *)",
      "Bash(gh workflow run *)",
      "Bash(gh run rerun *)",
      "Bash(npm run *)",
      "Bash(npm install *)",
      "Bash(pip3 install *)",
      "Bash(open *)",
      "Bash(mkdir -p *)",
      "Bash(cp *)",
      "Bash(rsync *)"
    ]
  }
}

Создать файл можно прямо из Claude Code — просто попросите его: «создай .claude/settings.json с разрешениями для git, vercel и npm».

Глобальный конфиг — один раз для всех проектов

Если хотите настроить один раз и забыть — создайте глобальный файл ~/.claude/settings.json. Он применится ко всем проектам автоматически.

Откройте терминал и создайте файл:

mkdir -p ~/.claude
nano ~/.claude/settings.json

Вставьте содержимое (то же что выше) и сохраните. Теперь во всех проектах Claude Code будет работать без прерываний на эти команды.

Проверить что файл создан правильно:

cat ~/.claude/settings.json

Что НЕ стоит разрешать — список опасных паттернов

Не все команды одинаково безопасны. Вот что я бы не стал добавлять в allow:

Bash(rm *) или Bash(rm -rf *) — удаление файлов без подтверждения. Если Claude Code случайно снесёт нужную папку — вы не успеете остановить.

Bash(sudo *) — команды с правами администратора. Слишком широко.

Bash(python3 *) — любой Python скрипт. Лучше указать конкретный: Bash(python3 scripts/*).

Bash(ssh *) — SSH подключения. Лучше разрешать конкретный хост.

Общее правило: чем конкретнее паттерн — тем лучше. Bash(git push origin main) безопаснее чем Bash(git *).

🤖

Больше про Claude Code — в канале

Разбираю реальные сценарии использования Claude Code: как настраивать, автоматизировать деплои, писать скрипты и строить продукты без команды разработчиков.

Подписаться →

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

Где находится файл settings.json?
Глобальный — ~/.claude/settings.json (тильда это ваша домашняя папка, например /Users/имя/). Проектный — .claude/settings.json внутри папки проекта. Если оба существуют — проектный имеет приоритет.
Изменения применяются сразу или нужно перезапускать Claude Code?
Claude Code читает settings.json при каждом запуске сессии. Если вы изменили файл во время работы — нужно начать новый чат (новую сессию), изменения применятся сразу.
Можно ли запретить Claude Code выполнять определённые команды?
Да, для этого есть секция deny. Например, "Bash(rm *)" в deny гарантирует что Claude Code никогда не запустит rm, даже если вы случайно об этом попросите.
Как разрешить только конкретный git remote или ветку?
Используйте точный паттерн: "Bash(git push origin main)". Это разрешит только пуш в main на origin, всё остальное по-прежнему будет спрашивать подтверждение.
Дмитрий Коновалов
Дмитрий Коновалов
CMO с 10-летним опытом. Строю комьюнити AI-маркетологов в России. Делюсь реальными кейсами внедрения нейросетей в маркетинг в Telegram @dima_konovalov_edtech.