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

Что делает 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__*)
Установка и использование
Установите с помощью: 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
👀 Смотрите также

GitVelocity: Анализ 50 тысяч PR с помощью ИИ выявляет взаимосвязь со сложностью кода
GitVelocity использует Claude для оценки объединённых pull request'ов по шкале от 0 до 100 по шести параметрам: масштаб, архитектура, реализация, риск, качество и производительность/безопасность. Проанализировав более 50 000 PR в TypeScript, Python, Rust, Go, Java и Elixir, команда обнаружила удивительные закономерности относительно размера PR, покрытия тестами и внедрения ИИ.

Клукс: Постоянная среда выполнения хуков для Claude Code
Clooks — это постоянный HTTP-демон, который обрабатывает диспетчеризацию хуков Claude Code без создания новых процессов, сокращая задержку с ~34,6 мс до ~0,31 мс на вызов. Он включает автоматическую миграцию, обработчики LLM с шаблонами промптов, разрешение зависимостей и упаковку плагинов.

АгентЛенс: Инструмент наблюдаемости для многозадачных AI-процессов
AgentLens обеспечивает унифицированное отслеживание для Ollama, vLLM, Anthropic и OpenAI с учётом затрат, сервер MCP для запроса статистики из Claude Code и CLI для быстрых проверок. Это самодостаточное решение, работающее локально через Docker.

Sylve: Управляющая плоскость FreeBSD для виртуализации, контейнеризации и систем хранения данных
Sylve — это управляющая плоскость для FreeBSD с лицензией BSD-2, которая обеспечивает единый контроль над виртуальными машинами Bhyve, контейнерами FreeBSD Jails, хранилищем ZFS и сетевыми настройками. Она использует модель консенсуса RAFT для кластеризации и включает управление общими ресурсами Samba с автоматизацией снимков ZFS.