# Принцип: нет жестких запретов в коде ## Требование В проекте не должно быть hardcoded-запретов вида: ```text if tool == "command.run": deny if sql contains "DELETE": deny if action == "filesystem": deny ``` Так делать нельзя. ## Правильный подход Код должен классифицировать действие и спросить policy engine. ```text action → classify → policy.check → decision ``` Policy decision: ```json { "decision": "allow | confirm | manual | disabled_by_config", "reason": "string", "requires_confirmation": true, "preview": {} } ``` ## Пример Команда: ```text file.write D:/Projects/test.txt ``` Tool возвращает metadata: ```json { "risk_level": "write", "resource": "filesystem", "preview_available": true } ``` Policy проекта: ```json { "filesystem": { "mode": "confirm" } } ``` Результат: ```text Нужно подтверждение. ``` Если policy: ```json { "filesystem": { "mode": "full_auto" } } ``` Результат: ```text Выполнить сразу. ``` ## Режимы ```text full_auto — выполнять без подтверждения confirm — спросить подтверждение manual — показать план и ждать ручного запуска disabled — отключено настройкой ``` `disabled` допустим только как настройка проекта, а не как зашитый запрет. ## Зачем Пользователь сам выбирает уровень риска. Система не должна становиться бесполезной из-за того, что разработчик заранее запретил все потенциально опасные действия.