env-file-protection — хук для Claude Code: защита .env от записи
Хук блокирует вызовы Write к файлам .env*, чтобы агент случайно не перезаписал секреты. Ставится одной командой в настройки Claude.
npx claude-code-templates@latest --hook security/env-file-protectionЧто делает env-file-protection
Хук висит на событии PreToolUse и срабатывает на инструмент Write. Если путь попадает под шаблон .env*, хук возвращает решение deny с причиной «Writing to .env files is blocked by hook». Запись не проходит.
Фильтрация идёт через поле if со значением Write(.env*). Процесс не запускается, пока шаблон не совпал, поэтому на обычных файлах хук ничего не делает и не тратит время. Внутри — одна команда echo, которая печатает JSON с решением для Claude.
Установка идёт через npx claude-code-templates@latest --hook security/env-file-protection, запись попадает в .claude/settings.json. Шаблон .env* покрывает и .env.local, и .env.production — если у вас есть файлы с таким именем, которые агент должен править, хук их тоже заблокирует. Это повод проверить список своих env-файлов до установки.
Какие задачи решает
- защитить .env от случайной перезаписи агентом
- запретить запись в файлы с секретами без ручного подтверждения
- отсечь вызовы Write к .env* до их выполнения
- добавить проверку путей в настройки Claude без отдельного скрипта
Примеры запросов агенту
- настрой хук, чтобы Write не трогал .env
- почему агент не может записать в .env.local?
- добавь в .claude/settings.json блокировку записи в .env*
Как установить env-file-protection
1Через claude-code-templates
npx claude-code-templates@latest --hook security/env-file-protection2Вручную: положить файлы
.claude/settings.jsonБлок hooks: событие (PreToolUse, PostToolUse, Stop…) → команда. Личные — ~/.claude/settings.json
По шагам, с командами для каждой платформы: Хуки Claude Code: что это, где настраивать и как запретить опасную команду
Вопросы о env-file-protection
Как установить env-file-protection в Claude?
Выполните npx claude-code-templates@latest --hook security/env-file-protection, затем проверьте .claude/settings.json — конфигурация хука должна оказаться там.
Что делает env-file-protection?
Блокирует любой вызов инструмента Write, если путь совпадает с .env*. Вместо записи хук возвращает решение deny с пояснением.
Когда хук запускает процесс?
Только при совпадении шаблона Write(.env*). На остальных файлах фильтр по полю if не даёт запускать команду.
Исходный текст
env-file-protection.json · MIT
{
"description": "Prevent writing to .env files using the if condition for lightweight filtering. Blocks any Write tool call targeting .env* files, protecting secrets from accidental overwrites. Uses the if field to avoid spawning a process unless the file pattern matches.",
"hooks": {
"PreToolUse": [
{
"matcher": "Write",
"hooks": [
{
"type": "command",
"if": "Write(.env*)",
"command": "echo '{\"hookSpecificOutput\":{\"hookEventName\":\"PreToolUse\",\"permissionDecision\":\"deny\",\"permissionDecisionReason\":\"Writing to .env files is blocked by hook\"}}'"
}
]
}
]
}
}
© davila7 · MIT · davila7/claude-code-templates