← 뉴스레터

2026-06-21

'하지 마'라고 적어두면 결국 한다 — 에이전트는 규칙이 아니라 자물쇠로 막는다

에이전트를 오래 굴리며 받아들이게 된 불편한 전제가 하나 있다. AI 에이전트는, 할 수 있는 일이면 한다. ‘하지 마’라고 아무리 정중하게 적어둬도, 그 행동을 물리적으로 막아두지 않으면 언젠가 한다. 악의가 아니다. 그냥 가능한 경로가 열려 있으면 밟는다. 사람도 비슷하지만, 에이전트는 망설임이 없어서 더 그렇다.


처음엔 나도 규칙으로 다 될 줄 알았다. 시스템 안내문에 “비용 드는 도구는 먼저 물어라”, “외부로 메시지 보내기 전엔 확인받아라” 같은 문장을 차곡차곡 박았다. 잘 지켜질 때도 많았다. 그런데 문제는, 안 지켜질 때 그게 사고가 된다는 것이다. 규칙은 길어질수록 권고가 되고, 권고는 바쁜 순간에 가장 먼저 무시된다.

결정적인 장면이 하나 있었다. 집의 정수기를 음성으로 제어하게 해뒀는데, 어느 날 자동 점검 흐름이 “정수기 동작 확인”을 한다며 한밤중에 물을 토출할 뻔했다. 코드상으로는 충분히 가능한 일이었다. 막아둔 게 글로 쓴 “함부로 물 내리지 마” 한 줄뿐이었으니까. 물 한 잔이라 다행이었지, 그게 결제나 발송이었으면 웃지 못했을 것이다.

규칙은 코드여야 한다

그래서 방향을 바꿨다. 막고 싶은 행동은 ‘하지 마’라고 적는 대신, ‘할 수 없게’ 만들기로 했다. 물 토출은 명시적인 허가 표식이 함께 들어왔을 때만 실행되도록 잠갔다. 사람이 직접 “물 줘”라고 말한 그 순간에만 허가 표식이 붙고, 자동 점검이나 예약 흐름에서는 그 표식이 없으니 아예 실행 자체가 막힌다. 같은 함수인데, 누가 어떤 맥락에서 불렀느냐로 문이 열리고 닫힌다.

외부 발송에도 같은 걸 씌웠다. 메시지를 밖으로 내보내는 행위는, 발사 직전에 1회용 인가 표를 한 장 소비해야만 나가도록 했다. 표가 없으면 명령은 그냥 멈춘다. 표는 사람의 명시적 트리거가 있을 때만 발급되고, 한 번 쓰면 사라진다. 그래서 “혹시 몰라 한 번 더” 같은 자동 재시도가 같은 표로 두 번 나가는 일도 막힌다.

이 둘은 출발은 달랐지만 모양이 같았다. 둘 다 “조심하라는 문장”이 아니라 “허가 없이는 안 돌아가는 자물쇠”였다. 그래서 이 패턴을 하나의 재사용 가능한 잠금장치로 묶었다. 외부에 영향을 주는 행위는 두 가지 중 하나를 통과해야만 실행된다. 그 행위 종류에 맞는 허가 표식(환경값)이 켜져 있거나, 아니면 1회용 인가 표를 소비하거나. 둘 다 없으면 멈춘다. 기존 발신 흐름은 그대로 두면서, 위험한 문 앞에만 자물쇠를 덧댄 셈이다.

핵심은 신뢰의 위치를 옮긴 것이다. “에이전트가 규칙을 잘 지킬 것”을 믿는 대신, “허가 없이는 함수가 안 돈다”를 믿는다. 앞은 매번 모델의 판단에 기대지만, 뒤는 한 번 박아두면 모델이 무슨 생각을 하든 결과가 같다.

그런데 다 잠그면 자동화가 죽는다

여기서 한 가지를 더 배웠다. 자물쇠가 좋다고 모든 문에 다 채우면, 그건 그냥 자동화를 끄는 것이다. 나는 자는 동안에도 빌드가 돌고, 앱이 배포되고, 글이 발행되길 바란다. 그 흐름마다 “확인해 주세요”가 끼면, 손 안 대는 자동화라는 본질이 무너진다. 잠금장치의 함정은 과소가 아니라 과잉 쪽에 있다.

그래서 처음엔 외부로 나가는 모든 걸 인가 표로 막으려다, 방향을 좁혔다. 기준은 “이게 누구에게 닿느냐”다. 빌드·배포·릴리즈처럼 결과가 시스템과 저장소에 남는 일은, 손 안 대고 끝까지 돌게 둔다. 잘못돼도 되돌리거나 다시 굴릴 수 있는 일들이다. 반대로 문자나 메일처럼 사람에게 직접, 한 번 가면 못 줍는 메시지는 다르게 다룬다. 이건 막는 게 아니라, 최종 전송 직전에 초안을 나에게 한 번 보여주고 확인받은 뒤 보내는 쪽으로 좁혔다.

말하자면 자물쇠를 두 종류로 나눈 것이다. 되돌릴 수 있는 외부 행위는 자율로 흐르게 두고, 사람에게 직접 닿는 비가역 발송만 “초안 검토” 문을 세운다. 모든 문을 잠그는 게 아니라, 가장 비싼 실수가 나는 문 하나만 골라 잠근다.

배운 것

세 줄로 줄인다.

첫째, 글로 쓴 금지는 권고다. 진짜로 막고 싶으면 ‘하지 마’가 아니라 ‘할 수 없게’로 바꾼다. 규칙은 길어질수록 약해지고, 자물쇠는 길어질 일이 없다.

둘째, 신뢰는 모델이 아니라 구조에 둔다. “잘 판단하겠지”를 믿는 대신, “허가 없이는 안 돈다”를 믿는다. 그래야 바쁜 새벽 세 시에도 결과가 같다.

셋째, 다 잠그면 자동화가 죽는다. 잠금의 기술은 빠짐없이 채우는 게 아니라, 비가역적이고 사람에게 직접 닿는 문 하나를 골라 거기만 채우는 것이다.

에이전트는 가능한 일을 한다 — 이건 결함이 아니라 성질이다. 그 성질을 탓하는 대신, 위험한 문 앞에 자물쇠를 하나씩 다는 일. 좋은 에이전트 시스템은 똑똑한 한 문장이 아니라, 실패가 반복될 때마다 늘어나는 작은 자물쇠들로 만들어진다.

— 강대종 / @ssamssae