Skip to content

v2.5.0 — COMMIT_POLICY Protection System

Choose a tag to compare

@alexeykrol alexeykrol released this 17 Jan 20:58
· 66 commits to main since this release

🔒 v2.5.0 — COMMIT_POLICY Protection System

BREAKING CHANGE: Completion Protocol Step 4 полностью переписан

🚨 Проблема безопасности

До v2.5.0:

  • git add -A коммитил ВСЁ без разбора
  • Риск утечки:
    • dialog/ с упоминаниями credentials в разговорах
    • notes/ с личными заметками, бизнес-планами
    • WIP_* файлы с недоделанным кодом
    • secrets/, *.key, .env.local
    • Debug логи с чувствительными данными

Результат: Конфиденциальные данные могли попасть в публичный GitHub

✅ Решение — Трехуровневая защита

1. COMMIT_POLICY.md (человеко-читаемый документ)

Категории файлов:

❌ НИКОГДА не коммитим:

  • notes/, scratch/, experiments/
  • WIP_*, INTERNAL_*, DRAFT_*
  • dialog/ (КРИТИЧНО! Могут быть credentials!)
  • .claude/logs/, *.debug.log
  • secrets/, credentials/, *.key, *.pem
  • *.local.*, .env.local

✅ ВСЕГДА коммитим:

  • src/, lib/, tests/
  • README.md, CHANGELOG.md, package.json
  • Документация, конфиги проекта

⚠️ СПРОСИТЬ пользователя:

  • Новые папки (не из списков выше)
  • Файлы с password, api-key, secret в имени
  • Файлы >1000 строк

2. Completion Protocol Step 4 (Claude AI проверка)

БЫЛО (опасно!):
```bash
git add -A && git commit -m "..."
```

СТАЛО (безопасно):
```bash

1. Читаем COMMIT_POLICY.md

2. Анализируем каждый файл:

- НИКОГДА паттерны → блокируем

- ВСЕГДА паттерны → одобряем

- СПРОСИТЬ паттерны → спрашиваем пользователя

3. Стейджим ТОЛЬКО одобренные файлы:

git add src/ tests/ README.md ...

4. Показываем final status для проверки

5. Спрашиваем подтверждение перед коммитом

```

3. Pre-commit Git Hook (последняя линия защиты)

Даже если Claude AI ошибся — git hook блокирует коммит:
```bash
❌ COMMIT BLOCKED by COMMIT_POLICY.md
Forbidden files detected:
• dialog/session-2025-01-17.md
• notes/business-plan.md
• WIP_api_keys.txt
```

Автоматическая установка: Cold Start Protocol Step 0.6

📦 Что нового

Новые файлы:

  • .claude/COMMIT_POLICY.md — policy документ (редактируемый!)
  • .claude/scripts/pre-commit-hook.sh — git hook
  • .claude/scripts/install-git-hooks.sh — установщик хуков
  • migration/templates/COMMIT_POLICY.template.md — шаблон для новых проектов

Обновленные протоколы:

  • .claude/protocols/completion.md — Step 4 полностью переписан
  • .claude/protocols/cold-start.md — Step 0.6 добавлен (установка hooks)

Синхронизация:

  • .gitignore — синхронизирован с COMMIT_POLICY паттернами

🔄 Миграция для существующих проектов

Если уже используете Framework v2.x:

  1. Фреймворк автоматически обновится на следующем start
  2. Вручную добавьте .claude/COMMIT_POLICY.md:
    ```bash
    curl -O https://raw.githubusercontent.com/alexeykrol/claude-code-starter/main/.claude/COMMIT_POLICY.md
    mv COMMIT_POLICY.md .claude/
    ```
  3. Адаптируйте под свой проект (добавьте свои паттерны)
  4. Git hooks установятся автоматически на следующем start

⚠️ BREAKING CHANGES

Completion Protocol Step 4:

  • УДАЛЕНО: git add -A (небезопасно!)
  • ДОБАВЛЕНО: Policy-based selective staging

Для пользователей это означает:

  • Claude теперь спросит перед коммитом спорных файлов
  • Нужно явно одобрить что коммитить
  • Больше контроля = больше безопасности

📖 Документация

Читайте:

  • .claude/COMMIT_POLICY.md — полный список правил
  • .claude/protocols/completion.md — новый Step 4

Настройте под себя:

  • Добавьте свои паттерны в COMMIT_POLICY.md
  • Синхронизируйте с .gitignore

🙏 Благодарности

Спасибо пользователям, которые помогли выявить эту критическую проблему безопасности!


Полный changelog: CHANGELOG.md