AI 코딩 도구를 안 쓸 건 아니잖아. 너무 생산적이니까. 현실적인 자세는 금욕이 아니라 위생이야.
Pre-flight 체크리스트 (repo 당 한 번)
- 쓰는 모든 agent 한테 ignore 파일 추가. 도구마다 하나씩 만들어.
.cursorignore,.claudeignore,.aiderignore같은 것들. 시크릿과 DB 파일을 적어둬. - agent 한테 repo 파일을 나열해보라고 시켜서 확인해. 막아둔 파일은 안 나와야 해. 확인해봐. 그냥 그럴 거라고 넘기지 말고.
- 모든 진짜 시크릿을 keychain 이나 runtime env 로.
.env값을<FROM_KEYCHAIN>placeholder 로 교체. - 시크릿을 스캔하는 pre-commit 훅을 붙여.
gitleaks,trufflehog, 아니면 간단한 regex 몇 개면 돼. commit 이 들어가기 전에 훅이 먼저 돌아. - agent 한테 컨벤션을 알려줘. "코드에 시크릿을 절대 박아 넣지 마. 항상 get_secret() 헬퍼를 써" 같은 짧은 룰 파일이 제안에서 새는 패턴을 줄여줘 (완전히 없애진 못하지만).
Per-session 습관
| 습관 | 이유 |
|---|---|
| 자격증명 있는 진짜 stack trace 붙여넣지 마 | 붙여넣기 전에 connection string 을 가려 |
| 프로덕션 로그 verbatim 붙여넣지 마 | 로그엔 request ID, 내부 IP, 가끔 URL 에 낀 토큰이 섞여 있음 |
| 채팅 transcript 를 public 으로 취급 | 먼저 시크릿 스캔 없이 스크린샷을 공유하지 마 |
| 민감한 context 의 repo 한테 memory 기능 비활성 | session 을 넘나드는 유출이 제일 감사하기 어려움 |
| Agent 채팅 히스토리 주기적 purge | provider 침해 시 attack surface 줄임 |
Agent 한테 할 수 있는 최악의 말
- "내 .env 읽고 이 키들 맞는지 확인해줘." — 시크릿 전부를 요청에 실어 보낸 거야.
- "왜 이 connection 안 돼?" + full connection string 붙여넣기 — 이제 비밀번호가 transcript 에.
- "내 AWS 자격증명 쓰는 deploy 스크립트 좀 짜줘." — 제안 코드가 그걸 그대로 박아 넣을 거야.
- "진짜 값 다 채운 config 파일 만들어줘." — 대놓고 유출을 부탁한 거지.
최고의 습관
placeholder 로 말해. "왜 $DB_URL 로 연결이 안 되지? 포맷은 postgres://USER:PASS@HOST:PORT/DB 야." agent 는 시크릿이 아니라 모양만 보고 판단하고, transcript 는 깨끗하게 남아.