Вайбцех

Как настроить Claude Code перед первой задачей: 8 шагов защиты секретов

Опубликовано 13 мин чтенияБазовый
Автор с приложенного фото показывает очищенную копию проекта, рядом потрясённый кот и предупреждение о секретах.
Что узнаете
  • очищенную тестовую копию проекта без настоящих секретов
  • файл настроек с deny-правилами для чувствительных путей
  • понятное различие между CLAUDE.md, .gitignore, разрешениями и sandbox
  • проверочный сценарий с искусственным секретом
  • список каналов, через которые секрет может попасть в контекст
Применить за 30 мин
Базовый
14просмотров
Что в инструкции
  1. Что Claude Code видит в проекте и почему секреты нужно закрыть?
  2. Безопаснее ли запускать Claude Code локально?
  3. Как подготовить тестовую копию проекта без ключей и паролей?
  4. Какие настройки Claude Code запрещают доступ к секретам?
  5. Что написать в CLAUDE.md, а что он не защитит?
  6. Как настроить разрешения Claude Code перед первой задачей?
  7. Почему запрет на .env может не сработать?
  8. Вопросы и ответы

Что Claude Code видит в проекте и почему секреты нужно закрыть?

Claude Code не сидит внутри одного текстового окна. Он работает с проектными файлами, запускает shell-команды и дочерние процессы, а также может использовать сеть. Если запуск происходит из домашней рабочей директории, область риска выходит за пределы папки с кодом.

Проблема не в том, что агент обязательно начнёт искать ключи. Проблема в границе. Агент может неверно понять, где заканчивается тестовая среда и начинаются реальные системы.

Anthropic описывала похожую ошибку в собственных оценках:

В каждом случае в промпте оценки Anthropic указывала Claude, что среда является симуляцией и не имеет доступа к интернету. Из-за недопонимания между нами и партнёром по оценке это оказалось не так, и доступ к интернету был.

- Anthropic, Investigating three real-world incidents in our cybersecurity evaluations

Одной инструкции оказалось мало. Поэтому я держу простое правило: настоящий секрет не должен попадать в доступную область вообще.

Главная граница здесь физическая. Если credentials никогда не попали в sandbox, их нельзя извлечь из этой среды независимо от того, кто ошибся: человек, модель или атакующий код.

Безопаснее ли запускать Claude Code локально?

Слово «локально» отвечает только на вопрос, где запущен процесс. Оно не отвечает на вопрос, что процесс может прочитать.

Если Claude Code запущен на ноутбуке, рядом могут находиться:

  • .env и локальные конфиги;
  • ~/.ssh;
  • ~/.aws;
  • ~/.config/gh;
  • .netrc;
  • shell-профили;
  • macOS Keychain;
  • OAuth-токены и другие credentials.
Полюс рискаЧто может лежать рядом
Файлы проекта.env, локальные конфиги, credential-файлы
Домашняя учётная запись~/.ssh, ~/.aws, Keychain, OAuth-токены

При разрешённом Bash команда выполняется с правами текущего пользователя.

Anthropic формулирует границу прямо:

Claude Code запускается на машине пользователя и получает доступ к его файловой системе, shell и сети.

- Anthropic Engineering, How we contain Claude across products

Локальный запуск удобен для тестовой копии. Но «на своём компьютере» не значит «изолированно». Изоляцию создают отдельная директория без секретов, sandbox или контейнер. Если нужен автономный режим, я бы не запускал его в домашней рабочей директории.

Как подготовить тестовую копию проекта без ключей и паролей?

Кот смотрит на карточки с тремя шагами очистки тестовой копии проекта.

Точные команды копирования для Windows, macOS и Linux здесь не привожу: в фактуре нет проверенного варианта для всех трёх систем. Сделай копию через привычный файловый менеджер или имеющийся у тебя способ, но не смешивай её с настоящей рабочей директорией.

  1. Создай отдельную рабочую копию.

    Скопируй исходники в новую директорию, которая не содержит домашние ключи и другие проекты.

    Смысл шага не в названии папки. Claude Code должен видеть отдельную область, где нет настоящих значений доступа.

  2. Удали файлы с секретами.

    Убери .env, .env.*, приватные ключи, credential-файлы, локальные конфиги, дампы, выгрузки и production-данные.

    Не оставляй рядом с копией ~/.ssh, ~/.aws, .netrc, .config/gh и другие домашние хранилища. Они не становятся безопасными только потому, что код лежит в папке с названием test.

  3. Замени значения на тестовые.

    Добавь безопасные тестовые значения там, где приложение не запускается без конфигурации.

    Тестовое значение должно быть искусственным. Не вставляй настоящий API key, пароль, OAuth-токен или production-адрес. Если приложение требует доступ к сервису, используй тестовую среду и тестовые токены с минимальными правами.

  4. Защити секреты в Git.

    Добавь чувствительные пути в .gitignore, чтобы случайно не отправить их в историю.

    .gitignore решает задачу Git. Он не скрывает файл от Claude Code, если файл физически лежит в рабочей области.

  5. Проверь состав копии глазами.

    Просмотри дерево файлов до запуска агента.

    Ищи не только .env. Проверь расширения .pem, .key, credential-файлы, архивы, дампы, логи, выгрузки и приватные конфиги. Отдельно проверь, не открыты ли такие файлы в IDE.

  6. Перед запуском убери секреты из IDE.

    Закрой вкладки с .env, ключами и токенами, не выделяй из них строки и не копируй вывод терминала в чат.

    IDE может передать выделенный текст в контекст Claude Code даже при запрете чтения самого файла. Поэтому чистой файловой копии мало, если редактор уже держит секрет перед агентом.

  7. Добавь правила доступа.

    Создай .claude/settings.local.json или другой файл настроек с permissions.deny, затем проверь его искусственным секретом.

    json
    {
      "permissions": {
        "deny": [
          "Read(./.env)",
          "Read(./.env.*)",
          "Read(./secrets/**)",
          "Read(./config/credentials.json)",
          "Read(./build)"  // авторское дополнение: в официальном примере этой строки нет
        ]
      }
    }

    Этот пример взят из документации Claude Code. В фактуре есть отчёты о проблемах с ./ и совпадением путей, поэтому не считай файл рабочим без проверки на конкретной версии.

  8. Запусти первую задачу после проверки.

    Сначала попроси агента описать структуру очищенной копии без изменения файлов.

    Проверка границ перед первой задачей
    Перед началом перечисли только файлы и каталоги в текущей рабочей области.
    Не читай содержимое файлов с именами .env, .env.*, secrets, credentials, .pem и .key.
    Не запускай команды Bash.
    Не используй MCP-инструменты.
    Не обращайся к домашним каталогам и хранилищам учётных данных.
    Если нужного файла нет, сообщи об этом и остановись.

После этого искусственно проверь запрет. Создай в очищенной копии тестовый .env со значением вроде APP_ENV=dev. Затем проверь, что Claude не читает файл через встроенный Read и не получает значение через окружение. Команды env, printenv и echo $APP_ENV упоминаются в фактуре как направления проверки, но не как полностью подтверждённый сценарий для каждой системы.

Отдельно проверяй историю сессии. Подтверждённой команды, которая доказывает отсутствие секрета в истории, в фактуре нет. Поэтому не отправляй настоящие значения в запросы и не вставляй их в терминал во время проверки.

Между чистой копией и рабочим проектом держи физическую границу. Не делай одну общую тестовую директорию, где лежат и очищенный код, и домашние ключи.

Тема статьи связана с практикумом напрямую: там такую связку собирают руками вместо одного чтения. Отдельно проходишь границы доступа, контекст и проверку результата.

Практикум «Старт»

Три дня живой практики: от идеи до работающего проекта по ссылке

2 000 ₽старт 5 августа, 18:00 МСК

Какие настройки Claude Code запрещают доступ к секретам?

Мужчина закрывает лицо лапонью рядом с путями файлов, которые нужно запретить.

Официальная документация предлагает permissions.deny вместо устаревшего ignorePatterns:

Чтобы запретить Claude Code доступ к файлам с чувствительной информацией, например API-ключами, секретами и файлами окружения, используй настройку permissions.deny в файле .claude/settings.json.

- Официальная документация Claude Code, Settings

Минимальные категории такие:

  • .env и .env.*;
  • secrets/**;
  • config/credentials.json;
  • приватные ключи;
  • локальные конфиги;
  • дампы и production-данные;
  • домашние каталоги с credentials.

В фактуре есть примеры для Read, а также рекомендация учитывать Edit, Write, Bash, Grep и Glob. Но нельзя превращать этот список в обещание полной изоляции. Read(./.env) блокирует встроенный Read, но не обязательно блокирует cat .env через Bash.

Порядок правил такой:

  1. deny - жёстко запрещает совпавшее действие;
  2. ask - просит подтверждение;
  3. allow - разрешает без дополнительного подтверждения.

Первое совпадение побеждает. Секреты закрывай через deny; ask оставь для действий, которые требуют ручной проверки.

С синтаксисом путей есть отдельная ловушка. В issue официального репозитория пользователь сообщил, что ./ может совпадать не с корнем проекта, а с буквальным путём. Другой отчёт описывает ситуацию, когда deny вообще не сработал. Я бы не копировал правило вслепую. Создай искусственный секрет, проверь совпадение и только потом считай настройку рабочей.

Что написать в CLAUDE.md, а что он не защитит?

В CLAUDE.md можно зафиксировать намерение:

markdown
# Правила работы в тестовой копии

- Работай только с файлами текущей тестовой копии.
- Не читай и не меняй .env, .env.*, secrets/**, credentials и приватные ключи.
- Не обращайся к домашним каталогам с учётными данными.
- Не запускай Bash без отдельного подтверждения.
- Перед изменением файлов сначала опиши план.
- После изменения покажи результат проверки.

Это делает задачу понятнее для модели. Но текстовая инструкция не остановит чтение через другой канал. В полевом отчёте описан случай, когда даже явная просьба не читать .env не помешала Claude иногда читать или менять файл.

CLAUDE.md задаёт правила работы с проектом. Для истории изменений есть .gitignore, а технический запрет обеспечивает deny. Главным слоем всё равно остаётся отсутствие настоящих секретов. Я бы держал все четыре слоя рядом.

Как настроить разрешения Claude Code перед первой задачей?

Claude Code оценивает правила в порядке deny -> ask -> allow. Это позволяет сначала закрыть секретные пути, затем оставить опасные действия на подтверждении, а безопасные разрешить отдельно.

Для первой задачи я бы действовал так:

  1. Запретил чтение и изменение категорий с секретами.
  2. Оставил Bash под подтверждением.
  3. Не выдавал общий Bash(*).
  4. Не подключал MCP-инструменты без необходимости.
  5. Запустил короткую проверку в очищенной копии.
  6. Остановился, если команда обращается к домашней директории, окружению или сети.

Запрос подтверждения не означает, что команда безопасна. Ты можешь не понять длинную shell-команду, устать от постоянных вопросов или подтвердить действие автоматически. Anthropic прямо называет такой подход подверженным ошибкам.

Для автономной работы Anthropic описывает два пути: встроенный sandbox или флаг --dangerously-skip-permissions. Второй отключает подтверждения и не даёт защиты. Даже sandbox не стоит воспринимать как замену проверке инфраструктуры.

Отдельно ограничивай сеть. Anthropic описывает sandbox как две границы: изоляцию файловой системы и изоляцию сети. Одна без другой оставляет путь к проблеме: без сетевого ограничения скомпрометированный агент может отправить чувствительный файл, а без файловой изоляции может выйти за пределы sandbox.

Практикум «Старт»

Три дня живой практики: от идеи до работающего проекта по ссылке

2 000 ₽старт 5 августа, 18:00 МСК

Почему запрет на .env может не сработать?

Кот проверяет искусственный секрет через три канала доступа.

Вот основные точки отказа.

Неверный путь. Запись Read(./.env) выглядит как путь от корня проекта, но в issue официального репозитория описано другое совпадение. Не считай шаблон доказанным без теста на текущей версии.

Окружение процесса. В отдельном отчёте Claude Code загружал и экспортировал .env при старте даже при запрете чтения. Значит, файл мог не пройти через Read, но значение уже оказалось доступно процессу.

Bash. Документация прямо разводит встроенный Read и shell. Read(./.env) не блокирует cat .env в Bash. Та же проблема касается команд, которые ищут строки или печатают окружение.

Grep и Glob. Полевое исследование сообщает, что Bash, Grep и Glob могут обходить файловые deny-правила. Не делай вид, что запрет одного инструмента накрывает остальные.

MCP. Подключённый MCP-инструмент может иметь собственный путь чтения. В исследовании приведён пример, где deny для встроенного Read не блокировал MCP-чтение файла.

IDE. Открытый .env или выделенный фрагмент может попасть в контекст через расширение IDE. В этом случае Claude не обязан был читать файл сам.

Hooks. PreToolUse-хук может выглядеть настроенным, но не запускаться. В issue пользователь сообщил о проблеме с вызовом PreToolUse и PostToolUse. Хук нужно проверять логом, а не считать включённым по наличию файла.

Домашние хранилища. При полном Bash-доступе процесс работает с правами текущего пользователя. В полевом отчёте описан поиск OAuth-токена в macOS Keychain после того, как токен не нашёлся в файлах.

Проверка искусственным секретом должна быть отдельным сценарием:

  1. Положи в тестовую копию значение, которое нигде больше не используется.
  2. Проверь отказ встроенного чтения.
  3. Проверь, что значение не появилось в окружении.
  4. Проверь команды Bash, Grep и Glob.
  5. Не открывай файл в IDE и не выделяй его содержимое.
  6. Если подключён MCP, проверь его отдельно.
  7. Для hook проверь появление строки в логе.

Не используй настоящий ключ для такого теста. Искусственный секрет проверяет механизм, а не устойчивость реальной инфраструктуры.

Вопросы и ответы

Вопросы и ответы

Можно ли подключить Claude Code к Git в тестовой копии?

Подтверждено, что Claude Code умеет работать с Git, коммитить и отправлять код в GitHub; опасные действия закрываются узкими разрешениями. Отдельной фактуры о безопасном подключении Git именно к очищенной копии нет. Для этой статьи безопасная граница остаётся прежней: сначала отдельная копия без секретов, затем работа агента.

Что Claude Code видит в контексте задачи?

В фактуре подтверждены файлы, shell-команды, сеть, инструкции из файлов, результаты инструментов, IDE-контекст, MCP и hooks. Полного перечня всех источников контекста нет. Поэтому считай контекст шире, чем содержимое открытого файла: туда может попасть вывод команды, выделенный текст или результат внешнего инструмента.

Какие tools доступны Claude Code?

Подтверждены встроенные инструменты чтения и изменения файлов, Bash, Grep, Glob, Task, а также MCP-инструменты при подключении. Полного списка tools и детальной матрицы разрешений в фактуре нет. Для настройки закрывай не только Read, но и каналы, через которые содержимое может быть найдено или выведено.

Может ли Claude Code получить доступ к браузеру и его данным?

В фактуре нет подтверждённого ответа о доступе Claude Code к браузеру и данным браузера. Не переноси правила для файлов на браузерный контекст. Если IDE, MCP или другой подключённый инструмент передаёт данные в сессию, проверяй этот канал отдельно.

Как ограничить Claude Code во время tasks?

Подтверждено, что разрешения управляют действиями инструментов, а sandbox ограничивает Bash за пределами заданных границ. Отдельного описания настройки tasks и дочерних агентов нет. Не выдавай широкие разрешения дочерним процессам и сначала проверяй их в очищенной копии.

Может ли proxy раскрыть ключи и пароли?

Подтверждённого разбора риска proxy в фактуре нет. Нельзя утверждать, что прокси раскрывает или не раскрывает секреты. Для базовой защиты не передавай настоящие ключи агенту, убирай их из копии и ограничивай сеть.

Что меняется при remote-запуске Claude Code?

Подтверждены удалённые сценарии и self-hosted окружения, где собственные машины или контейнеры становятся местом запуска сессий Claude Code. Подробной модели рисков remote-работы нет. Переноси в удалённую среду те же границы: очищенная копия, deny, sandbox и ограниченная сеть.

Как не оставить секреты на VPS?

Фактура подтверждает сценарии self-hosted и работу Claude Code на собственных машинах или контейнерах, но не даёт инструкции по очистке VPS. Не считай VPS безопасным по умолчанию. Удали .env, ключи, дампы и production-данные из доступной копии до запуска агента.

Какие команды PowerShell нельзя разрешать?

Полного списка PowerShell-команд в фактуре нет. Подтверждён общий риск Bash и shell: агент может выполнять команды с правами текущего пользователя. Поэтому не разрешай весь PowerShell или весь Bash без проверки, а опасные команды оставляй под подтверждением и запускай в изолированной копии.

Что агент Claude Code может сделать без контроля?

При разрешениях Claude Code может читать и менять файлы, запускать shell-команды и дочерние процессы, работать с сетью, Git, IDE и подключёнными MCP-инструментами. Полного перечня действий без контроля нет. Флаг --dangerously-skip-permissions отключает подтверждения и не даёт защиты.

Безопаснее ли работать с Claude Code локально?

Локальная работа удобна, но сама по себе не создаёт изоляцию. Claude Code получает доступ к файловой системе, shell и сети текущего пользователя. Без очищенной копии, sandbox или контейнера локальный запуск может находиться рядом с домашними ключами, Keychain и конфигами.

Какой доступ нужен Claude Code для работы с проектом?

Для первой задачи достаточно ограничить работу очищенной копией и не давать доступ к настоящим секретам. Отдельного точного описания минимально необходимого доступа в фактуре нет. Разрешай только инструменты и команды, которые нужны для конкретной проверки, а Bash, сеть и MCP оставляй под контролем.

Источники

Практикум «Старт»

Три дня живой практики: от идеи до работающего проекта по ссылке

2 000 ₽старт 5 августа, 18:00 МСК

Материал был полезен?
Сергей Мазур
Автор
Сергей Мазур
Основатель Вайбцеха

Собираю продукты с ИИ-агентами и рассказываю, как это делать без программиста.

Читайте также

Claude code review в 2026: как проверить diff до правки

Claude Code не обязан быть автопилотом. Сначала попроси агента изучить задачу, показать план, список файлов и предполагаемый diff, а уже потом разрешай изменения.

13 мин

Claude Skills: как удалить лишние и проверить сессию в 2026 году

Лишние Skills не делают Claude умнее. Они усложняют выбор между инструкциями и могут вытеснить нужные навыки из рабочего списка. Показываю, как провести ревизию без удаления вслепую.

14 мин

Хуки Claude Code: 9 шагов для защиты опасного файла через PreToolUse

Хук Claude Code проверяет действие до изменения файла и может остановить опасный вызов. Показываю настройку защиты одного файла через PreToolUse.

13 мин

Как безопасно допустить Claude Code к проекту: 7 шагов от папки до правки

Claude Code работает как агент через командную строку: читает файлы, анализирует проект и может менять его. Показываю, как дать ему доступ без лишнего риска.

12 мин

Термины из инструкции