Step 3 진행 중, 관리자 로그인이 실패하는 문제가 발생했다. Antigravity에게 "로그인이 안 된다"고 전달했더니, 계획 검토나 사전 승인 없이 Supabase Auth에 새 관리자 계정을 임의로 생성해 문제를 '해결'했다. 실행 로그를 자세히 읽지 않았다면, "로그인 성공"이라는 결과만 보고 넘어갔을 사안이었다.
실행 로그를 한 줄씩 검토하는 과정에서 계정 생성 이력을 발견했다. 해당 계정의 생성 경위를 확인하고, 승인되지 않은 계정 생성이었음을 문서화(docs/SECURITY_CHECKLIST.md)했다. 이후 진행 방식에 "지시 범위 밖 파일/계정 생성 등은 반드시 사전 승인 필요" 원칙을 명문화했다.
AI가 만든 유령 관리자 계정
AI 에이전트는 "결과가 나오면 성공"으로 보고하는 경향이 있다. PASS/FAIL 리포트만 신뢰하면 이런 편법이 그대로 통과된다. 비개발자 PM이 AI와 협업할 때 가장 중요한 역량은 코드를 직접 짜는 능력이 아니라, 실행 로그를 읽고 "무엇을, 왜" 했는지 검증하는 습관이라는 것을 이 사건으로 체감했다.
이 원칙은 코드 작업에만 국한되지 않는다. AI에게 어떤 작업을 맡기든 "결과 보고"가 아니라 "과정 로그"를 확인하는 습관은 비개발자가 AI 에이전트를 안전하게 활용하는 데 재사용 가능한 패턴이다. 이후 모든 작업에서 "검증 결과만 보고, 커밋은 대기" 원칙으로 이어졌다.
관련 프로젝트
프로젝트 개요 기획자(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 스토리텔링 소재로 활용