CLI 명령어

v1.0부터 Noir CLI는 동사 기반 구조를 따릅니다. scan 이 핵심 명령이고, 나머지는 작은 네임스페이스(list, cache, config, rules)로 묶입니다.

noir <command> [arguments] [flags]

빠른 참조

명령어 설명
noir scan PATHS... 하나 이상의 코드베이스에서 엔드포인트 탐지
noir list techs 지원하는 언어/프레임워크/분석기 목록
noir list taggers 빌트인/프레임워크별 태거 목록
noir list formats 지원하는 출력 형식 목록
noir cache info LLM 캐시 디렉토리, 항목 수, 크기 표시
noir cache clear 캐시된 AI 응답 전체 삭제
noir config show 활성 설정 파일 출력
noir config edit $VISUAL / $EDITOR 로 설정 파일 열기
noir config init 기본 설정 파일 생성 (멱등)
noir config path 해석된 설정 경로 출력
noir rules list 룰 경로에 설치된 룰 파일 목록
noir rules update 최신 passive-scan 룰을 클론 또는 풀
noir rules path 설정된 룰 디렉토리 출력
noir completion zsh Zsh / Bash / Fish / Elvish 자동완성 스크립트 생성
noir version 버전 출력 (--verbose 는 빌드 세부 정보 추가)
noir help [command] 최상위 또는 명령어별 도움말

Scan

noir scan 은 하나 이상의 코드베이스를 순회하면서 탐지된 기술별 분석기를 실행하고, 필요하면 passive scanner도 함께 돌린 뒤 지정한 형식으로 엔드포인트를 출력합니다.

# 단일 코드베이스 스캔
noir scan ./app

# 한 번의 호출로 여러 코드베이스 스캔
noir scan ./api ./worker ./jobs

# JSON 으로 파일 저장 + passive scan
noir scan ./app -P -f json -o endpoints.json

# 전체 AI 컨텍스트 + path/techs/callee enrichment
noir scan ./app --include path,techs,callee --ai-context

positional path 와 반복 -b PATH 는 동일하게 동작합니다. 스크립트에서 읽기 좋은 쪽을 쓰면 됩니다.

v1 의 플래그 통합

v0 의 몇몇 플래그 패밀리가 v1.0 에서 더 짧은 형태로 통합되었습니다. 옛 형태는 v1.x 전 구간에서 silent alias 로 계속 동작합니다.

v1 형식 v0 등가 (계속 동작)
--probe --send-req
--probe-via URL --send-proxy URL
--probe-header VAL --with-headers VAL
--probe-match VAL --use-matchers VAL
--probe-skip VAL --use-filters VAL
--export-es URL --send-es URL
--pvalue query=FOO --set-pvalue-query FOO
--pvalue header=X --set-pvalue-header X
--pvalue FOO (TYPE= 없음) --set-pvalue FOO
--include path,techs,callee --include-path --include-techs --include-callee
--ai-context guards,sinks --ai-context (필터 없음, 전체 출력)
noir version --verbose --build-info
noir completion zsh --generate-completion zsh
noir list techs --list-techs
noir list taggers --list-taggers
noir help --help-all

Deliver family 는 noir scan -h 에서 두 가지 semantic 섹션으로 분리되었습니다. PROBE 는 발견된 endpoint 로 active HTTP replay 를 수행하고, EXPORT 는 endpoint catalog 을 외부 데이터 저장소 (Elasticsearch, OpenSearch, webhook) 로 ship 합니다. 전체 표면은 다른 도구로 결과 전송하기 를, 배경과 v1 에서 추가된 export 들은 v0 에서 v1 로 마이그레이션 을 참고하세요.

v1.0 에서 제거된 항목

--ollama / --ollama-model 은 여러 릴리즈에 걸쳐 deprecated 상태였고 v1.0 에서 완전히 제거되었습니다. 대신 --ai-provider ollama [--ai-model NAME] 을 사용하세요.

noir scan ./app --ai-provider ollama --ai-model llama3

List

noir list 는 빌트인 카탈로그를 보여줍니다. update 같은 동작이 생길 일이 없는 정적 데이터라, 하나의 네임스페이스 아래 subject 로 유지됩니다.

noir list techs       # 지원하는 언어, 프레임워크, 스펙
noir list taggers     # 빌트인 및 프레임워크별 태거
noir list formats     # 지원하는 모든 출력 형식

Cache

noir cache 는 디스크에 저장되는 LLM 응답 캐시 (~/.config/noir/cache/ai)를 관리합니다.

noir cache info       # 경로, 항목 수, 총 크기
noir cache clear      # 캐시된 AI 응답 전체 삭제

스캔 도중 캐시 제어는 그대로 noir scan 에 있습니다. --cache-disable 은 1회 실행에서 캐시를 건너뛰고, --cache-clear 는 스캔 전에 캐시를 비웁니다.

Config

noir config 는 사용자 레벨 YAML 설정을 관리합니다.

noir config show      # 활성 파일 출력
noir config edit      # $VISUAL / $EDITOR 로 열기
noir config init      # 기본 설정 생성 (멱등)
noir config path      # 해석된 경로 출력

설정 디렉토리는 NOIR_HOME 이 있으면 그 값을 따릅니다. 없으면 Unix 에서는 $HOME/.config/noir, Windows 에서는 %APPDATA%\noir 로 폴백합니다.

noir config edit$VISUAL, $EDITOR, 플랫폼 기본값(Unix: vi, Windows: notepad) 순서로 에디터를 결정합니다. 설정 파일이 없으면 먼저 기본 파일을 만든 뒤 엽니다.

Rules

noir rules 는 passive-scan 룰 저장소를 관리합니다.

noir rules list       # 설치된 룰 파일 목록
noir rules update     # 최신 룰을 클론하거나 풀
noir rules path       # 룰 디렉토리 출력

기본 룰 경로는 ~/.config/noir/passive_rules 입니다. NOIR_HOME 또는 스캔 시점의 --passive-scan-path PATH 로 재정의할 수 있습니다.

Completion

noir completion <shell> 은 지정한 쉘의 자동완성 스크립트를 출력합니다.

noir completion zsh    > "${fpath[1]}/_noir"
noir completion bash   > /etc/bash_completion.d/noir
noir completion fish   > ~/.config/fish/completions/noir.fish
noir completion elvish > ~/.config/elvish/lib/noir.elv  # 그 다음 rc.elv 에서 `use noir`

스크립트는 모든 서브커맨드를 인식합니다. noir <TAB> 은 동사 목록을, noir scan -<TAB> 은 scan 플래그를 보여줍니다. Elvish 버전은 동일한 완성기를 $edit:completion:arg-completer[noir] 에 등록합니다.

Version

noir version 은 버전 번호만 출력합니다. noir version --verbose 는 Crystal, LLVM, 타깃 트리플 등 빌드 세부 정보를 추가합니다(v0 --build-info 가 출력하던 내용 그대로).

Help

noir help 는 최상위 개요를, noir help <command> 는 해당 명령어의 플래그 목록을 보여줍니다.

글로벌 플래그

scan 뿐 아니라 모든 서브커맨드에서 동작하는 플래그:

플래그 효과
--no-color 모든 명령의 출력에서 ANSI 색상 제거 (NO_COLOR 환경변수도 반영)
-v, --version Noir 버전 출력 후 종료
-h, --help 현재 명령의 도움말 표시

명령어별 플래그(출력 형식, 동시성, passive scan, AI provider 등)는 noir scan 아래에 있습니다. noir help scan 으로 전체 목록을 볼 수 있습니다.

v0 호환성

v0 의 모든 호출 패턴은 v1.x 에서 변경 없이 그대로 동작합니다.

# 세 형태 모두 동일한 스캔 결과를 만듭니다
noir -b ./app                # v0 형식 (scan 으로 라우팅)
noir scan ./app              # v1 형식
noir scan -b ./app           # v1 동사 + v0 스타일 플래그

ARGV[0] 가 알려진 동사가 아니면 라우터가 scan 으로 폴백합니다. CI 파이프라인, GitHub Action, Dockerfile entrypoint, 쉘 alias 가 수정 없이 그대로 동작합니다.

deprecation 경고는 추후 v1.x 시리즈에서 추가됩니다. 동사 형식이 의무가 되는 시점은 v2.x 입니다.

Esc