agentic-security
무엇인가
agentic-security는 AI 코딩 에이전트가 생성·수정한 코드와 저장소 전체를 보안 관점에서 검증하는 절차를 주입하는 플러그인이다. SAST, SCA, 시크릿, IaC, 프롬프트 인젝션, MCP·에이전트 도구 감사, 인증·인가를 포함한 12개 축을 결정적(deterministic) 방식으로 스캔하고, 발견 항목을 CVE 번호 대신 평문 설명과 예상 비용으로 제시한다. 규율하는 핵심 문제 영역은 "무엇을 찾았는가"와 "그 탐색이 실제로 끝났는가"를 분리해 배포 가능 여부를 판정하는 것이다.
어떻게 동작하나
동작은 CLI 진입점 `ci`가 스캔을 수행하고 `.agentic-security/findings.{json,sarif,junit.xml}` 아티팩트를 남기는 구조다. 결과에는 `scanHealth` 객체가 포함되어 스캔한 파일 수, 완료·실패·타임아웃한 분석기 수, KEV·EPSS·캘리브레이션 피드의 신선도를 기록한다. `toShipVerdict()`가 이를 3상태로 접는다. actionable finding이 0건이고 스캔이 완료되면 `✅ Safe to deploy`, finding은 0건이지만 스캔이 불완전하면 `⚠️ Scan incomplete — cannot confirm safe to deploy`가 된다. 데이터 흐름이 걸린 finding은 `chain[]`에 오염 데이터가 유입된 지점부터 sink까지의 홉 단위 경로를 담는다. 수정은 규칙에 저장된 fix, LLM을 쓰지 않는 결정적 치환, 에이전트가 작성한 패치 모두 동일한 게이트(rescan-clean, medium 이상 신규 finding 없음, lint-clean)를 통과해야 디스크에 기록된다.
무엇과 다른가
일반 취약점 스캐너는 코드만 보고 자기 자신의 완결성은 보고하지 않는다. agentic-security는 스캔 자체를 결과의 일부로 취급해 `--assurance strict`에서 스캔 건강 상태로 빌드를 실패시킨다. 수정안도 신뢰하지 않고 재검증하며, 완전성 등급(FULL·MITIGATION·WORKAROUND)과 잔여 위험 가드로 기계적 증거와 모순되는 "적절히 처리됨" 주장을 거부한다. 비용은 `riskDollars`로 제시되고, 조직 고유 수치를 설정하기 전까지는 `scenario_default`로 표기된다.
어떻게 쓰나
설치는 `npx @clear-capabilities/agentic-security-scanner ci examples/demo-app --assurance strict`로 시작한다. `ci`는 파이프라인이 실행하는 CI 형태 진입점이고, `--assurance strict`는 스캔 자체의 완결성을 게이트 조건으로 삼는 플래그다. 저장소에 의도적으로 취약한 데모 앱이 포함되어 있어 첫 실행에서 항상 finding이 나온다. `advisory`와 `standard`(기본값)는 기계적으로 동일하며 스캔 건강으로 빌드를 실패시키지 않고, `strict`만 게이트한다. 출력에서 `fail-on=critical scan-exit=3`은 심각도 게이트, `assurance gate FAILED (mode=strict)`는 보증 게이트로 서로 다른 실패 클래스다.
전제와 한계
전제와 한계는 다음과 같다. Claude Code 플러그인이며 Node 실행 환경이 필요하다. 1급 지원 언어 8개, 번들 컴플라이언스 프레임워크 10개를 다룬다. `--assurance`는 `ci`에만 존재하고 `scan --assurance`는 없다. egress 정책은 `mode: allow`·`deny`·`local-only`로 설정하며 모든 아웃바운드 모델 호출에 대해 프롬프트가 만들어지기 전에 allow·deny 결정을 반환한다. 상태 거버넌스는 TTL 기반 보존, 옵트인 암호화, `export`, `legal-hold`를 제공한다.