Дата: 2026-02-19
Проблема: Claude игнорирует L1-L4 протокол и создаёт файлы без подтверждения
Найдено: Output Styles с флагом keep-coding-instructions: true ДОБАВЛЯЮТ кастомные инструкции К базовым, создавая КОНФЛИКТ.
Механизм:
Base Claude Code: "NEVER create files unless absolutely necessary"
+
SafeDialog.md: "показывай план, жди подтверждения (L1-L4)"
=
РЕЗУЛЬТАТ: Base побеждает → Claude создаёт БЕЗ подтверждения
Почему Base побеждает:
- Императив ("NEVER") > процедура ("показывай план")
- Общее правило > уточнение для подмножества
- Идёт первым в system prompt → воспринимается как основа
keep-coding-instructions: falseФайлы:
- .claude/output-styles/SafeDialog.md
- .claude/output-styles/Coder.md
- .claude/output-styles/Architect.md
Изменение:
-keep-coding-instructions: true
+keep-coding-instructions: false
+ Переписать Output Styles с явным переопределением:
## ⚠️ OVERRIDES (these rules REPLACE base instructions)
1. IGNORE "Never give time estimates" → ALWAYS provide time (AI × 10)
2. IGNORE "NEVER create files" → ALWAYS show plan + wait confirmation
3. L1-L4 PROTOCOL: [полный протокол]
## СОХРАНЁННЫЕ из базовых (полезные):
- Professional objectivity (без эмоций)
- Git Safety Protocol (NEVER amend, NEVER force push)
- Tool usage (Read вместо cat, Edit вместо sed)
Оценка времени: 2 часа
Вероятность успеха: 85%
Суть: Написать wrapper на Python с полным контролем system prompt.
Файл: system/cli/claude-persistent.py (уже создан)
Преимущества:
- ✅ 100% контроль над system prompt
- ✅ compaction_control сохраняет инструкции
- ✅ НЕ зависит от конфликтов в Claude Code CLI
Недостатки:
- ⚠️ Требует реализовать все инструменты вручную
- ⚠️ Трудозатратно (8 часов)
LAYER 1: Base System Prompt (Anthropic) ← ВЫСШИЙ приоритет
↓
LAYER 2: --append-system-prompt (CLI flag) ← Высокий (теряется после compact)
↓
LAYER 3: Output Styles (.claude/output-styles/) ← Высокий (переживает compact)
↓
LAYER 4: SessionStart hook (additionalContext) ← Средний (context reminder)
↓
LAYER 5: CLAUDE.md (claudeMd) ← НИЗКИЙ (сжимается при compact)
keep-coding-instructionsЧто делает:
- true → Output Style ДОБАВЛЯЕТСЯ к базовым инструкциям
- false → Output Style ЗАМЕНЯЕТ базовые инструкции
Текущее состояние: ВСЕ Output Styles имеют true → конфликт.
| Дата | Попытка | Результат |
|---|---|---|
| 2026-01-09 | "OVERRIDE" в CLAUDE.md | ❌ Не сработало (низкий приоритет) |
| 2026-02-17 | SessionStart hook | ⚠️ Частично (только context, не system prompt) |
| 2025-11-14 | Открыть все permissions | ❌ Не помогло (это не Protocol) |
Вывод: Все попытки работали с контекстом, а не с system prompt.
Прочитать полное исследование: RESEARCH.md
Выбрать вариант:
- Вариант 1 (рекомендуется): 2 часа, 85% успеха
- Вариант 6 (альтернатива): 8 часов, 100% успеха
Реализовать:
- Изменить keep-coding-instructions: false
- Переписать Output Styles с явными OVERRIDES
- Тестировать: попросить создать файл → должен показать план
Проверить результат:
bash
/output-style SafeDialog
→ "создай файл test.md"
→ ОЖИДАЕТСЯ: план + подтверждение
→ БЫЛО: создавал сразу
Статус: ✅ Исследование завершено, решение найдено
Автор: Claude Sonnet 4.5
Дата: 2026-02-19