코어 라이브러리
출시됨@redact-secret/core (npm)
탐지, 정책 적용, 가림 처리를 Rust로 구현했고, JavaScript(Node.js·브라우저), Python, Rust에서 같은 API로 씁니다.
- 레지스트리
- npm 0.1.0-beta.10 · PyPI 0.1.0b10 · crates.io 0.1.0-beta.10
기본값은 자격 증명만 탐지합니다. 개인정보 탐지는 직접 켜야 동작합니다.
런타임 자격 증명 가리기 · 오픈 소스
프롬프트에 붙여 넣은 자격 증명 하나가 도구 응답, 트레이스, 로그, 대화 기록에 그대로 남을 수 있습니다. Redact Secret은 데이터가 아직 애플리케이션 안에 있을 때 지원 형식의 자격 증명을 찾아, 다른 시스템으로 넘어가기 전에 가립니다.
로컬에서 도는 탐지 코어 하나, 데이터가 지나는 길마다 붙이는 연동.
테스트용 합성 값이며 실제 자격 증명이 아닙니다. 탐지 메타데이터에는 종류·위치·길이만 남고 값은 남지 않습니다.
런타임에서 생기는 문제
저장소 스캐너는 코드에 커밋된 시크릿을 찾아 줍니다. Redact Secret은 애플리케이션이 실행 중에 다루는 텍스트, 즉 사용자 입력, 오류 메시지, 도구 결과, 로그, 트레이스, 저장된 레코드, 모델 컨텍스트에서 동작합니다. 한 번 붙여 넣은 값이 누가 알아채기도 전에 다섯 군데로 복사됩니다.
사용자가 한 줄을 붙여 넣습니다
API_KEY=
애플리케이션이 자격 증명을 요청한 적은 없습니다. 애플리케이션이 통제하지 못하는 텍스트에 섞여 들어왔을 뿐입니다.
값이 한번 넘어간 뒤에는 자격 증명을 교체하는 것 말고는 방법이 없습니다. 검사는 그보다 한 단계 앞, 애플리케이션이 텍스트를 다른 시스템에 넘기는 경계에서 해야 합니다.
플레이그라운드
입력을 고치면 출력이 바로 바뀝니다. 탐지 코어는 이 탭 안에서 WebAssembly로 실행되며, 패키지에 들어 있는 엔진과 같습니다.
입력한 내용은 이 브라우저 탭 밖으로 나가지 않습니다. 전송·저장·기록되지 않고 맞춤법 검사도 꺼 두었습니다. 그래도 합성 값만 쓰세요. 실제 자격 증명은 어떤 웹 페이지에도 붙여 넣으면 안 됩니다.
개인정보 탐지는 직접 켜야 하는 기능이고, 기본값은 꺼짐(자격 증명만 탐지)입니다. 전역은 이메일, 전화번호, 결제 카드, IP 주소, IBAN을 더하고, 전역 + 미국은 미국 사회보장번호(SSN)까지 탐지합니다. 코어는 시작할 때 개인정보 설정을 고정하므로, 모드마다 엔진 인스턴스를 따로 띄웁니다.
엔진을 불러오는 중…
처음 실행하기
게시된 버전을 지정해 설치하고, 한 번 검사한 뒤 출력을 비교해 보세요. 모든 런타임에서 같은 합성 예제를 씁니다.
npm install @redact-secret/core@0.1.0-beta.10import { initialize, scanAndRedact } from "@redact-secret/core";
await initialize();
const result = scanAndRedact("API_KEY=SYNTHETIC_REVOKED_CONTEXT_VALUE");
console.log(result.text);
// API_KEY=<SECRET_1>python -m pip install redact-secret==0.1.0b10import redact_secret
result = redact_secret.scan_and_redact("API_KEY=SYNTHETIC_REVOKED_CONTEXT_VALUE")
print(result.text)
# API_KEY=<SECRET_1>cargo install redact-secret-cli --version 0.1.0-beta.10 --lockedprintf '%s\n' 'API_KEY=SYNTHETIC_REVOKED_CONTEXT_VALUE' \
| redact-secret --redact
# API_KEY=<SECRET_1>Rust는 crates.io에서 설치합니다. 첫 예제는 Rust 가이드 (영문)에 있습니다.
latest도 이 버전을 가리킵니다. 그래도 latest는 바뀐 적이 있어서 명령에 버전을 고정해 둡니다. Python 표기는 0.1.0b10입니다.패키지 상태는 빌드할 때 릴리스 기록 한 곳에서 읽어 오고, 확인한 날짜와 함께 보여 줍니다. 번역 본문에 손으로 다시 적지 않습니다.
값은 사라지고 그 자리에 유형이 붙은 자리표시자가 들어갑니다. result.findings는 종류·위치·길이만 알려 주고 원문은 담지 않습니다.
작동 방식과 통제
탐지와 가림 처리는 로컬에서 실행되며, 텍스트를 외부 검사 서비스로 보내지 않습니다. 네트워크 호출도 텔레메트리도 없고, 같은 입력이면 항상 같은 결과가 나옵니다.
클라이언트에서 검사하면 붙여 넣은 자격 증명이 기기를 벗어나기 전에 잡을 수 있습니다. 다만 클라이언트는 수정되거나 우회될 수 있으므로, 도움은 되지만 강제 수단은 되지 못합니다.
서버는 로깅, 저장, 컨텍스트 구성, 모델·도구 호출 전에 독립적으로 한 번 더 검사합니다. 보안 판단은 이 검사 결과를 기준으로 합니다.
block은 누가 실행하나요코어는 block 조치를 돌려줄 뿐입니다. 요청을 실제로 거부하는 것은 애플리케이션입니다. Redact Secret이 직접 막는 것은 없습니다.
코어 · 어댑터 · 볼트
모든 패키지 뒤에는 Rust로 만든 탐지 코어 하나가 있습니다. 어댑터는 호스트마다 탐지 규칙을 새로 만들지 않고 이 코어를 로깅, 트레이싱, AI 작업 흐름에 연결합니다. 볼트는 가린 값을 되돌려야 할 때만 쓰는 별도 기능입니다. 카드마다 그 패키지가 다루지 않는 범위를 적어 두었습니다.
엔진은 하나, 쓰는 방법은 세 가지.
@redact-secret/core (npm)
탐지, 정책 적용, 가림 처리를 Rust로 구현했고, JavaScript(Node.js·브라우저), Python, Rust에서 같은 API로 씁니다.
기본값은 자격 증명만 탐지합니다. 개인정보 탐지는 직접 켜야 동작합니다.
@redact-secret/wasm (npm)
코어의 브라우저용 빌드입니다. @redact-secret/core를 설치하면 자동으로 따라오며, 직접 import해서 쓰지는 않습니다.
페이지나 Worker에서 실행됩니다. 위 플레이그라운드도 이 빌드로 돌아갑니다.
redact-secret-cli (crates.io)
표준 입력이나 파일 하나를 읽어 가린 텍스트를 출력합니다. 셸, 파이프라인, 훅에서 씁니다.
npm이 아니라 crates.io에서 설치합니다. 개인정보 탐지는 --pii로 켭니다.
호스트 연동입니다. 스스로 판단하지 않고, 텍스트를 코어에 넘긴 뒤 코어의 답을 돌려줍니다.
브라우저
@redact-secret/core/web-stream (npm)
스트림으로 흐르는 텍스트를 가리는 TransformStream이며, 코어에 포함되어 있습니다.
브라우저 어댑터 패키지는 따로 없습니다. 코어의 이 서브패스가 곧 브라우저 연동입니다.
Node.js
@redact-secret/adapter-pino (npm)
로그 호출의 값과 완성된 로그 줄을 가립니다. pino의 경로 기반 redact와 함께 쓸 수 있습니다.
객체 키는 가리지 않으며, 줄이 기록된 뒤 destination이나 transport가 덧붙인 내용도 다루지 않습니다.
@redact-secret/adapter-otel (npm)
다음 SpanProcessor를 감싸서 문자열 속성, 이벤트, span 이름, 상태 메시지를 가립니다.
속성 이름은 가리지 않습니다. 감싼 processor에 도달하지 않는 span은 처리할 수 없습니다.
@redact-secret/adapter (npm)
Langfuse처럼 마스킹할 값을 콜백으로 넘겨주는 호스트용 createMaskSecrets()입니다.
호스트가 콜백으로 넘기는 값만 처리합니다.
@redact-secret/adapter-ai-context (npm)
사용자 입력과 도구 결과로 모델 컨텍스트를 만듭니다. 문제가 생기면 전체를 막고, 일부만 통과시키지 않습니다.
바이너리나 인코딩된 값은 디코딩하지 않고 차단합니다. 모델 출력은 다루지 않습니다.
@redact-secret/adapter-mcp (npm)
tools/call과 resources/read 결과를 로그에 남기거나 저장하거나 컨텍스트에 넣기 전에 검사합니다.
다른 MCP 메서드는 다루지 않습니다. 바이너리 페이로드가 있으면 기본적으로 결과 전체를 차단합니다.
Python
redact-secret-adapters (PyPI)
표준 라이브러리 로깅에 값 기반 가림 처리를 더하는 logging.Filter입니다.
붙인 곳에서만 동작합니다. 로거가 아니라 출력하는 핸들러마다 붙이세요.
redact-secret-adapters[otel] (PyPI)
Python 서비스에서 다음 span processor를 감쌉니다.
otel extra를 지정해야 설치됩니다. 다시 쓸 수 없는 span은 내보내지 않고 버립니다.
redact-secret-adapters (PyPI)
Langfuse처럼 마스킹할 값을 콜백으로 넘겨주는 호스트용 mask_secrets입니다.
호스트가 콜백으로 넘기는 값만 처리합니다.
선택 사항이며 별도 패키지입니다. 코어는 값을 보관하지 않습니다. 볼트는 요청할 때만 메모리에 매핑을 두고, 정해 둔 정책에 따라서만 복원합니다.
브라우저
@redact-secret/vault (npm)
모델로 보내는 시크릿을 불투명한 <rsv_…> 토큰으로 바꾸고, 지정한 필드에서만 원래 값으로 복원합니다.
메인 스레드에서 쓰거나, 별도로 검증한 전용 Worker 모드를 골라 쓸 수 있습니다. 저장소나 네트워크를 쓰지 않습니다.
Node.js
@redact-secret/vault (npm)
같은 메모리 내 캡처·복원 기능을 Node.js 20, 22, 24에서 씁니다.
코어 버전 하나에 정확히 고정되어 있어, 다른 코어 버전과 함께 설치할 수 없습니다.
@redact-secret/vault-server (npm)
복원 요청마다 주체, 테넌트, 출처, 목적지, 값 경로를 확인해 승인합니다.
메모리 백엔드만 있습니다. 영구 저장소는 제안 단계이고 아직 패키지가 없습니다.
Python
redact-secret-vault (PyPI)
볼트 서버의 승인 계약을 Python으로 직접 구현했습니다.
연구용이며 PyPI에 없습니다. 저장소에서 설치하고, 캡처하려면 node 실행 파일이 필요합니다.
버전·태그·범위는 2026-09-28 기준으로 레지스트리에 게시된 값입니다.
공개 근거
지원하는 자격 증명 형식, 형식별 근거 수준, 재현 가능한 벤치마크 결과를 확인하세요. 벤치마크 사이트는 수치와 함께 측정 방법과 한계도 공개합니다.
어떤 자격 증명 종류를 지원하는지, 각각의 근거가 얼마나 탄탄한지 보여 줍니다. 사람이 손으로 쓰지 않고 평가 결과에서 생성합니다.
지원 매트릭스 (영문) →게시된 모든 버전의 소스 리비전, 아티팩트 구성, 레지스트리 상태를 보여 줍니다. 끝까지 완료되지 않은 실행도 포함합니다.
릴리스 기록 (영문) →프로젝트가 관리하는 합성 데이터 측정 결과로, 예제 데이터의 출처, 도구 버전, 해석 한계를 함께 적었습니다. 회귀를 재현해 확인하는 근거이며 제품 순위표가 아닙니다.
측정 방법부터 읽고 수치 보기 (영문) ↗| 해결하려는 문제 | 시작할 곳 |
|---|---|
| 이미 Git 기록에 남은 자격 증명 찾기 | Gitleaks 또는 TruffleHog |
| 문서·이미지에 담긴 폭넓은 개인정보 비식별화 | Presidio 또는 관리형 데이터 보호 서비스 |
| 실행 중인 애플리케이션에서, 지원 형식의 자격 증명이 로그·트레이스·도구·AI 컨텍스트로 넘어가기 전에 가리기 | Redact Secret |
도구마다 푸는 문제가 달라서 서로 보완 관계입니다. 이 표는 어디서 시작할지 안내할 뿐, 점수를 매기지 않습니다.