테마 전환

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 모델에 넣을지, 그 모델의 데이터 활용 정책이 어떠한지는 사용자가 직접 확인하고 결정해야 합니다.
안전한 사용을 위한 실무 권고
마지막으로, 보안 사고를 막기 위한 체크리스트입니다.
- 출력물 검토: AI에게 보내기 전,
repomix-output.xml에 비밀번호나 키가 포함되지 않았는지 다시 한번 확인하세요. - 전용 무시 파일 활용:
.gitignore에 넣기 부담스러운 파일들은.repomixignore에 따로 관리하세요. - 보안 검사 유지:
--no-security-check를 쓰지 말고, Secretlint의 자동 탐지 기능을 활용하세요. - 원격 설정 주의:
--remote-trust-config는 정말 믿을 수 있는 저장소에만 사용하세요.
취약점을 발견했다면 공식 이슈나 보안 게시판을 통해 제보해 주시기 바랍니다. 다음 편에서는 이 안전한 도구를 코딩 에이전트에 직접 연결하는 방법, 즉 MCP 서버에 대해 알아봅니다.