Де секрети ховаються найчастіше
Починайте не з усього репозиторію, а зі змінених файлів. Найчастіше проблема не в основному коді, а в місцях, які здаються допоміжними:
.env,.env.local,.npmrc,.pypirc,.dockercfg;- приклади конфігів і README;
- CI-файли, deploy scripts, Dockerfile;
- тести, fixtures, snapshots;
- тимчасові логи, debug output, exported JSON.
Небезпечний секрет не завжди виглядає як password. Це може бути webhook URL, приватний registry token, deploy key, cloud credential, session cookie або тестовий ключ, який раптом має доступ до реального сервісу.
Що можна давати AI
Не вставляйте в AI реальний токен, навіть якщо саме його хочете перевірити. Краще замініть значення на форму:
ghp_...redacted;sk_live_...redacted;https://hooks.example.com/...redacted;DATABASE_URL=postgres://user:REDACTED@host/db.
AI не потрібне повне значення секрету, щоб побачити ризик. Йому потрібні контекст, назви файлів, тип проєкту і форма підозрілого рядка.
Як перевірити знахідки локально
Після AI-перевірки все одно зробіть локальний контроль. Мінімальний набір:
git diff --cached
git status --short
Якщо в проєкті є secret scanner, запускайте його до push. Якщо немає, хоча б пошукайте типові слова у staged diff:
git diff --cached | rg -i "token|secret|password|api[_-]?key|private|credential"
Це не гарантує повну безпеку, але ловить багато дурних помилок до того, як вони стануть інцидентом.
Якщо секрет уже потрапив у commit
Не починайте з видалення рядка і нового commit-а. Якщо секрет уже був у git history або у віддаленому репозиторії, правильний порядок інший:
- Rotate: зробіть старий секрет недійсним.
- Приберіть секрет із поточного коду.
- Вирішіть, чи треба переписувати git history.
- Перевірте логи доступу, якщо секрет давав реальні права.
- Додайте правило, scanner або pre-commit hook, щоб помилка не повторилась.
Головне: видалений рядок не означає, що секрет більше не існує. Якщо хтось міг його побачити, його треба вважати скомпрометованим.
Коротко
Перевірка секретів перед відправленням у git - це не параноя, а нормальна гігієна. AI тут корисний як уважний другий погляд, але тільки якщо ви не даєте йому сам секрет.
Найкраща помилка з токеном - та, яку ви знайшли до git push.
Короткий чеклист
- Перевірити `.env`, приклади конфігів, тести, README і CI-файли.
- Не вставляти реальні секрети в AI-запит.
- Відрізнити безпечний placeholder від справжнього токена.
- Запустити локальну перевірку перед `git push`.
- Якщо секрет уже засвітився, спочатку rotate, потім чистити історію.
- Додати правило або hook, щоб така помилка не повторилась.
Пакет підказок: перевірити секрети перед відправленням у git
Допоможи перевірити зміни перед git push, щоб я не злив секрети. Контекст: - Тип проєкту: [frontend / backend / CLI / infra / інше] - Змінені файли: [встав список файлів] - Підозрілі фрагменти або diff: [встав тільки релевантні шматки без реальних секретів] - Де зазвичай живуть конфіги: [.env, CI variables, secret manager, інше] - Що можна вважати секретом у цьому проєкті: [API keys, tokens, passwords, private URLs, certs] Зроби перевірку: 1. Назви місця, де секрети найімовірніше могли потрапити в код. 2. Відміть рядки або патерни, які схожі на токени, паролі, ключі, приватні URL або тестові credentials. 3. Скажи, що треба прибрати з git і що можна лишити як безпечний приклад. 4. Запропонуй локальні команди для перевірки перед push. 5. Якщо секрет уже потрапив у commit, дай короткий план: rotate, remove, rewrite history або follow-up issue. Формат відповіді: - High-risk findings - Suspicious but needs human check - Safe examples - Commands to run before push - If already exposed: next actions