한 줄 정의

통과시켜도 되는지 검사하는 문. 에이전트의 브레이크


1. 비유로 이해하기

놀이공원 롤러코스터 입구를 떠올리면 된다.

  • 키 재는 막대 — 130cm가 안 되면 못 탄다
  • 표 검사 — 표가 없으면 못 들어간다
  • 직원 — “안전벨트 확인하셨나요?”

이 문들의 공통점은 통과시킬지 말지를 판단한다는 것이다. 그리고 더 중요한 공통점이 하나 있다. 문은 문제가 커지기 전에 앞에서 막는다. 롤러코스터가 출발한 다음에 “키가 작으시네요”라고 하면 이미 늦었다.

게이트는 통과, 차단, 우회 세 갈래로 흐름을 나눈다
그림 1. 게이트는 막기만 하는 장치가 아니라, 세 갈래로 길을 나누는 지점이다

2. 왜 필요한가

에이전트는 스스로 판단해서 행동한다. 그래서 “이 판단을 그대로 실행해도 되는가?”를 검사하는 문이 반드시 필요하다. 게이트가 없는 에이전트는 브레이크 없는 자동차다.

판단 기준은 딱 하나

“실수했을 때 되돌릴 수 있는가?”

행동 문이 필요한가 이유
파일 읽기 아니오 되돌릴 수 있다
검색하기 아니오 부작용이 없다
메일 보내기 보내면 회수 불가
파일 삭제 복구가 어렵다
결제하기 돈이 나간다
코드 배포 실제 서비스에 영향

게이트의 종류

승인 게이트 — 되돌릴 수 없는 행동 앞에서 사람에게 물어본다. HITL(Human-in-the-Loop)이라고도 부른다.

품질 게이트 — 다음 단계로 넘어가기 전에 자동으로 검사한다.

에이전트가 코드 작성
   ↓
[게이트 1] 문법 오류 없나? ──실패──▶ 다시 고쳐
   ↓ 통과
[게이트 2] 테스트 통과하나? ──실패──▶ 다시 고쳐
   ↓ 통과
[게이트 3] 사람 리뷰 ──────────────▶ 승인 후 반영

안전 게이트 — 들어오는 질문이 위험한 요청은 아닌지(입력), 나가는 답변에 개인정보나 API 키가 섞이지 않았는지(출력) 확인한다.

코드로 보면

앞서 본 하네스 루프에 게이트를 넣으면 이렇게 된다.

DANGEROUS_TOOLS = {"send_email", "delete_file", "make_payment"}

for call in response.tool_calls:
    # ▼▼▼ 여기가 게이트 ▼▼▼
    if call.name in DANGEROUS_TOOLS:
        print(f"[확인] {call.name} 을(를) 실행할까요?")
        print(f"       내용: {call.input}")
        if input("y/n > ") != "y":
            result = "사용자가 거절했습니다."
            messages.append(to_message(result))
            continue                  # 실행하지 않고 넘어간다
    # ▲▲▲ 게이트 끝 ▲▲▲

    result = run_tool(call.name, call.input)
    messages.append(to_message(result))

설계할 때 지킬 것

원칙 설명
누적을 봐야 한다 한 번에 1만 원씩 열 번이면 10만 원. 단계마다 통과해도 합계는 위험할 수 있다
문이 너무 많으면 무의미하다 매번 물어보면 사용자가 아무 생각 없이 y를 누른다
무엇을 승인하는지 보여줄 것 “메일 보낼까요?”가 아니라 “누구에게 무슨 내용을”
기본값은 차단 애매하면 막는 쪽. 모르는 것은 통과시키지 않는다

3. 어디서 만났나

이 용어 자체는 수업에서 정식으로 다루기 전에 따로 정리한 것이다. 다만 게이트가 필요한 이유는 이미 두 번 만났다.

7회차에서 에이전트가 파일을 고치고 명령어를 직접 실행하는 구조를 봤다. 스스로 실행한다는 건 곧 스스로 사고도 칠 수 있다는 뜻이었다.

7회차 — 에이전트, MCP, 스킬 — 범용 AI를 내 전용 조수로

8회차에서는 막혔을 때 되돌아올 자리를 남겨 두는 규율을 배웠다. 게이트는 그 “되돌아올 자리”를 사고가 나기 전에 만들어 두는 쪽의 장치다.

8회차 — MVP, 다 만들려 하지 말고 한 흐름이 끝까지 굴러가게


4. 헷갈리는 개념

이 용어 비슷하지만 다른 것 차이
게이트 에러 처리 에러 처리는 일이 터진 뒤 수습한다. 게이트는 터지기 전에 막는다
게이트 라우팅 게이트가 판단하고, 라우팅이 그 판단에 따라 실행한다. “이건 위험해”가 게이트, “그럼 사람에게 보내”가 라우팅
게이트 논리 게이트 (AND·OR·NOT) 전자회로의 게이트. “게이트”라는 말이 컴퓨터 분야로 들어온 출발점이지만, 층이 완전히 다르다
모델 밖의 게이트 모델 안의 게이트 모델 밖에서는 통과/차단의 문이다. 모델 안(LSTM, MoE)에서는 수도꼭지에 가깝다. 0과 1 사이 값으로 “얼마나 흘려보낼까”를 조절한다

5. 많이들 오해하는 지점

ㄱ. “문을 많이 세울수록 안전하다”

정반대다. 매번 확인을 요구하면 사람은 내용을 읽지 않고 y를 누르게 된다. 이걸 경고 피로(alert fatigue)라고 하는데, 이 상태가 되면 문이 백 개여도 실질적으로는 하나도 없는 것과 같다. 되돌릴 수 없는 것에만 문을 세워야 문이 의미를 갖는다.

ㄴ. “거절했으면 조용히 넘어가면 된다”

거절당했다는 사실을 모델에게 알려줘야 한다. 안 알려주고 그냥 건너뛰면 모델은 그 작업이 성공한 줄 알고 다음 단계로 넘어간다. “메일을 보냈으니 이제 답장을 기다리자”는 식으로 엉뚱한 길을 계속 간다. 거절 사실을 알려주면 모델은 “이건 하면 안 되는구나” 하고 다른 방법을 찾는다.

ㄷ. “게이트 = 차단”

문의 결과는 세 갈래다. 통과 / 차단 / 우회. 셋째가 특히 중요하다. 확신이 낮으면 더 검색하게 하고, 위험하면 사람에게 보내는 식으로 다른 길로 돌리는 것도 게이트의 일이다.


6. 관련 용어

하네스 · AI 에이전트 · 소프트맥스 · 루트 · MCP