nah: Контекстно-зависимый охранник разрешений для Claude Code

✍️ OpenClawRadar📅 Опубликовано: 12 марта 2026 г.🔗 Source
nah: Контекстно-зависимый охранник разрешений для Claude Code
Ad

Что делает nah

nah — это защитник разрешений на основе Python, который находится между Claude Code и выполнением инструментов. Он устраняет ограничения бинарной системы разрешений Claude (разрешить или запретить), добавляя контекстно-зависимое принятие решений. Инструмент перехватывает каждый вызов инструмента перед его выполнением и классифицирует его на основе того, что он фактически делает.

Как это работает

Каждый вызов инструмента сначала попадает в детерминированный структурный классификатор (без использования LLM), который работает за миллисекунды. Классификатор сопоставляет команды с типами действий, такими как:

  • filesystem_read
  • filesystem_delete
  • package_run
  • db_write
  • git_history_rewrite
  • lang_exec

Для каждого типа действия nah применяет одну из четырёх политик: разрешить, контекст (зависит от цели), спросить или заблокировать. Одна и та же команда получает разные решения в зависимости от контекста:

  • rm dist/bundle.js (внутри проекта) → Разрешить
  • rm ~/.bashrc (вне проекта) → Спросить
  • git push --force → Спросить (перезапись истории)
  • base64 -d | bash → Заблокировать (декодирование + выполнение через пайп)

Что он защищает

nah проверяет различные аспекты в зависимости от инструмента:

  • Bash: Структурная классификация команд — тип действия, состав пайпов, раскрытие оболочки
  • Read: Обнаружение чувствительных путей (~/.ssh, ~/.aws, .env, ...)
  • Write: Проверка пути + границы проекта + проверка содержимого (секреты, эксфильтрация, разрушительные нагрузки)
  • Edit: Проверка пути + границы проекта + проверка содержимого заменяемой строки
  • Glob: Защищает сканирование каталогов в чувствительных местах
  • Grep: Перехватывает шаблоны поиска учётных данных вне проекта
  • MCP tools: Общая классификация для сторонних серверов инструментов (mcp__*)
Ad

Установка и использование

Установите с помощью: pip install nah && nah install

Удалите с помощью: nah uninstall && pip uninstall nah

Инструмент работает из коробки с разумными настройками по умолчанию и не требует конфигурации. Вы можете запустить демонстрацию безопасности внутри Claude Code с помощью: /nah-demo, которая проходит через 25 реальных случаев по 8 категориям угроз, включая удалённое выполнение кода, эксфильтрацию данных и замаскированные команды.

Параметры конфигурации

Когда вы хотите настроить поведение, вы можете сконфигурировать через:

  • ~/.config/nah/config.yaml (глобально)
  • .nah.yaml (для каждого проекта, может только ужесточить разрешения)

Пример конфигурации:

actions:
  filesystem_delete: ask  # всегда подтверждать удаления
  git_history_rewrite: block  # никогда не разрешать принудительную отправку
  lang_exec: allow  # доверять встроенным скриптам

sensitive_paths: ~/.kube: ask ~/Documents/taxes: block

Опциональный слой LLM

Для команд, которые детерминированный классификатор не может разрешить, nah может опционально проконсультироваться с LLM. Процесс: Вызов инструмента → nah (детерминированный) → LLM (опционально) → Разрешения Claude Code → выполнение. Детерминированный слой всегда запускается первым — LLM разрешает только оставшиеся решения "спросить". Если LLM не настроена или недоступна, решение остаётся "спросить", и пользователю предлагается выбор. Поддерживаемые провайдеры включают Ollama, OpenRouter, OpenAI, Anthropic и Snowflake Cortex.

Важные примечания

Разработчики специально предупреждают об использовании флага --dangerously-skip-permissions в Claude Code. В режиме обхода хуки срабатывают асинхронно — команды выполняются до того, как nah может их заблокировать. Вместо этого они рекомендуют разрешать такие инструменты, как Bash, Read, Glob и Grep, и позволять nah их защищать.

📖 Прочитать полный источник: HN AI Agents

Ad

👀 Смотрите также

Flue: TypeScript фреймворк для создания автономных агентов кодирования
Инструменты

Flue: TypeScript фреймворк для создания автономных агентов кодирования

Flue — это TypeScript-фреймворк, предоставляющий программируемую обвязку для создания автономных агентов с поддержкой навыков, сессий, выполнения команд в песочнице и встроенной виртуальной песочницы. Он может заменить такие инструменты, как Dosu, Greptile, CodeRabbit, Devin и Claude Code, с помощью пользовательской логики агентов.

OpenClawRadar
Ghostbar: ~5MB нативный macOS Swift AI клиент, который скрывается от демонстрации экрана
Инструменты

Ghostbar: ~5MB нативный macOS Swift AI клиент, который скрывается от демонстрации экрана

Ghostbar — это нативный Swift-клиент AI для строки меню macOS (~5 МБ), который использует window.sharingType = .none, чтобы стать невидимым для программ записи экрана. Работает с Ollama, vLLM, llama.cpp и любым бэкендом, совместимым с OpenAI.

OpenClawRadar
TEMM1E v3.1.0: ИИ-агент, который самообучается с помощью взаимодействия с пользователями
Инструменты

TEMM1E v3.1.0: ИИ-агент, который самообучается с помощью взаимодействия с пользователями

TEMM1E v3.1.0 представляет Eigen-Tune — систему, которая фиксирует взаимодействия с LLM в качестве обучающих данных, оценивает качество на основе поведения пользователей и дообучает локальные модели через LoRA без дополнительных затрат на LLM. Протестировано на Apple M2: после 10 диалогов система исправила конвертацию температуры с 72°F = '150°C' на '21.2°C'.

OpenClawRadar
Tatu: Открытый слой безопасности для Claude, блокирующий секреты и деструктивные команды в блоках кода
Инструменты

Tatu: Открытый слой безопасности для Claude, блокирующий секреты и деструктивные команды в блоках кода

Tatu — это система перехвата с открытым исходным кодом, которая в реальном времени перехватывает действия Claude Code, чтобы блокировать утечку секретов, помечать персональные данные и отклонять деструктивные команды до их выполнения. Установка осуществляется через pip/pipx командой 'tatu-hook init' для включения режима аудита.

OpenClawRadar