Чому Claude Code ігнорує CLAUDE.md і як хуки гарантують правила
Файл CLAUDE.md передається як користувацький контекст після системного промпту, тому модель сприймає правила як необов'язкові побажання. Для гарантованого блокування помилок на кшталт витоку секретів слід замінювати текстові правила детерміністичними хуками PreToolUse.

Чому це важливо
Перевірте файли конфігурації через /context та перенесіть критичні обмеження в хуки PreToolUse, щоб уникнути збоїв моделі.
TL;DR
- 01CLAUDE.md працює як рекомендаційний контекст, а не як непорушне системне обмеження.
- 02Тримайте файли правил коротшими за 200 рядків, щоб уникнути деградації контексту.
- 03Реалізуйте критичні обмеження на кшталт захисту ключів доступу через хуки PreToolUse.
Ключові факти
- Рекомендований розмір CLAUDE.md
- < 200 рядків
- Зареєстровані тікети щодо ігнорування
- 124 GitHub issues
- Позиція ін'єкції CLAUDE.md
- Повідомлення користувача після системного промпту
Контекстні підказки проти детерміністичного контролю
Claude Code розглядає CLAUDE.md як додатковий контекст, а не як жорстку конфігурацію. Вміст файлу передається як повідомлення користувача після системного промпту. Якщо вказівки проєкту суперечать внутрішнім директивам CLI (наприклад, шляхам збереження планів у plan mode), модель може проігнорувати правила репозиторію. Команда /context дозволяє перевірити завантаження файлів пам'яті, проте факт завантаження не гарантує виконання.
Деградація уваги та ліміти обсягу
Практичні спостереження демонструють зниження дотримання правил у міру зростання обсягу документа. Файли CLAUDE.md довжиною понад 200 рядків суттєво погіршують якість слідування інструкціям. Абстрактні побажання на кшталт «пиши простіше» не дають жодного результату. Додавання слів великими літерами чи посилення формулювань також не захищають від збоїв: аналіз історії git показує регулярні порушення навіть специфічних правил генерації часових міток.
Перехоплення викликів через хуки PreToolUse
Критичні інваріанти слід реалізовувати через хуки, а не через промпти. Хук PreToolUse перехоплює виклик інструменту до його запуску і перевіряє параметри кодом. Наприклад, утиліта slopguard перевіряє виклики bash на наявність спроб додати файл .env до коміту, блокує дію та змушує агента внести зміни до .gitignore.
Спробуй за 2 хвилини
echo '{"tool_name":"Bash","tool_input":{"command":"git add .env && git commit -m wip"}}' | node -p "JSON.parse(require('fs').readFileSync(0)).hookSpecificOutput.permissionDecisionReason"bash
✓ Коли використовувати
- Використовуйте хуки, коли потрібно гарантовано заблокувати коміт секретів чи API-ключів.
- Використовуйте хуки, якщо перед кожним комітом обов'язково мають виконуватися лінтери чи тести.
✕ Коли НЕ варто
- Не використовуйте хуки для суб'єктивних побажань щодо стилю чи детальності відповідей.
- Не перевантажуйте хуками ранні прототипи, де швидкість ітерацій важливіша за суворий лінтинг.
Що зробити сьогодні
- Виконайте /context у Claude Code, щоб перевірити список активних файлів пам'яті.
- Скоротіть CLAUDE.md до менш ніж 200 рядків, прибравши розмиті стилістичні побажання.
- Налаштуйте скрипт хука PreToolUse для програмного перехоплення та блокування небажаних Bash-команд.