Skip to content

Repomix의 보안 검사를 상징하는 이미지

AI에게 코드를 넘길 때 가장 걱정되는 부분은 역시 "보안"입니다. 실수로 API 키나 비밀번호가 포함된 파일을 넘겨, 공개 모델의 학습 데이터로 들어가거나 유출되는 사고는 치명적입니다.

Repomix는 사용자가도 모르는 사이 발생할 수 있는 유출을 막기 위해 기본적으로 보안 장치를 켜두고 있습니다. 이 편에서는 그 장치가 어떻게 작동하는지, 그리고 사용자가 지켜야 할 안전 수칙은 무엇인지 알아봅니다.

기본으로 작동하는 보안 검사 ​

Repomix는 Secretlint를 내장하여 파일 내용을 훑으며 민감 정보를 자동으로 탐지합니다.

탐지 대상:

  • AWS, Azure, GCP 등 클라우드 서비스의 액세스 키
  • GitHub, GitLab 등의 개인 액세스 토큰
  • 데이터베이스 연결 문자열 (ID/PW 포함)
  • SSH 개인키 및 각종 인증 자격 증명
  • .env 파일 등에 흔히 쓰이는 환경 변수 패턴

만약 민감 정보가 발견되면, Repomix는 해당 파일을 출력물에서 즉시 제외하고 콘솔에 경고를 띄웁니다.

bash
🔍 Security Check:
──────────────────
2 suspicious file(s) detected and excluded:
1. config/credentials.json
  - Found AWS access key
2. .env.local
  - Found database password

이 기능은 특히 팀 프로젝트에서 유용합니다. 새 멤버가 무심코 커밋한 비밀번호가 AI에게 전달되는 사고를 기본 설정만으로 막아 줍니다.

보안 검사를 끌 때의 리스크 ​

bash
repomix --no-security-check

특수한 상황에서 이 플래그를 사용하여 검사를 끌 수 있습니다. 하지만 공식 문서에서는 이를 "매우 주의해서 사용하라"고 경고합니다.

보안 검사는 단순한 성능 옵션이 아니라 최후의 안전장치입니다. "검사 때문에 속도가 느리다"는 이유로 끄기보다는, 정말로 제외해야 할 파일의 경로를 .repomixignore에 명시하여 원천적으로 차단하는 편이 훨씬 안전합니다.

보안을 위한 다층 방어선 ​

Secretlint 외에도 Repomix는 여러 겹의 방어선을 구축하고 있습니다.

방어선동작 방식보안 효과
바이너리 제외이미지, PDF, 실행 파일의 본문을 제외함바이너리 내부에 숨겨진 민감 정보 유출 방지
Git 인식.gitignore 규칙을 최우선으로 존중애초에 깃이 무시하는 설정/비밀 파일을 제외
용량 제한50MB 초과 파일은 통째로 건너뜀거대한 덤프 파일 등에 포함된 민감 정보 노출 방지
기본 무시 패턴node_modules, .git 등을 자동 제외의존성 패키지 내의 설정값 유출 방지

즉, "무엇을 읽을 것인가"를 최대한 좁히는 것 자체가 가장 강력한 보안 전략입니다.

설정 파일은 '데이터'가 아니라 '코드'입니다 ​

Repomix 보안 모델의 핵심은 repomix.config.* 파일을 대하는 태도에 있습니다. 설정 파일은 단순한 설정값이 아니라, 실행 가능한 코드입니다.

  • 즉시 실행: .ts, .js, .mjs 설정 파일은 로드되는 순간 Node.js에 의해 실행됩니다.
  • 임의 명령 실행: input.processors 설정은 매칭되는 파일에 대해 셸 명령어를 실행합니다.
  • 범위 외부 접근: 잘못된 경로 설정을 통해 저장소 밖의 시스템 파일을 읽도록 유도할 수 있습니다.

따라서 검토하지 않은 저장소의 설정 파일을 읽는 행위는, 모르는 사람이 짠 Makefile을 실행하거나 출처 불명의 npm install 스크립트를 돌리는 것과 똑같이 위험합니다.

원격 설정 신뢰 모델과 확인 절차 ​

위와 같은 위험 때문에, --remote 옵션으로 원격 저장소를 묶을 때 Repomix는 기본적으로 해당 저장소의 설정 파일을 로드하지 않습니다. 오직 사용자의 전역 설정과 명령줄 옵션만 적용합니다.

만약 원격 저장소의 설정을 신뢰하고 적용해야 한다면, 명시적으로 플래그를 켜야 합니다.

bash
repomix --remote user/repo --remote-trust-config

이 플래그를 쓰면 Repomix는 설정을 로드하기 전, 터미널에 설정 내용을 출력하고 사용자에게 확인을 요청합니다.

선택지결과
한 번만 신뢰이번 실행에만 설정을 적용합니다.
이 저장소는 다시 묻지 않음설정의 해시값을 기록하여 다음 실행 때부터 자동 로드합니다.
아니요 (기본)설정을 무시하고 중단하거나 기본 설정으로 진행합니다.

보안 장치: 설정 내용이 터미널에서 조작되어 사용자를 속이는 것을 막기 위해, Repomix는 제어 문자/양방향 문자를 이스케이프하고, 줄마다 접두사를 붙이며, 심볼릭 링크를 거부하는 등 엄격한 출력 제어를 적용합니다.

확인 프롬프트가 생략되는 경우 ​

자동화 환경에서는 인터랙티브한 확인이 불가능합니다. 이때의 동작은 다음과 같습니다.

  • --force 사용 시: 확인 과정을 생략하고 즉시 신뢰합니다. (stderr에 안내 출력)
  • CI/CD (비인터랙티브 셸): 기존 자동화 파이프라인을 깨뜨리지 않기 위해 묻지 않고 신뢰합니다.

권고: CI 환경에서는 확인 프롬프트가 나를 지켜주지 않습니다. 따라서 묶으려는 리비전(커밋 해시)을 고정하고, 설정 파일을 미리 검토하는 습관이 필요합니다.

서비스별 개인정보 처리 방침 ​

Repomix의 각 인터페이스별 데이터 처리 방식입니다.

대상처리 방침보안 수준
CLI모든 처리가 로컬에서 일어납니다. 텔레메트리나 저장소 정보를 외부로 전송하지 않습니다.매우 높음 (사내 저장소 권장)
웹사이트Google Analytics와 Cloudflare Turnstile을 사용합니다. 업로드된 파일은 처리 즉시 삭제됩니다.보통 (공개 저장소 권장)
브라우저 확장최소 권한만 요청하며, 데이터를 수집·전송·저장하지 않습니다.높음

최종 책임: Repomix는 도구일 뿐입니다. 생성된 결과물을 어떤 AI 모델에 넣을지, 그 모델의 데이터 활용 정책이 어떠한지는 사용자가 직접 확인하고 결정해야 합니다.

안전한 사용을 위한 실무 권고 ​

마지막으로, 보안 사고를 막기 위한 체크리스트입니다.

  1. 출력물 검토: AI에게 보내기 전, repomix-output.xml에 비밀번호나 키가 포함되지 않았는지 다시 한번 확인하세요.
  2. 전용 무시 파일 활용: .gitignore에 넣기 부담스러운 파일들은 .repomixignore에 따로 관리하세요.
  3. 보안 검사 유지: --no-security-check를 쓰지 말고, Secretlint의 자동 탐지 기능을 활용하세요.
  4. 원격 설정 주의: --remote-trust-config는 정말 믿을 수 있는 저장소에만 사용하세요.

취약점을 발견했다면 공식 이슈나 보안 게시판을 통해 제보해 주시기 바랍니다. 다음 편에서는 이 안전한 도구를 코딩 에이전트에 직접 연결하는 방법, 즉 MCP 서버에 대해 알아봅니다.

오픈소스를 한국어로 읽고 배웁니다.