실전 가이드 · 3분 · 06.29

Codex로 vibe coding하면 .env가 어디로 가나 — OpenAI가 10개월째 안 막은 이슈와 오늘 막는 3가지

loopy vibecoder

핵심 요약 (TL;DR)

OpenAI Codex CLI에는 .codexignore 같은 file-level exclude 메커니즘이 없습니다. .gitignore는 무시되거나 우회됩니다. 그래서 .env·*.pem·id_rsa 등의 비밀이 모델 컨텍스트로 흘러들어갈 수 있죠. GitHub Issue #2847이 약 10개월째 open 상태로 6/28 HN 1면에 다시 올라왔습니다. 오늘 안에 OS 레벨에서 막아야 합니다.

문제 정의 — 왜 이게 1면에 다시 올라왔나

GitHub openai/codex Issue #2847 "A way to exclude sensitive files"는 2025년 8월 28일에 작성된 이슈입니다. 현 시점(2026-06-29) 기준 약 10개월째 open, OpenAI 측 공식 코멘트 없음. 6월 28일 HN에 168pts·115 comments로 다시 올라왔고, 1위 댓글은 이렇습니다.

"This is a one-line PR. The reason it's still open is that they want everything to be sent to the model."

문제의 핵심은 단순합니다. Codex CLI가 워킹 디렉토리의 모든 파일을 읽을 권한을 가집니다. .gitignore는 무시되거나 rg --no-ignore 한 줄로 우회됩니다. 결과적으로 cat .env, 빌드 실패 출력의 환경 변수 dump, secret이 박힌 config 파일 등이 모델 컨텍스트로 흘러갑니다. 모델 컨텍스트로 들어간 순간 OpenAI 서버에 전송된다는 게 함의입니다.

경쟁 도구들은 같은 자리에서 어떻게 막고 있나

이 표를 보면 OpenAI Codex만 노출돼 있다는 점이 분명해집니다.

도구 file-level ignore 비고
Claude Code .claudeignore + permission profile deny 패턴, sandbox로 OS 레벨 차단 가능
Cursor .cursorignore 표준 지원
OpenAI Codex 없음 Issue #2847, 약 10개월 open

Anthropic은 같은 주 6/24에 Trusted Devices까지 추가로 도입했습니다. 보안 baseline의 격차가 점점 벌어지고 있죠.

오늘 안에 막는 3가지

이슈가 풀리길 기다릴 게 아니라, 오늘 안에 OS 레벨에서 차단해야 합니다. 3분이면 끝나는 작업입니다.

1. OS 레벨 권한 차단 — Codex가 읽을 수 없으면 보낼 수 없습니다.

chmod 000 .env
chmod 000 *.pem id_rsa id_ed25519 .npmrc .netrc

작업이 끝나면 chmod 600 .env로 복원. 평소 Codex로 작업할 때만 차단해두는 게 안전합니다.

2. 작업 디렉토리 격리 — Codex를 실제 코드 트리 밖에서 실행하고, 필요한 파일만 명시적으로 복사하세요. 비밀이 들어간 디렉토리 자체를 Codex가 보지 못하게 만드는 가장 확실한 방법입니다.

3. permission profile 설정developers.openai.com/codex/security 문서를 따라 deny 패턴 적용. 단 이 설정이 도구 호출만 막는지, 모델 컨텍스트까지 막는지 확실치 않으므로 1번 OS 레벨 차단과 반드시 병행해야 합니다.

한 번 흘러간 비밀은 어떻게 되나

만약 이미 .env가 모델 컨텍스트로 들어간 적이 있다면, OpenAI 정책상 학습에 사용되지 않더라도 prompt log retention 기간만큼 어딘가 남습니다. 가장 빠른 대응은 키 자체를 rotate하는 것이죠. AWS, OpenAI, Stripe, DB password 등 흘러갔을 가능성이 있는 모든 키를 무효화하고 새로 발급받으세요. "사용된 적 없을 거다"라는 추정으로 두는 게 가장 위험합니다.

사내 vibe coding에 Codex를 허용해도 되나

현재 상태 그대로는 권장 어렵습니다. 최소한 위 3가지 차단 후, 정기 secret scan(예: gitleaks, trufflehog)을 CI에 붙이는 게 baseline입니다. 더 큰 그림에서 말하면, 도구 선택은 capability와 보안 baseline의 곱이라는 것. 한쪽이 0에 가까우면 전체가 0에 가까워집니다.

FAQ

Q. Codex CLI 최신 버전에서는 해결된 거 아닌가요?
아닙니다. 2026-06-29 기준 이슈는 여전히 open이고 OpenAI 측 공식 코멘트가 달리지 않았습니다. permission profile은 있지만 file-level ignore 메커니즘과는 다른 layer입니다.

Q. Claude Code로 갈아타는 게 정답인가요?
보안 baseline만 보면 그렇습니다. .claudeignore + permission profile + Trusted Devices가 함께 작동하는 stack은 현 시점에서 가장 단단합니다. 단 도구 전환 비용이 있으므로, Codex를 유지한다면 위 3가지 OS 레벨 차단을 오늘 안에 적용하세요.

Q. .gitignore만 있으면 안 되나요?
안 됩니다. Codex는 .gitignore를 무시하거나 우회할 수 있습니다. 이슈 #2847의 핵심이 바로 그것 — .gitignore는 git이 무시할 파일이지, Codex가 무시할 파일이 아닙니다.

이슈 해결을 기다리지 마세요. chmod 000 .env 한 줄이 오늘 가장 싼 보험이 됩니다.

0

댓글 0

아직 댓글이 없습니다