idea-05(커리어 로그 → STAR 추출 스튜디오) 개발 중, AI 에이전트가 SQL 마이그레이션을 자동화하려고 Supabase DB에 직접 연결을 시도했습니다. 연결이 계속 실패하자 방식을 20번 넘게 바꿔가며 재시도했고, 그 과정에서 DB 비밀번호와 액세스 토큰을 터미널 명령어 안에 평문으로 반복 노출시켰습니다. 이전 두 사고(무단 계정 생성, 서비스 롤 우회)와 달리, 이번엔 AI가 '몰래' 문제를 피해간 게 아니라 정상적인 시도 중에 부작용으로 벌어진 사고였습니다.
"완료했다"는 요약 보고를 그대로 믿지 않고 실제 실행 로그를 한 줄씩 확인하는 과정에서 노출을 발견했습니다. 발견 즉시 ① DB 비밀번호·액세스 토큰 재발급 ② 임시 스크립트 폴더 .gitignore 추가 ③ git 히스토리 전체를 뒤져 과거 커밋에 유출 흔적이 없는지 확인, 이 세 가지 조치를 진행했습니다.
지금까지 두 번의 AI 편법 사고를 기록했습니다. 무단 관리자 계정 생성, 서비스 롤 키로 RLS 우회. 둘 다 AI 에이전트가 '몰래' 문제를 피해가려던 경우였습니다. 이번엔 결이 달랐습니다. AI가 정상적으로 시도하다가 부작용으로 사고가 났습니다.
idea-05(커리어 로그 → STAR 추출 스튜디오)를 만들던 중이었습니다. 새 테이블 스키마를 확인하는 과정에서, AI 에이전트가 SQL 마이그레이션을 자동화하려고 Supabase DB에 직접 연결을 시도했습니다.
여기까진 흔한 시도였습니다. 문제는 그다음이었습니다.
연결 방식을 20번 넘게 바꿔가며 재시도했습니다. 그 과정에서 DB 비밀번호와 액세스 토큰을 터미널 명령어 안에 그대로 텍스트로 박아 넣었습니다. 한 번이 아니라 수십 번, 반복적으로요.
1·2화는 AI가 의도를 갖고 문제를 피해가려던 편법이었습니다. 이번엔 정상적으로 시도하다가 부작용으로 민감정보가 새어나간 경우였습니다. 의도가 없어도 위험은 생긴다는 걸 이번에 확인했습니다.
평문 노출은 어디에 남을지 모릅니다. 터미널 히스토리, IDE 세션 로그, 스크래치 파일... git에 커밋되지 않았다고 해서 안전한 게 아닙니다. 코드 커밋 여부와 상관없이 여러 곳에 흔적이 남을 수 있습니다.
.gitignore에 추가의심되면 일단 재발급, 확인은 그다음입니다.
"완료했다"는 보고를 그대로 믿지 않습니다. 이번에도 요약 보고만 봤으면 몰랐을 문제였습니다. 실제 실행 로그를 한 줄씩 읽고 나서야 발견했습니다. 편법이든 사고든, 로그를 보지 않으면 못 잡습니다.
AI에게 맡기고 사람이 검증하는 이야기는 계속됩니다. 이 빌드로그는 이런 시행착오를 그대로 기록합니다.
git 커밋 여부와 무관하게 터미널 히스토리·IDE 세션 로그·스크래치 파일 등 여러 곳에 흔적이 남을 수 있다는 걸 이번에 명확히 인지했습니다. "빌드 성공 = 안전"이 아니듯, "커밋 안 됐음 = 안전"도 아니라는 원칙을 세우고, 이후 세션부터는 AI 에이전트가 DB 관련 스크립트를 실행할 때마다 접속 방식(세션 기반 vs 서비스 롤 vs 직접 연결)을 매번 명시적으로 확인하는 체크포인트를 워크플로우에 추가했습니다.
AI 에이전트에게 DB 작업을 맡길 때는 사전에 "직접 연결 시도 금지, 스키마 변경은 SQL 파일 작성 후 사람이 대시보드에서 수동 실행"이라는 원칙을 명시하고, 완료 보고를 받을 때마다 요약이 아닌 실행 로그 원문을 요구하는 습관을 들이면, 다른 프로젝트·다른 에이전트를 쓸 때도 동일하게 적용할 수 있는 안전장치입니다.
관련 프로젝트
프로젝트 개요 기획자(PM)로서 AI를 활용한 업무 자동화(AX) 사례를 문서화하는 개인 포트폴리오 사이트입니다. 국내 기업의 AX 기획자/AI PM 직군으로의 커리어 전환을 목표로, 사이트 자체가 채용 지원용 스토리텔링 자료로 실사용되고 있습니다. 핵심 패턴: 업무 병목 발견 → AI로 워크플로우 재설계 → Before/After·근거·재현 가능성 문서화 전체 서사는 '실행하지 않은 아이디어 나열'이 아니라, 하나의 검증된 자동화 패턴과 도메인별 확장 블루프린트를 갖춘 재사용 가능한 엔진을 보유하는 방향으로 수렴하고 있습니다. 기술 스택 Next.js 16, Tailwind CSS v4, TypeScript Supabase (개발/운영 환경 분리), Vercel, Resend Claude API 기반 기술 자문 및 프롬프트 설계 보안 아키텍처 관리자 CRUD는 세션 기반 인증과 RLS(Row Level Security)로 보호 공개 읽기 전용 경로는 별도의 익명 클라이언트로 분리 서비스 롤 키는 애플리케이션 코드에서 완전히 배제 권한 검증은 마이그레이션 파일 및 대시보드 검토를 통해서만 진행 작업 방식 (에이전틱 IDE 협업 워크플로우) AI 에이전트 기반 IDE가 파일/버전관리 작업을 담당하고, LLM은 기술 자문 및 프롬프트 작성 역할을 수행하는 협업 구조를 운영합니다. AI 자문 → 에이전트용 프롬프트 작성 → 실행자가 붙여넣기 → 계획 확인 → 자문 검토 → 실행 승인 → 로그 검토 → 직접 클릭 테스트 → 명시적 지시 시에만 커밋 통제 규칙 실행 전 계획 검토 필수 요약 보고가 아닌 직접 클릭 테스트로 검증 개발 환경 우선 적용 후 명시적 승인 하에 운영 환경 반영 커밋은 명시적 지시가 있을 때만 수행 DB 자격증명 직접 연결 및 범위 외 삭제 금지 브랜치 전략: 개발 브랜치에서 작업 후 운영 브랜치는 배포 전용으로 직접 커밋 금지, 병합 전 변경 범위 검증 현재 진행 상황 고객사 미팅 브리핑 자동화 사례: 1단계 완료, 개발/운영 환경 배포 및 실데이터 테스트 완료 범위 변경 감지 자동화 사례: 상태 확인 진행 중 리스크 조기 경보 자동화 사례: 운영 환경 배포 완료 보안 사고 관련 포스트: 'AI 리스크 거버넌스 사례'로 재구성 예정 AI 활용 관련 콘텐츠 시리즈 초안 작성 완료, 게시 미확정 핵심 학습 원칙 보고가 아닌 검증: 버그·보안 이슈는 항상 직접 로그/브라우저 검토를 통해서만 발견되며, 에이전트의 자체 결과 요약을 그대로 신뢰하지 않음 보안 사고의 콘텐츠화: 실제 발생한 권한 관련 이슈 사례를 케이스 스터디로 재구성하여 콘텐츠화 커밋 의미 분리: 기능 단위/변경 유형별로 항상 분리 커밋 자동화하지 않는 것도 스토리: 저사용 빈도 기능을 의도적으로 고도화하지 않은 결정 자체를 AX 스토리텔링 소재로 활용