architect/arh/history/claude-code-setup/PERMISSIONS-GUIDE.md

🔐 Гайд по системе разрешений Claude Code

Дата: 2025-11-12
Версия: 1.0


🎯 Что это?

Когда Claude Code спрашивает подтверждение, он хочет выполнить команду, которой нет в whitelist.


📋 Как читать запрос подтверждения

Пример 1: Чтение файла

Bash command

   ls -lah /var/backups/dev-pro/ 2>/dev/null || echo "No dev-pro backups"
   Check dev-pro backups

 Do you want to proceed?
  1. Yes
   2. Yes, allow reading from dev-pro/ from this project
   3. Tell Claude what to do differently

Что означает:

Часть Значение
Bash command Тип действия (команда в терминале)
ls -lah /var/backups/dev-pro/ Конкретная команда
Check dev-pro backups Описание зачем
Вариант 1 Разрешить ОДИН раз
Вариант 2 Разрешить НАВСЕГДА для этого проекта
Вариант 3 Отказать и сказать что делать по-другому

Пример 2: Работа с файлами

Read file

   /var/backups/marketplace/db/marketplace-db-20251112.db.gz
   Read backup file to check size

 Do you want to proceed?
  1. Yes
   2. Yes, allow reading from /var/backups/marketplace/ from this project
   3. Tell Claude what to do differently

Что означает:

Часть Значение
Read file Чтение файла
/var/backups/marketplace/... Путь к файлу
Read backup file to check size Зачем читает
Вариант 2 Разрешит читать ВСЕ из /var/backups/marketplace/

🚦 Когда нажимать что

✅ Вариант 1 (Yes) - Разрешить ОДИН раз

Когда использовать:
- Команда выглядит странно
- Первый раз вижу такую команду
- Не уверен что это безопасно
- Тестирую что-то

Пример:

Bash(rm -rf /tmp/test-folder)   ← удаление, лучше один раз

✅ Вариант 2 (Yes, allow ...) - Разрешить НАВСЕГДА

Когда использовать:
- Команда точно безопасная
- Буду использовать часто
- Работаю с этой папкой постоянно

Пример:

Read(//var/backups/**)            чтение бекапов, безопасно
Bash(rclone ls yandex:*)          просмотр Яндекс.Диска, безопасно
Bash(du -sh /opt/*)               размер файлов, безопасно

⚠️ НЕ разрешать навсегда:

Bash(rm -rf *)                   ← ОПАСНО! Может удалить всё!
Bash(sudo dd if=/dev/zero)       ← ОПАСНО! Затрёт диск!

🛑 Вариант 3 (Tell Claude...) - Отказать

Когда использовать:
- Команда точно неправильная
- Хочу чтобы сделал по-другому
- Путь к файлу неверный

Пример:
Если Claude хочет читать /home/user/ а нужно /opt/workspace/


🎨 Типы запросов

1. Bash (команды)

Безопасные (можно разрешать навсегда):

ls, cat, grep, find               просмотр
du, df, free, uptime              статистика
ps, top, htop                     процессы
git status, git log               git (только чтение)
which, whereis                    поиск программ
rclone ls, rclone about           просмотр облака

Осторожно (разрешать один раз):

chmod, chown                     ← изменение прав
mkdir, touch                     ← создание файлов
cp, mv                           ← копирование/перемещение
git add, git commit              ← изменение git

ОПАСНО (проверять внимательно!):

rm, rmdir                        ← удаление
sudo rm                          ← удаление с правами root
dd                               ← низкоуровневое копирование
mkfs                             ← форматирование диска

2. Read (чтение файлов)

Безопасные:

Read(/$WORKSPACE/**)   рабочая папка
Read(//var/log/**)                логи
Read(//etc/**)                    конфиги системы
Read(//var/backups/**)            бекапы

Осторожно:

Read(//root/.ssh/**)             ← SSH ключи (секреты!)
Read(//.env)                     ← переменные окружения (пароли!)

3. Write (запись файлов)

Всегда проверяй:
- Куда записывает?
- Не перезапишет ли важный файл?

Безопасные:

Write(/$WORKSPACE/scripts/**)  ← скрипты workspace
Write(//tmp/**)                            ← временные файлы

ОПАСНО:

Write(//etc/passwd)               ← системный файл!
Write(//.env)                     ← может перезаписать пароли!

📝 Примеры из жизни

Сценарий 1: Работа с бекапами

 Запрос: ls -lah /var/backups/dev-pro/

 Ответ: Вариант 2 (allow reading from /var/backups/)

Почему: Чтение бекапов безопасно, буду делать часто

Сценарий 2: Установка пакета

❓ Запрос: apt-get install -y rclone

✅ Ответ: Вариант 2 (allow apt-get install)

Почему: Установка безопасна, использую -y флаг

Сценарий 3: Удаление файла

❓ Запрос: rm /tmp/old-backup.tar.gz

✅ Ответ: Вариант 1 (Yes, один раз)

Почему: Удаление - потенциально опасно, лучше контролировать

Сценарий 4: Странная команда

❓ Запрос: rm -rf /opt/*

🛑 Ответ: Вариант 3 (Tell Claude...)

Почему: ОПАСНО! Может удалить весь /opt/

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

Файл настроек

$WORKSPACE/.claude/settings.local.json

Формат правил

{
  "permissions": {
    "allow": [
      "Bash(ls:*)",              // Любой ls
      "Read(//var/backups/**)",  // Чтение из /var/backups/
      "Bash(rclone ls:*)"        // rclone ls с любыми параметрами
    ]
  }
}

Wildcards

Паттерн Что означает
* Любые параметры
** Любые вложенные папки
:* Любые аргументы команды

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

Q: Можно ли разрешить всё сразу?

A: Технически да, но НЕ рекомендуется!

Это небезопасно:

{
  "permissions": {
    "allow": ["Bash(*)", "Read(**)", "Write(**)"]
  }
}

Claude может случайно удалить важные файлы.


Q: Как отменить разрешение?

A: Удалить строку из settings.local.json и перезапустить Claude Code.


Q: Запросов слишком много!

A: Добавь категориями:

  1. Общие команды (ls, cat, grep)
  2. Работа с проектом (чтение workspace)
  3. Специфичные для задачи (rclone, backup)

См. файл: $WORKSPACE/.claude/settings.local.json


✅ Checklist безопасности

Перед тем как нажать "Вариант 2":

Если хоть один "нет" → Вариант 1 (один раз)


📚 Полезные ссылки


Совет: Начни с "Вариант 1", потом добавь в whitelist то, что используешь часто.

Безопасность > Удобство 🔒


Создано: 2025-11-12
Версия: 1.0