Intelligence Architect's Log

에이전트에게 메일 발송 권한 그냥 줬다가 대형 사고 터진 이유? 인간 동의 승인 시스템

'AI 에이전트 오발송 사고 막는 위험도 기반 인간 동의 승인 워크플로우 구축' 문구가 빛나는 레이저 화면에 강조된 배경에서 네이비 블루 블레이저 차림의 몬이쌤이 스마트하게 자동화 통제 노하우를 안내하는 대표 썸네일 이미지입니다.

"에이전트가 완벽하게 업무를 처리하길 바라는 마음에 외부 API 연동 권한과 이메일 발송, 결제 권한까지 들려줬는데, 조건이 조금 모호한 요청을 받자마자 잘못된 대상에게 멋대로 고액의 정산 이메일을 쏘아버렸습니다."

AI 에이전트 시스템을 직접 설계하고 실전 업무에 적용해 나갈 때, 개발자를 가장 고민스럽게 만드는 지점이 있습니다. 에이전트에게 어디까지 '자율성'을 부여하고, 어디서부터 '사람의 직접 승인'을 받게 만들 것인가에 대한 문제입니다.

자동화의 매력에 빠지다 보면 사람의 개입 없이 엔드 투 엔드로 모든 작업이 착착 끝나는 시스템을 꿈꾸게 되죠. 하지만 금융, 고객 응대, 외부 데이터 수정처럼 한 번 실행되면 돌이킬 수 없는 치명적인 작업(Side Effects)을 에이전트 홀로 처리하게 두는 것은 언제 터질지 모르는 시한폭탄을 안고 있는 것과 같습니다. 오늘은 제가 직접 겪었던 '에이전트 외부 권한 사고 잔혹사'와 이를 완벽하게 통제해 낸 '인간 동의(Human-in-the-Loop) 승인 워크플로우' 구축기를 나눠보려고 합니다.

1. "버튼 한 번 잘못 눌러서 전송됐다고?" - 완전 자율화의 배신

고객 문의 내용을 분석하여 적절한 보상 기준을 정하고, 담당자 대신 외부 발송 시스템으로 보상 안내 메일을 자동 전송해 주는 에이전트를 가동하던 때였습니다. 초기 테스트에서는 성공률이 98%에 달해 '이제 내 손을 떠나 완벽하게 돌아가는구나'하고 뿌듯해했죠.

그런데 문맥이 모호한 복합 문의가 들어오자 사고가 터졌습니다. 에이전트가 고객의 의도를 잘못 해석하여, 보상 대상이 아닌 사용자에게 고액 환불 안내 메일을 자동으로 발송해 버린 것입니다. 뒤늦게 사실을 알고 식은땀을 흘리며 대처했지만, 사람의 검수 단계 없이 외부 시스템에 직접적인 영향을 미치는 권한을 AI에게 완전히 넘겨준 것이 얼마나 위험한지 깨달은 계기가 되었습니다.

2. 시행착오: 모든 단계에서 승인을 받으라고 지시했더니...

사고를 겪은 후, 저는 겁을 먹고 에이전트의 모든 실행 단계마다 사람의 확인을 받도록 프롬프트를 고쳤습니다. "1단계 수집 후 사람에게 물어봐라", "2단계 요약 후 승인을 기다려라"라고 지시한 것이죠.

하지만 이번엔 반대로 '자동화의 의미' 자체가 사라졌습니다. 별것도 아닌 단어 정리나 텍스트 정제 작업에서조차 에이전트가 멈춰 서서 승인을 기다리는 바람에, 개발자인 제가 온종일 승인 버튼만 누르고 있는 기이한 현상이 일어난 것입니다. 단순 작업의 속도는 살리면서, 위험한 순간에만 핀포인트로 사람을 개입시키는 '영리한 승인 기준선'이 절실했습니다.

💡 몬이쌤의 생각: 아이들에게 자율 학습을 시킬 때도 연필 깎는 것까지 일일이 허락받게 하면 주도성이 사라지지만, 도로를 건너거나 큰 결정을 할 때만 부모의 손을 잡게 하는 것과 똑같습니다. AI 에이전트 역시 '읽기(Read) 작업'은 자유롭게 맡기고, '쓰기·발송·삭제(Write/Send) 작업'에만 안전벨트를 걸어주어야 합니다.

3. 해결책: '위험도 기반 3단계 인간 동의(Human-in-the-Loop)' 인터럽트 구조

속도와 안전이라는 두 마리 토끼를 모두 잡기 위해, 저는 백엔드 아키텍처에 '동적 인터럽트(Interrupt) 승인 파이프라인'을 결합했습니다.

1단계 [작업 위험도 분류(Risk Leveling)]: 에이전트가 수행할 도구를 '안전 도구(DB 읽기, 웹 검색, 요약)'와 '위험 도구(DB 쓰기, 메일 발송, 결제)'로 엄격하게 등급을 나눕니다.
2단계 [안전 도구의 무중단 자율 실행]: 읽기나 분석 같은 안전 도구는 에이전트가 사람의 개입 없이 빛의 속도로 스스로 연쇄 실행(Auto-run)합니다.
3단계 [위험 도구 진입 시 상태 일시정지(State Pause) & Slack/이메일 알림]: 위험 도구를 호출하는 순간, 파이프라인이 현재 에이전트의 상태(State)를 DB에 일시 보관하고 프로세스를 '대기(Pending)' 상태로 전환합니다. 담당자 Slack으로 "발송 예정 내역"과 함께 [승인/거절] 버튼이 든 메시지를 쏘는 것이죠. 사람의 승인 신호가 들어와야 비로소 다음 노드가 가동됩니다.

4. 결과: 오발송 0건, 가장 완벽한 '인간과 AI의 공생'

위험도 기반 동적 인터럽트 승인 시스템을 도입한 이후, 외부 오발송이나 데이터 오염 사고가 100% 완벽하게 자취를 감추었습니다!

에이전트는 귀찮은 정보 수집과 초안 생성을 스스로 완벽히 끝내두고, 사람은 마지막 순간에 3초 동안 내용을 쓱 훑어보고 [승인] 버튼만 누르면 됩니다. 작업 시간은 90% 아끼면서도, 시스템의 최종 안정성은 사람이 100% 통제하는 완벽한 공생 아키텍처가 완성된 것이죠.

진정한 에이전트 기술의 완성은 '인간을 완전히 대체하는 것'에 있지 않습니다. '가장 위험한 순간에 사람의 지혜를 끌어들일 수 있도록 정교한 브레이크 시스템을 설계하는 것'이 바로 뛰어난 지능 설계자의 역량입니다.

여러분도 에이전트에게 일을 맡기면서 혹시나 터질 사고 때문에 불안해하고 계신다면, 전체 과정을 일시정지시키고 확인을 받을 수 있는 '인간 동의 승인 고리'를 걸어보세요. 편안한 마음과 압도적인 생산성을 동시에 얻게 되실 겁니다. 

같이 보면 좋은 글

PREV REPORT 이전 리포트 읽기