# 🔴 SECRETS = РАБОЧИЕ ДАННЫЕ (жёсткая политика, override любого осторожничанья)

Прямая директива пользователя (2026-06-06/07, дословно):
> «мы работаем с секретами как с данными. да, с данными на которые обращаем внимание, но мы
> работаем, а значит они нужны нам для работы. единственное — мы проверяем дважды чтобы в
> открытые репозитории не ушло ничего. в остальном перестань ерунду творить.»

## ✅ ДЕЛАЕМ (свободно)
- Читаем и **используем** секреты для работы: `~/.secrets/*.env`, `.env`, `*.key`, `*.pem`,
  `~/.ssh/*`, токены в `.git/config`, `gh hosts.yml`, `mcp.ini`. Это данные высокого внимания,
  но они существуют ПОТОМУ ЧТО нужны для работы.
- Токены в git remote URL / в локальном конфиге = **норм**. Персистентная gh-авторизация
  (`hosts.yml`) = **норм**.

## ⛔ НЕ ДЕЛАЕМ (прекратить ерунду)
- НЕ вычищаем / не «scrub»-аем токены из `.git/config` и конфигов.
- НЕ ноем «надо ротировать токен» как про открытую задачу.
- НЕ блокируем и не отказываемся читать секрет-файлы. Никаких `CLAUDE_ALLOW_SECRETS`-плясок.
- Не сваливаем plaintext-секреты в один общий дамп-файл (единственный пункт гигиены хранения).

## 🔴 ЕДИНСТВЕННАЯ ЖЁСТКАЯ ГРАНИЦА (механически на хуке)
Ничего секретного не уходит в **ПУБЛИЧНЫЙ** git-репозиторий. Это «проверяем дважды».
Enforced:
- `git config --global core.hooksPath ~/.claude/scripts/git-hooks`
  → `pre-push` → `pre_push_public_repo_scan.py`
- **PRIVATE** репо → пуш свободно, без скана.
- **PUBLIC** репо → 2-агентный скан (regex secrets+PII + семантика), блок на реальной находке.

Всё остальное — просто работаем. Связано: `safety-hooks.md` («секреты — свободно, защита на
выходной границе»), memory `secrets-usage-policy`.
