업데이트로 돌아가기
New releaseJul 25, 2026

node9-proxy v1.65.0

에이전틱 시대를 위한 실행 보안 계층입니다. 자율 AI 에이전트에 대해 결정론적 "Sudo" 거버넌스와 감사 로그를 제공합니다.

공유

🛡️ Node9

당신의 AI 에이전트가 실제로 무엇을 했는지 알아보세요.

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

Node9는 AI 에이전트와 에이전트가 사용할 수 있는 도구 사이에 위치합니다 — 에이전트가 이미 수행한 작업을 발견하고, 위험한 작업을 실시간으로 보호하며, 특정 기간 동안 발생한 일을 검토할 수 있습니다.

Claude Code · Codex CLI · Antigravity (agy) · GitHub Copilot CLI · Gemini CLI · Cursor · Windsurf · VSCode · Claude Desktop · Opencode · Pi · Hermes Agent · 모든 MCP 서버와 호환됩니다.

Node9이 하는 일

  • 🔍 발견 — 과거 모든 AI 세션을 스캔하여 자격 증명 유출, 에이전트 루프, 차단된 작업, 그리고 에이전트가 지금 바로 접근할 수 있는 디스크의 모든 비밀을 찾아냅니다
  • 🛡 보호 — 실행 전에 위험한 명령을 검토하거나 차단합니다 — rm -rf, git push --force, DROP TABLE, 자격 증명 읽기, curl | bash, AWS/GitHub/Stripe 키 유출
  • 📊 검토 — 기간별 보고서 (오늘 / 주간 / 월간 / 90일) — 에이전트별 비용, 상위 도구, 발동된 실드, 피해 범위

회고적 스캔

이것은 제 개인 머신입니다 — Node9을 개발하는 동안의 90일입니다. 점수 25/100, AI 에이전트가 지금 바로 접근할 수 있는 자격 증명 파일 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이 줄여주는 항목(명령어만 실행하면 됨)과 🧱 사용자만 수정할 수 있는 항목입니다. 각 항목에는 평이한 언어로 된 무엇(what) / 왜(why) / 누구(who)와 실제 해결 방법이 포함됩니다. 예를 들어 "에이전트가 호스트에서 샌드박스 없이 실행됨" 발견 사항은 바로 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

## 저장소 스캔 — agent-CI 보안

`node9 scan-repo`는 GitHub Actions에 연결된 AI 에이전트가 **외부인에 의해 하이재킹**될 수 있는 방법(주입 가능한 워크플로우, 에이전트가 접근 가능한 비밀, 고정되지 않은 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

I need the actual content of chunk 9 to translate it. Please provide the Markdown text you want translated from English to Korean.```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

실행 중이신가요? README에 **scanned by node9 배지**를 추가하세요.

실시간 모니터링

Node9 모니터 대시보드

node9 monitor는 두 가지 보기가 있는 대화형 터미널 대시보드를 엽니다:

  • [1] 실시간 — 실시간 활동, 승인, 보안 경고, 현재 위험 점수
  • [2] 보고서 — 기간 창 요약: 비용, 주요 도구, 발사된 실드, 폭발 반경

보고서

모니터에서 [2]를 눌러 기간 창 요약을 확인하세요. [T]oday · [W]eek · [M]onth · [N]inety로 창을 전환할 수 있습니다 — 위의 스캔과 동일한 패널로, 설치 후 감사 로그를 기반으로 표시됩니다.

Node9 모니터 [2] 보고서

```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'd like translated from English to Korean.```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-jailBash 및 Read 도구를 통한 ~/.ssh, ~/.aws, .env, 자격 증명 읽기 차단node9 shield enable project-jail
bash-safecurl | bash, rm -rf /, 디스크 덮어쓰기, 원격 evalnode9 shield enable bash-safe
postgresDROP TABLE, TRUNCATE, DROP COLUMN, WHERE 없는 DELETEnode9 shield enable postgres
mongodbdropDatabase, drop(), deleteMany({}), 인덱스 삭제node9 shield enable mongodb
redis라이브 서버에서의 FLUSHALL, FLUSHDB, CONFIG SETnode9 shield enable redis
awsS3 삭제, EC2 종료, IAM 변경, RDS 파괴node9 shield enable aws
k8s네임스페이스 삭제, 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** — `WHERE` 없는 `DELETE` / `UPDATE`, `DROP TABLE`, `TRUNCATE` 감지
- **Shell** — `curl | bash`, 승인되지 않은 `sudo` 감지
- **DLP** — 모든 도구 인수, 파일 내용 또는 셸 설정(`~/.zshrc`, `~/.bashrc`)에서 AWS 키, GitHub 토큰, Stripe 키, PEM 개인 키 플래그 지정
- **응답 DLP** — 백그라운드 스캐너가 Claude의 대화 기록을 읽고 Claude가 응답 텍스트에 비밀을 _작성_한 경우 경고
- **스킬 고정** — 세션 간 설치된 Claude 스킬/플러그인의 SHA-256 검증

## 검토 프롬프트 — 에이전트에서 인라인으로 승인

node9가 작업을 **검토** 대상으로 플래그 지정하면(예: `git push --force`, `DROP TABLE`), 승인/거부 프롬프트가 **에이전트 대화에 인라인으로** 렌더링됩니다 — 세션 동결 없음, 별도 터미널 없음, 훅 타임아웃 경쟁 없음. node9는 여전히 전체 평가기를 실행하고 결정을 내립니다. 프롬프트 _표면_만 에이전트로 이동할 뿐입니다.

- **Claude Code** 및 **GitHub Copilot CLI**에서 **기본적으로 켜짐** — 훅 계약이 기본 `ask`를 지원하는 에이전트입니다. 다른 모든 에이전트(Codex, Gemini, Antigravity, Hermes, Cursor, OpenCode, Pi)는 node9 자체 승인기를 사용합니다.
- **제어 방법** — `~/.node9/config.json`의 `reviewChannel`(또는 훅의 `--no-ask`):```jsonc
{
  "settings": {
    "reviewChannel": "ask", // "ask" = inline agent prompt (default) | "approver" = node9's own approver
  },
}
  • 팀 설정: 클라우드/팀 승인자가 구성된 경우(approvers.cloud: true), 리뷰는 해당 승인자에게 라우팅됩니다. node9는 인라인 자체 승인이 라우팅/2차 승인을 우회하는 것을 허용하지 않습니다.

샌드박스 — 감옥에서 에이전트 실행

감시만으로 부족할 때, 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 규칙 / 승인 프로세스가 박스 내부에도 적용되며, 동일한 감사 로그와 대시보드로 스트리밍됩니다.
- **포스처 루프를 닫음** — 실행하면 Isolation / Egress 발견 항목이 녹색으로 전환됩니다.

정직한 범위(Phase 1): 단일 컨테이너, **Claude 우선**(Codex는 다음 단계). 에이전트는 여전히 박스 내부에서 _자체_ 자격 증명을 보유합니다(egress 벽이 이를 허용된 호스트로 제한). _"에이전트가 비밀을 보유하지 않음"_은 로드맵의 자격 증명 브로커 단계입니다. Docker 필요.

## MCP 게이트웨이

모든 MCP 서버를 투명하게 래핑합니다. 에이전트는 동일한 서버를 보게 되며, Node9가 모든 도구 호출을 가로챕니다.```json
{
  "mcpServers": {
    "postgres": {
      "command": "node9",
      "args": ["mcp", "--upstream", "npx -y @modelcontextprotocol/server-postgres postgresql://..."]
    }
  }
}

아니면 그냥 node9 init을 실행하세요 — 기존 MCP 서버를 자동으로 감싸줍니다.

🔐 MCP 도구 고정 — 러그풀 방어

MCP 서버는 세션 간에 도구 정의를 변경할 수 있습니다. 손상되었거나 악의적인 서버는 처음 신뢰한 후 조용히 도구를 추가, 제거 또는 수정할 수 있습니다 — 이를 러그 풀 공격이라고 합니다.

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`    | AI 에이전트가 지금 접근할 수 있는 것 — 파일, 자격 증명, 환경 변수 | 모든 머신에서 가장 먼저 실행                |
| `node9 tail`     | 모든 도구 호출의 실시간 스트림(텍스트 전용, TUI 없음)          | 다른 도구로 파이프, CI, 로그에 사용         |
| `node9 sessions` | 프롬프트, 도구 추적, 비용이 포함된 세션 기록                  | 핸드오프 또는 과거 작업 검토 시             |
| `node9 dlp`      | Claude 응답 텍스트에서 자격 증명 유출 발견 결과               | DLP 데스크톱 알림이 발생할 때마다           |
| `node9 mask`     | 로컬 세션 기록 파일에서 일반 텍스트 비밀번호를 삭제            | DLP 발견 후 — 로컬 디스크 정리              |

또한 Claude Code 상태 표시줄에 **실시간 HUD**가 있습니다:```
🛡 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% 초과자체 규칙이 의도대로 작동 중입니다. 위험이 아니라 감독일 뿐입니다
user-prompt 도구의 DLP 발견 항목프롬프트에 비밀을 붙여넣었습니다. 키를 교체하세요
같은 파일에서 Agent Loop ×50+에이전트가 편집/테스트/수정 주기에 갇혔습니다. 컨텍스트를 확인하거나 속도를 늦추세요
MCP 도구 핀 불일치서버가 도구를 변경했습니다. 다시 신뢰하기 전에 검토하세요
대용량 MCP 응답 경고해당 서버가 이후 모든 턴에서 컨텍스트 창을 부풀리고 있습니다
Response DLP 경고Claude가 응답 텍스트에 비밀을 작성했습니다. 차단되지 않았으므로 즉시 교체하세요
tool-result의 DLP 발견 항목Claude가 비밀이 포함된 파일(.env, 자격 증명)을 읽었습니다. 키를 교체하고 node9 mask를 실행하세요
[Shell]의 DLP 발견 항목~/.zshrc 또는 ~/.bashrc에 평문 비밀이 있습니다. 모든 AI 세션이 이를 볼 수 있습니다

일회성 신호는 정상입니다. 지속적인 패턴이 조치를 취해야 할 대상입니다.

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 프록시로, `tools/list` + `tools/call` JSON-RPC를 가로채고 나머지는 그대로 전달합니다
- **정책 엔진**은 bash AST 분석에 [mvdan-sh](https://github.com/mvdan/sh)를 사용합니다 — 백슬래시 이스케이프, 변수 치환, 원격 다운로드의 eval을 통한 난독화를 무력화합니다
- **샌드박스**는 기본 거부(deny-by-default) 방식의 `ipset`/`iptables` 이그레스(egress) 방화벽을 구축하는 Dockerfile + entrypoint를 생성한 다음, node9의 데몬과 훅이 내부에서 실행되는 비루트(non-root) 에이전트로 전환합니다. 에이전트의 자격 증명 파일만 마운트되며, 사용자의 전체 `~/.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)** — Node9를 통해 PR을 검토하는 GitHub Action

## 엔터프라이즈

**Node9 Pro**는 거버넌스 잠금, SAML/SSO, 중앙 감사 내보내기, VPC 배포를 추가합니다. [node9.ai](https://node9.ai)를 참조하세요.

## 라이선스

Apache-2.0

<p align="center">
  <sub>☕와 건강한 편집증으로 만들어졌습니다.</sub>
</p>

카테고리