Назад к обновлениям
New releaseJul 25, 2026

node9-proxy v1.65.1

Уровень безопасности выполнения для эры агентов. Обеспечивает детерминированное управление «Sudo» и журналы аудита для автономных ИИ-агентов.

Поделиться

🛡️ Node9

Что на самом деле сделал ваш ИИ-агент? Узнайте.

npm version monthly downloads License: Apache 2.0 Documentation OpenSSF Best Practices node9 self-scanned

Node9 располагается между вашим ИИ-агентом и инструментами, которые он может использовать, — обнаруживайте, что он уже делал, защищайтесь от рискованных действий в реальном времени и просматривайте, что произошло за любой период времени.

Работает с Claude Code · Codex CLI · Antigravity (agy) · GitHub Copilot CLI · Gemini CLI · Cursor · Windsurf · VSCode · Claude Desktop · Opencode · Pi · Hermes Agent · любым MCP-сервером.

Что делает Node9

  • 🔍 Обнаружение — сканирует каждую прошлую ИИ-сессию на предмет утечек учётных данных, циклов агентов, заблокированных операций и всех секретов на диске, к которым агент может получить доступ прямо сейчас
  • 🛡 Защита — проверяет или блокирует рискованные команды до их выполнения — rm -rf, git push --force, DROP TABLE, чтение учётных данных, curl | bash, утечки ключей AWS/GitHub/Stripe
  • 📊 Просмотр — отчёт за выбранный период (сегодня / неделя / месяц / 90 дней) — стоимость на агента, самые используемые инструменты, сработавшие щиты, радиус поражения

Ретроспективное сканирование

Это моя собственная машина — 90 дней разработки Node9. Оценка 25/100, 5 файлов с учётными данными, к которым ИИ-агент может получить доступ прямо сейчас.```bash npx node9-ai scan # before installation, runs in ~10s, nothing uploads node9 scan # after installation, same output

<p align="center">
  Node9 scan scorecard
</p>

## Табель оценки уровня безопасности

`node9 posture` оценивает, насколько эта машина открыта для скомпрометированного агента — изоляция, исходящий трафик, секреты на диске, цепочка поставок, привилегии — и выдаёт точную команду для устранения каждой найденной проблемы.```bash
node9 posture          # scorecard with the #1 risk and a fix for every finding
node9 posture --ship   # send a redacted snapshot to your node9 dashboard (fleet view)

Находки сгруппированы по тому, кто может их исправить: 🔒 те, которые снижает node9 (просто запустите команду), и 🧱 те, которые можете исправить только вы. Каждая содержит простое объяснение «что / почему / кто» и реальное решение — например, находка «агент запускается без песочницы на хосте» прямо указывает на node9 sandbox run (ниже).```text 🛡️ Node9 Posture — agent on this host Score: 100/100 (Good) 2 advisories below don't affect the score — OS-level exposure, yours to weigh.

🟢 node9 is already protecting you ✅ Secrets node9 DLP is blocking this ✅ Egress node9 egress is approval-gating this ✅ Approval gate node9 is blocking this ✅ Privilege node9 is approval-gating this

🔒 node9 reduces these — run the command, the rest is yours ⚠️ Isolation Running directly on the host — no container The agent runs loose on your whole machine, not in a sandbox. → node9 sandbox run — jail it: kernel egress + scoped mounts + node9 inside → node9 shield enable project-jail — or shrink the blast radius, keep host access ⚠️ Network exposure 4 services on 0.0.0.0 (node :3000/:4000, PostgreSQL :5432, Redis :6379) Reachable from your whole network, not just this laptop. → node9 shield enable postgres|redis — node9 blocks DROP TABLE / FLUSHALL → bind to 127.0.0.1 / firewall the port (your part)

✅ Supply chain no issues found ✅ Coverage no issues found

Track this across your fleet & keep it green → node9.ai

## Сканирование репозитория — безопасность агент-CI

`node9 scan-repo` проверяет любой репозиторий (или локальную папку) на предмет того, как ИИ-агент, подключённый к GitHub Actions, может быть **захвачен посторонним лицом** — инъекционные workflow, секреты, доступные агенту, непривязанные MCP-серверы, излишне широкая конфигурация агента и отравленные файлы инструкций. Только статический анализ и разбор: он читает только закоммиченную конфигурацию и никогда не выполняет код репозитория. Для публичных репозиториев установка или токен не требуются.```bash
npx node9-ai scan-repo <owner/repo>   # any public repo, no install
node9 scan-repo .                      # a local checkout — no network
node9 scan-repo <owner/repo> --json    # machine-readable

[No input content provided. Please paste the Markdown chunk to translate.]```text 🛡️ node9 scan-repo · node9-ai/agent-security-demo · ⚠️ agent-security risk found inspected 2 config file(s), 2 finding(s)

🔴 CRITICAL Injectable agent workflow — untrusted input reaches a tool-using agent with secrets .github/workflows/vulnerable-example.yml · CI-2 • runs with base-repo secrets (pull_request_target) • checks out the untrusted PR head into the workspace root • allowed_non_write_users: "*" — any user can trigger the agent • no effective actor gate

🔴 CRITICAL Exfiltratable secrets reachable by an injectable agent .github/workflows/vulnerable-example.yml · CI-4 • agent has arbitrary shell (bare Bash) → can read env and exfiltrate

Что проверяется:

| Проверка | Что выявляет                                                                 |
| -------- | ---------------------------------------------------------------------------- |
| **CI-1** | закоммиченная конфигурация агента, заранее разрешающая широкие инструменты или запускающая удалённые хуки |
| **CI-2** | инъекционные рабочие процессы агента — посторонний может запустить агента и перехватить его |
| **CI-3** | непривязанные к версии / `@latest` MCP-серверы или встроенные учётные данные (цепочка поставок) |
| **CI-4** | секреты, которые внедрённый агент мог бы выкрасть |
| **CI-6** | отравленные или опасные инструкции в `CLAUDE.md` / `AGENTS.md` / навыках |

**Блокируйте каждый PR** — тот же движок, что и в GitHub Action, поэтому взламываемая конфигурация не сможет попасть в основную ветку:```yaml
# .github/workflows/agent-security.yml
- uses: node9-ai/node9-proxy@v2
  with:
    fail-on: high # or 'never' to just comment

Marketplace: node9 Agent Security

Используете его? Добавьте бейдж scanned by node9 в свой README.

Мониторинг в реальном времени

Node9 monitor dashboard

node9 monitor открывает интерактивную терминальную панель с двумя представлениями:

  • [1] Realtime — активность в реальном времени, одобрения, оповещения безопасности, текущий показатель риска
  • [2] Report — сводка за период: стоимость, основные инструменты, сработавшие щиты, радиус поражения

Отчёт

Нажмите [2] в мониторе для сводки за период. Переключайте окно с помощью [T]oday · [W]eek · [M]onth · [N]inety — те же панели, что и при сканировании выше, на основе вашего журнала аудита после установки.

Node9 monitor [2] Report

```bash node9 monitor # press [2] for Report view node9 report --period 7d # CLI form, no TUI ``` ## Установка```bash # macOS / Linux brew tap node9-ai/node9 && brew install node9

or via npm (any platform)

npm install -g node9-ai

I need the actual content of chunk 17 to translate it. Please provide the Markdown text you want translated.```bash
node9 init       # auto-wires all detected agents + MCP servers
node9 login      # connect this machine to your workspace (approve it in the browser)
node9 doctor     # verify everything is wired and reporting

Требуется Node.js 18+.

init сам по себе даёт вам полное локальное применение правил: правила, щиты, DLP и одобрения — всё работает офлайн, на этой машине.

login — это то, что подключает машину к вашей панели управления. Он выводит код, открывает браузер, и вы одобряете машину там; если у вас ещё нет аккаунта, регистрация в процессе возвращает вас к тому же одобрению с кодом без изменений. Пока вы не запустите его, всё применяется локально, но ничего не доходит до Mission Control, поэтому панель управления остаётся пустой.

node9 logout снова отключает машину. Он отзывает ключ этой машины; локальное применение правил продолжает работать.

Щиты — курируемые наборы правил

Каждый щит — это курируемый набор правил для сервиса или домена. Включайте только то, что вам нужно.

ЩитЧто он ловитВключение
project-jailБлокирует чтение ~/.ssh, ~/.aws, .env, учётных данных через Bash и Read toolnode9 shield enable project-jail
bash-safecurl | bash, rm -rf /, перезапись диска, eval удалённогоnode9 shield enable bash-safe
postgresDROP TABLE, TRUNCATE, DROP COLUMN, DELETE без WHEREnode9 shield enable postgres
mongodbdropDatabase, drop(), deleteMany({}), удаление индексовnode9 shield enable mongodb
redisFLUSHALL, FLUSHDB, CONFIG SET на живом сервереnode9 shield enable redis
awsУдаление S3, завершение EC2, изменения IAM, уничтожение RDSnode9 shield enable aws
k8sУдаление namespace, helm uninstall, зачистка ролей кластераnode9 shield enable k8s
dockersystem prune, volume prune, rm -f контейнеровnode9 shield enable docker
githubgh repo delete, удаление удалённых веток, изменения настроекnode9 shield enable github
filesystemchmod 777, запись в /etc/, /boot/, /usr/node9 shield enable filesystem
mcp-tool-gatingнеодобренные MCP-инструменты незаметно активируют новые возможностиnode9 shield enable mcp-tool-gating
node9 shield list # show all shields + status
## Всегда включено — настройка не требуется

- **Git** — перехватывает `git push --force`, `git reset --hard`, `git clean -fd`
- **SQL** — перехватывает `DELETE` / `UPDATE` без `WHERE`, `DROP TABLE`, `TRUNCATE`
- **Shell** — перехватывает `curl | bash`, несанкционированный `sudo`
- **DLP** — помечает ключи AWS, токены GitHub, ключи Stripe, приватные ключи PEM в любых аргументах инструментов, содержимом файлов или конфигурации оболочки (`~/.zshrc`, `~/.bashrc`)
- **Response DLP** — фоновый сканер читает историю переписки Claude и предупреждает вас, если Claude _записал_ секрет в текст своего ответа
- **Проверка навыков** — SHA-256-верификация установленных навыков / плагинов Claude между сеансами

## Промпты на проверку — одобряйте встроенно, в вашем агенте

Когда node9 помечает действие для **проверки** (например, `git push --force`, `DROP TABLE`), промпт одобрения/отклонения отображается **встроенно в переписке агента** — без замороженной сессии, без отдельного терминала, без гонки по таймауту хука. node9 по-прежнему запускает полный оценщик и принимает решение; только _поверхность_ промпта переносится в агента.

- **Включено по умолчанию** для **Claude Code** и **GitHub Copilot CLI** — агентов, чей контракт хуков поддерживает нативный `ask`. Все остальные агенты (Codex, Gemini, Antigravity, Hermes, Cursor, OpenCode, Pi) используют собственный апрувер node9.
- **Управление** через `reviewChannel` в `~/.node9/config.json` (или `--no-ask` в хуке):```jsonc
{
  "settings": {
    "reviewChannel": "ask", // "ask" = inline agent prompt (default) | "approver" = node9's own approver
  },
}
  • Настройки команды: когда настроен облачный/командный утверждающий (approvers.cloud: true), проверки направляются этому утверждающему — node9 не позволит встроенному самостоятельному утверждению обойти маршрутизированное/вторичное утверждение.

Песочница — запуск агента в изолированной среде

Когда наблюдения недостаточно, node9 sandbox запускает агента внутри одноразового контейнера с разрешённым списком исходящих соединений, применяемым на уровне ядра, и ограниченными точками монтирования — при этом хуки node9 управляют и аудируют каждый вызов инструмента внутри бокса. Жёсткий вариант защиты: агент может обращаться только к смонтированной вами папке и достигать разрешённых вами хостов; всё остальное отбрасывается на уровне ядра.```bash cd ~/my-project node9 sandbox new # write node9.sandbox.yaml — what to mount + which hosts to allow node9 sandbox run # build + boot the jailed agent (your project at /workspace) node9 sandbox tail # watch the agent's actions live, from the host

- **Disposable** — контейнер уничтожается при выходе; ваши правки в проекте попадают на реальный диск, больше ничего не сохраняется.
- **Та же политика** — ваши существующие правила shields / egress / approvals действуют внутри бокса, транслируясь в тот же журнал аудита и панель управления.
- **Замыкает цикл безопасности** — запуск переводит индикаторы Isolation / Egress в зелёный статус.

Честный объём (Phase 1): один контейнер, **сначала Claude** (Codex — следующим); агент по-прежнему хранит _собственные_ учётные данные в боксе (egress-стена ограничивает их доступными хостами) — _"агент никогда не владеет секретом"_ — это фаза credential-broker в дорожной карте. Требуется Docker.

## MCP-шлюз

Прозрачно оборачивает любой MCP-сервер. Агент видит тот же сервер — Node9 перехватывает каждый вызов инструмента.```json
{
  "mcpServers": {
    "postgres": {
      "command": "node9",
      "args": ["mcp", "--upstream", "npx -y @modelcontextprotocol/server-postgres postgresql://..."]
    }
  }
}

Или просто запустите node9 init — он автоматически оборачивает ваши существующие MCP-серверы.

🔐 Закрепление MCP-инструментов — защита от rug-pull

MCP-серверы могут изменять определения своих инструментов между сессиями. Скомпрометированный или вредоносный сервер может незаметно добавлять, удалять или изменять инструменты после того, как вы ему впервые доверились — это атака rug pull.

Node9 закрепляет определения инструментов при первом использовании:

  1. Первое подключение — шлюз записывает SHA-256-хэш имени, описания и схемы каждого инструмента
  2. Последующие подключения — хэш сравнивается; если инструменты изменились, сессия помещается в карантин, и все вызовы инструментов блокируются до тех пор, пока человек не проверит и не одобрит изменения
  3. Повреждённое состояние закрепления — отказ в закрытом режиме (блокировка), никогда не происходит молчаливого повторного доверия```bash node9 mcp pin list # show all pinned servers and hashes node9 mcp pin update # remove pin, re-pin on next connection node9 mcp pin reset # clear all pins
</details>

## Другие команды

Помимо трёх команд основного потока выше (`scan` / `monitor` / `report`):

| Команда           | Что показывает                                                       | Когда использовать                        |
| ----------------- | -------------------------------------------------------------------- | ----------------------------------------- |
| `node9 blast`     | Что ИИ-агент может достать прямо сейчас — файлы, учётные данные, env | Первое, что запускать на любой машине     |
| `node9 tail`      | Живой поток каждого вызова инструмента (только текст, без TUI)       | Для передачи в другие инструменты, CI, логи |
| `node9 sessions`  | История сессий с промптом, трассировкой инструментов и стоимостью    | Для просмотра передачи дел или прошлой работы |
| `node9 dlp`       | Находки утечек учётных данных в тексте ответов Claude                | В любое время, когда срабатывает DLP-уведомление на рабочем столе |
| `node9 mask`      | Редактирование открытых секретов в локальных файлах истории сессий   | После DLP-находки — очищает локальный диск |

Плюс **живой HUD** в строке состояния вашего Claude Code:```
🛡 node9 | standard | [bash-safe] | ✅ 12 allowed  🛑 2 blocked  🚨 0 dlp | ~$0.43
📊 claude-opus-4-7 | ctx [████████░░░] 54% | 5h [██░░░░░░░░] 12% | 7d [█░░░░░░░] 7%
🗂 2 CLAUDE.md | 8 rules | 3 MCPs | 4 hooks

Чтение данных — что означают цифры

Node9 выводит сигнал. Вот паттерны, которые стоит знать:

СигналВероятное значение
Would have blocked ≥ 5 за неделюАгент пытается выполнять операции с высоким воздействием; щиты стоит пересмотреть
Одно правило review-git-push >50% находокВаше собственное правило срабатывает как задумано — это не риск, а просто надзор
DLP-находка в инструменте user-promptВы вставили секрет в собственный промпт — ротируйте ключ
Цикл агента ×50+ на одном файлеАгент застрял в цикле правка/тест/исправление — проверьте контекст или замедлите его
Несовпадение пина инструмента MCPСервер изменил свои инструменты — проверьте, прежде чем снова доверять
Предупреждение о большом ответе MCPЭтот сервер раздувает ваше окно контекста на каждый последующий ход
Оповещение Response DLPClaude записал секрет в текст своего ответа — не заблокировано, ротируйте немедленно
DLP-находка в tool-resultClaude прочитал файл, содержащий секрет (.env, учётные данные) — ротируйте ключ и запустите node9 mask
DLP-находка в [Shell]Секрет в открытом виде в ~/.zshrc или ~/.bashrc — каждая ИИ-сессия может его видеть

Разовые сигналы — это норма; устойчивые паттерны — вот на что вы реагируете.

Python SDK — управляйте любым Python-агентом```python

from node9 import configure, protect

configure(agent_name="my-agent", policy="require_approval")

@protect("bash") def run_command(cmd: str) -> str: ...

**[Python SDK →](https://github.com/node9-ai/node9-python)** · **[Пример CI-агента для ревью кода →](https://github.com/node9-ai/node9-pr-agent)**

## Под капотом

- **Scan** читает необработанную историю агентов из `~/.claude/projects/`, `~/.gemini/tmp/`, `~/.gemini/antigravity-*/brain/`, `~/.copilot/session-state/`, `~/.codex/sessions/` — без API-вызовов, полностью офлайн
- **Runtime** перехватывает вызовы инструментов через хуки предварительного выполнения (Claude Code, Codex, Antigravity, GitHub Copilot CLI, Gemini CLI, Opencode, Pi) или через MCP-шлюз (Cursor, Windsurf, VSCode, Claude Desktop). Все решения атомарно попадают в `~/.node9/audit.log`.
- **MCP-шлюз** — это stdio-прокси; перехватывает JSON-RPC `tools/list` + `tools/call`, остальное передаёт дальше
- **Политический движок** использует [mvdan-sh](https://github.com/mvdan/sh) для анализа bash-AST — нейтрализует обфускацию через экранирование обратной косой чертой, подстановку переменных, eval удалённой загрузки
- **Песочница** генерирует Dockerfile + entrypoint, которые создают deny-by-default стену исходящего трафика `ipset`/`iptables`, затем переключаются на непривилегированного агента с демоном и хуками node9 внутри; монтируется только файл учётных данных агента, а не весь ваш `~/.claude`

## Полная документация

Справочник по конфигурации, умные правила, правила с состоянием, доверенные хосты, режимы одобрения, справочник по CLI — на **[node9.ai/docs](https://node9.ai/docs)**.

## Связанные проекты

- **[node9-python](https://github.com/node9-ai/node9-python)** — Python SDK
- **[node9-pr-agent](https://github.com/node9-ai/node9-pr-agent)** — GitHub Action, который проверяет PR через Node9

## Для предприятий

**Node9 Pro** добавляет блокировку управления, SAML/SSO, централизованный экспорт аудита и развёртывание в VPC. Подробнее на [node9.ai](https://node9.ai).

## Лицензия

Apache-2.0

<p align="center">
  <sub>Сделано с ☕ и здоровой паранойей.</sub>
</p>

Категории