← 모든 글

AI 에이전트 승인 프롬프트는 권한 부여가 아닙니다

OpenAI의 Agents SDK는 이제 사람의 승인을 실행 상태로 다룹니다. 민감한 도구 호출은 실행을 멈추고, 중단 항목을 표시하며, 결정을 RunState에 저장한 뒤, 승인 또는 거절 이후 같은 실행에서 다시 이어갈 수 있습니다.1

이 제품 구조는 한 가지를 제대로 짚었습니다. 승인은 채팅 기록에만 남아서는 안 되며, 실행 환경 안에 있어야 합니다.

그다음 더 어려운 질문이 따라옵니다. 사람은 실제로 무엇을 허가한 것일까요?

“셸 명령을 허용할까요?” 또는 “도구 호출을 승인할까요?”라고 묻는 승인 프롬프트는 사용자에게 그 순간을 믿으라고 요구합니다. 반면 진짜 권한 부여 기록은 행동의 범위를 정하고, 위험을 명시하며, 근거를 남기고, 만료 조건을 갖추고, 나중에 검토할 수 있는 흔적을 만듭니다. AI 에이전트에는 두 번째 형태가 필요합니다. 에이전트는 여러 단계를 거쳐 계획하고, 중첩된 도구를 호출하며, 거절된 뒤 다시 시도하고, 사람이 예를 눌러야 한다는 압박을 느낄 수 있는 결정 앞에 유창한 설명을 가져오기 때문입니다.

핵심 요약

AI 에이전트 승인 프롬프트는 권한 부여가 아닙니다. 프롬프트는 작업을 멈출 수 있지만, 권한 부여는 누가 권한을 주는지, 어떤 에이전트가 그 권한을 받는지, 어떤 도구가 실행될 수 있는지, 어떤 리소스에 접근할 수 있는지, 어떤 위험 분류가 적용되는지, 그 권한이 얼마나 오래 유지되는지, 어떤 근거가 결정을 뒷받침했는지, 운영자가 어떻게 철회할 수 있는지를 정의해야 합니다. 팀은 승인을 채팅 중단이 아니라 범위가 정해진 권한 객체로 설계해야 합니다. 올바른 질문은 “누군가 승인 버튼을 눌렀는가?”가 아닙니다. 올바른 질문은 “책임 있는 사람이 어떤 제약 아래 어떤 구체적인 행동을 허가했는가?”입니다.

핵심 내용

제품 팀을 위해: - 승인을 행동, 리소스, 위험, 근거, 만료, 롤백을 담은 형식화된 결정 객체로 표시하세요. - 위험이 낮은 확인과 위험이 높은 권한 부여를 분리하세요.

보안 팀을 위해: - 반복되는 승인 프롬프트를 단순한 UX 문제가 아니라 공격 표면으로 다루세요. - 허용, 거부, 자동 허용, 자동 거부, 만료, 철회를 모두 기록하세요.

에이전트 구축자를 위해: - 에이전트가 이미 결과를 만들어낸 뒤가 아니라, 되돌릴 수 없는 행동 전에 멈추세요. - 거절은 모호한 실패가 아니라 제약이 담긴 지시로 모델에 다시 전달하세요.

운영자를 위해: - 대상 리소스, 권한 범위, 롤백 경로가 보이지 않는 도구 호출은 절대 승인하지 마세요. - 오래 남는 “항상 승인” 습관보다 짧게 유지되는 범위 제한 승인을 선호하세요.

승인 프롬프트는 왜 실패할까요?

승인 프롬프트는 맥락이 많은 결정을 맥락이 적은 클릭으로 압축할 때 실패합니다.

에이전트는 프롬프트가 보여주는 것보다 더 많은 맥락을 갖고 있습니다. 파일을 읽고, 스레드를 요약하고, 순서를 계획하고, 도구를 선택하고, 인자를 채우고, 실행 시점을 골랐을 수 있습니다. 그런데 승인 프롬프트는 대개 마지막 단계만 보여줍니다. 사용자는 명령, API 호출, 브라우저 동작, 또는 허락을 요청하는 같은 에이전트가 쓴 문장만 보게 됩니다.

이런 인터페이스는 4가지 실패를 만듭니다.

실패 발생하는 일
범위 손실 사용자는 도구 이름은 보지만 리소스, 테넌트, 파일, 계정, 영향 반경은 보지 못합니다.
근거 손실 사용자는 요청된 행동은 보지만 그 행동이 타당하다는 증거는 보지 못합니다.
피로 사용자는 거절하면 실행이 느려지기 때문에 반복되는 프롬프트를 승인합니다.
설득 에이전트는 위험한 행동을 자신 있고 매끄러운 말로 감쌉니다.

OWASP의 Agentic Top 10은 설득 실패를 직접 지목합니다. 릴리스 글은 ASI09, Human-Agent Trust Exploitation에서 자신감 있는 설명이 인간 운영자를 오도해 해로운 행동을 승인하게 만들 수 있다고 말합니다.2 이 위험에는 악의적인 모델이 필요하지 않습니다. 도움이 되려는 에이전트도 약한 계획을 과장하거나, 불확실성을 축소하거나, 무해한 행동의 연속 안에 위험한 도구 호출을 묻어둘 수 있습니다.

그래서 승인에는 더 나은 형태가 필요합니다. 사람은 요청 말풍선이 아니라 행동 기록을 승인해야 합니다.

승인은 무엇을 허가해야 할까요?

진지한 승인은 경계가 정해진 조건 안에서 하나의 구체적인 행동을 허가해야 합니다.

“Authenticated Delegation and Authorized AI Agents” 논문은 더 넓은 문제를 위임된 권한으로 설명합니다. 사용자는 에이전트별 자격 증명, 메타데이터, 감사 가능한 접근 제어 설정을 통해 에이전트 권한을 제한하고 책임 사슬을 명확히 유지할 방법이 필요합니다.3

이 관점은 제품 설계에 깔끔하게 대응됩니다. 승인에는 다음 항목이 있어야 합니다.

필드 중요한 이유
행위자 어떤 계정, 작업 맥락, 에이전트, 운영자가 요청의 주체인가요?
도구 어떤 도구, 커넥터, MCP 서버, 셸 명령, 브라우저 동작이 실행되나요?
행동 호출이 읽기, 초안 작성, 쓰기, 삭제, 게시, 내보내기, 지출, 배포, 관리 중 무엇을 하나요?
리소스 어떤 파일, 레코드, 테넌트, 저장소, 계정, 환경, 고객, URL에 닿나요?
근거 어떤 테스트, diff, 출처 확인, 미리보기, 정책 검사가 이 행동을 정당화하나요?
위험 분류 데이터, 돈, 보안, 공개 표면, 되돌릴 수 있는지에 따라 낮음, 중간, 높음, 차단 중 어디에 해당하나요?
기간 한 번의 호출, 한 번의 실행, 한 작업, 1시간, 또는 수동 철회 전까지인가요?
롤백 운영자는 행동을 어떻게 되돌리거나 제한할 수 있나요?
감사 위치 검토자가 나중에 어디에서 결정을 확인할 수 있나요?

이런 필드가 없으면 승인은 버튼이 달린 느낌에 의존한 판단이 됩니다. 모델은 공손하게 요청할 수 있습니다. 사람은 빠르게 클릭할 수 있습니다. 하지만 그 어느 것도 그 행동이 정당했음을 증명하지 않습니다.

승인 상태는 어떻게 작동해야 할까요?

승인 상태는 멈춤을 견뎌야 하지만, 범위는 좁게 유지되어야 합니다.

OpenAI의 Agents SDK 문서는 유용한 실행 환경 패턴을 설명합니다. 도구는 needs_approval을 선언할 수 있고, runner는 실행 전에 승인 규칙을 평가하며, 해결되지 않은 승인은 중단 항목으로 나타납니다. 개발자는 보류 중인 각 항목을 승인하거나 거절할 수 있고, 실행은 RunState에서 다시 이어집니다.1 문서는 같은 실행 안의 이후 호출에 적용되는 always_approve, always_reject 같은 고정 결정도 설명합니다.1

상태 기계가 중요한 이유는, 멈춘 에이전트 실행이 기억에서 다시 시작하거나, 의도를 재구성하거나, 승인 맥락을 잃어서는 안 되기 때문입니다. 중단된 지점에서 결정이 붙은 상태로 이어져야 합니다.

고정 결정 옵션은 다음 설계 요구사항을 만듭니다. 모든 고정 승인에는 범위와 만료가 필요합니다.

고정 결정 더 안전한 경계
read_file 항상 승인 현재 실행에서 프로젝트 루트 아래 읽기만 승인합니다.
shell 항상 승인 셸 전체를 절대 승인하지 마세요. 명령 계열, 경로, 인자 패턴을 승인하세요.
send_email 항상 승인 초안 작성만 승인하고, 발송 전에는 수신자별 승인을 요구하세요.
deploy 항상 승인 고정 배포 승인은 피하세요. 각 배포마다 릴리스 근거를 요구하세요.
delete 항상 거절 삭제는 기본적으로 거절하되, 의도적인 정리를 위한 별도 복구 절차를 두세요.

고정 승인은 피로를 줄일 수 있습니다. 하지만 지나치게 넓은 고정 승인은 피곤해서 누른 한 번의 클릭을 한 실행 전체의 영향 반경으로 바꿀 수 있습니다.

승인은 실행 환경의 어디에 있어야 할까요?

승인은 확정 지점 전에 있어야 합니다.

확정 지점은 에이전트가 되돌릴 수 있는 작업에서 부작용이 있는 작업으로 넘어가는 순간입니다. 프로덕션 리소스를 수정하거나, 메시지를 보내거나, 돈을 쓰거나, 콘텐츠를 게시하거나, 데이터를 삭제하거나, 키를 교체하거나, 권한을 변경하거나, 코드를 배포하는 순간이 여기에 해당합니다. 확정 지점 이후의 사람 승인은 권한 부여가 아니라 사고 대응입니다.

인간 감독 관련 문헌도 이 구분을 뒷받침합니다. 2026년 AI and Ethics 논문은 AI가 생성하거나 행동하는 작동 행위성과, 사람이 평가하고 이의를 제기하며 재정의할 수 있는 평가 행위성을 구분합니다.4 효과적인 감독은 사람이 모든 토큰을 지켜보는 방식에 의존할 수 없습니다. 인터페이스는 사람의 판단이 아직 결과를 바꿀 수 있는 지점에 판단을 남겨두어야 합니다.

이로부터 에이전트 제품에는 간단한 규칙이 생깁니다.

실행 단계 승인 패턴
되돌릴 수 있는 탐색 정책 안에서 에이전트가 일하게 두고 행동을 기록합니다.
초안 작성 에이전트가 산출물을 준비하게 하고 미리보기와 근거를 보여줍니다.
위험 분류 사용자에게 묻기 전에 위험을 계산합니다.
확정 지점 정책이 요구할 때 사람의 권한 부여를 위해 멈춥니다.
실행 후 결과, 증빙, 롤백 상태를 기록합니다.

에이전트가 이미 위험한 부분을 실행한 뒤 나타나는 프롬프트는 겉치레만 만듭니다. 시스템이 이미 권한을 써버렸다면 사람은 평가 행위성을 행사할 수 없습니다.

승인 피로를 어떻게 막을 수 있을까요?

승인 피로는 보안 버그입니다. 피로는 결정을 바꾸기 때문입니다.

한 번의 실행이 40번의 승인을 요구한다면, 사용자가 클릭하기 전에 제품은 이미 실패했을 가능성이 큽니다. 운영자는 각 항목을 판단하는 일을 멈추고 짜증을 관리하기 시작합니다. 공격자는 반복 요청을 만들거나, 위험한 행동을 묶음 안에 숨기거나, 위험한 호출이 일상적인 작업처럼 느껴지는 표현을 사용해 이 패턴을 악용할 수 있습니다.

OWASP의 Agentic Top 10은 인간-에이전트 신뢰 악용을 1급 위험 범주로 다룹니다.2 에이전트 보안 연구도 시스템 측면에서 같은 형태에 도달합니다. 2026년 3월 에이전트형 AI 보안 체계화 연구는 프롬프트 주입, 지식 기반 오염, 도구와 플러그인 악용, 다중 에이전트 위협 전반에서 신뢰 경계를 매핑하고, 실행 중 감시와 사고 대응 제어도 요구합니다.5 2026년 5월 보안 감사 가능한 에이전트에 관한 논문은 시스템이 기능, 기억, 목표, 추론 경로, 행동을 질의 가능한 감사 경로로 연결하지 못하면 정적 자재 명세서와 실행 로그가 조각난 근거만 제공한다고 주장합니다.6

승인 설계는 가치가 낮은 프롬프트를 없애고 가치가 높은 프롬프트의 품질을 높여 피로를 줄여야 합니다.

패턴 더 나은 설계
모든 도구 호출마다 묻기 위험을 분류하고 범위 안의 낮은 위험 읽기는 자동 허용합니다.
무서운 셸 프롬프트 하나 명령, 경로, 작업, 네트워크 사용, 파괴적 플래그를 파싱합니다.
“한 번 허용”만 제공 도구 계열, 리소스, 기간, 제한이 있는 범위 제한 권한을 제공합니다.
“항상 승인” 실행 한정 승인에 보이는 만료와 철회 제어를 제공합니다.
긴 자연어 근거 주장, 근거, 위험, 롤백, 정확한 인자를 보여줍니다.
거절을 실패로 처리 거절이 에이전트를 안전한 대안으로 돌리게 합니다.

목표는 제어를 줄이는 것이 아닙니다. 의미 없는 제어를 줄이는 것입니다.

승인 UI는 무엇을 보여줘야 할까요?

승인 UI는 에이전트의 성격이 아니라 결정을 보여줘야 합니다.

작고 밀도 있는 결정 카드에서 시작하세요.

필드 예시
행동 블로그 번역 행을 D1에 게시
행위자 블로그 릴리스 에이전트, 실행 release-1427, 운영자 Blake
도구 blog_translate_batch.py D1 업로드 경로
범위 슬러그 ai-agent-approval-prompts-not-authorization, 로캘 ja, ko, zh-Hans, zh-Hant, de, fr, es, pl, pt-BR
근거 로컬 검증 기준 9/9 통과, 동등성 통과, 비밀 정보 검사 이상 없음
위험 공개 콘텐츠, purge와 D1 롤백으로 되돌릴 수 있음
만료 업로드 시도 1회
결정 승인, 거절, 근거 요청, 범위 분할

이 카드는 사용자가 한 가지 질문에 답하도록 돕습니다. 요청된 행동이 근거와 범위에 맞는가?

카드는 정확한 인자를 숨기면 안 됩니다. 거절을 숨기면 안 됩니다. “승인”만 제대로 설계된 경로이고 “거절”은 예외처럼 동작하게 만들면 안 됩니다. 좋은 승인 표면은 거절을 정상적인 제어 신호로 다룹니다. 에이전트는 정확한 메시지를 받아야 합니다. 예를 들어 “출처 URL이 검증되지 않았기 때문에 거절됨” 또는 “명령이 릴리스 범위 밖의 파일에 닿기 때문에 거절됨”처럼 말입니다.

팀은 무엇을 먼저 만들어야 할까요?

더 예쁜 프롬프트보다 승인 장부를 먼저 만드세요.

최소 장부 필드:

  1. 실행 ID.
  2. 에이전트 ID.
  3. 운영자 ID.
  4. 도구 이름.
  5. 도구 인자.
  6. 대상 리소스.
  7. 위험 분류.
  8. 트리거된 승인 규칙.
  9. 근거 위치.
  10. 결정: 승인, 거절, 자동 승인, 자동 거절, 만료, 철회.
  11. 결정 시간.
  12. 만료 조건.
  13. 실행 후 결과.
  14. 롤백 또는 제한 조치 위치.

장부는 승인을 UI 이벤트에서 책임 기록으로 바꿉니다. 또한 팀이 나중에 더 나은 질문을 할 수 있게 해줍니다.

  • 어떤 도구가 승인을 너무 자주 요구하나요?
  • 어떤 운영자가 높은 위험 행동을 가장 빨리 승인하나요?
  • 어떤 승인 규칙이 오탐을 일으키나요?
  • 거절된 행동 중 나중에 안전한 대안을 찾은 것은 무엇인가요?
  • 승인된 행동 중 롤백을 일으킨 것은 무엇인가요?
  • 어떤 고정 권한이 너무 오래 살아 있었나요?

2026년 5월 운영체제(OS) 보안 논문은 에이전트가 리소스 격리, 권한 분리, 중재된 통신이라는 익숙한 OS식 문제에 직면한다고 주장합니다.7 승인도 같은 계열에 속합니다. 실행 환경은 운영체제가 권한 있는 작업을 중재하듯 권한을 중재해야 합니다. 좁고, 일관되며, 요청보다 오래 남는 로그와 함께 말입니다.

짧은 정리

AI 에이전트 승인은 권한 부여 객체가 되어야 합니다. 멈추고 클릭하는 프롬프트는 도구 호출을 중단시킬 수 있지만, 그 자체로 책임성을 담을 수는 없습니다. 쓸모 있는 승인 시스템은 행위자, 행동, 리소스, 위험, 근거, 기간, 만료, 철회, 감사를 정의합니다.

제품 관점의 교훈은 분명합니다. 낮은 위험 작업은 조용하게 만들고, 높은 위험 작업은 명확하게 만들며, 시스템이 범위가 정해진 행동 기록을 보여줄 수 있는데도 사람에게 유창한 설명을 승인하라고 요구하지 마세요.

FAQ

AI 에이전트에서 승인과 권한 부여는 무엇이 다른가요?

승인은 사람이 내리는 결정 이벤트입니다. 권한 부여는 에이전트가 정의된 조건 아래 구체적인 행동을 수행할 수 있게 하는 범위 제한 권한입니다. 강한 에이전트 시스템은 둘을 연결합니다. 사람의 승인은 리소스, 위험, 만료, 근거, 감사 필드를 갖춘 좁은 권한 기록을 만듭니다.

모든 AI 에이전트 도구 호출에 승인이 필요할까요?

아닙니다. 팀은 위험에 따라 승인을 라우팅해야 합니다. 알려진 범위 안의 낮은 위험 읽기는 로그를 남기며 조용히 실행될 수 있습니다. 중간 위험 행동은 검토를 위해 묶을 수 있습니다. 메시지 발송, 게시, 삭제, 배포, 지출, 내보내기, 권한 변경 같은 높은 위험 행동은 실행 전에 멈춰야 합니다.

AI 에이전트에 고정 승인은 안전한가요?

고정 승인은 범위가 좁고, 짧게 유지되며, 눈에 보일 때 도움이 될 수 있습니다. 읽기 전용 도구에 대한 실행 한정 승인은 합리적일 수 있습니다. 셸, 배포, 결제, 이메일 발송, 삭제 행동에 대한 넓은 고정 승인은 한 번의 결정에서 너무 많은 권한을 만들어냅니다.

AI 에이전트 승인 프롬프트에는 무엇이 포함되어야 하나요?

승인 프롬프트에는 행동, 리소스, 도구 인자, 행위자, 위험 분류, 근거, 만료, 롤백 경로, 감사 위치가 포함되어야 합니다. 또한 승인만이 아니라 거절, 근거 요청, 범위 분할 결정도 제공해야 합니다.

팀은 에이전트 제품에서 승인 피로를 어떻게 줄일 수 있나요?

팀은 정책 안의 낮은 위험 행동을 자동 허용하고, 중간 위험 결정을 묶고, 확정 지점에서만 중단하며, 구조화된 근거를 보여주고, 권한을 만료시키고, 거절을 정상적인 제어 경로로 기록함으로써 피로를 줄일 수 있습니다. 더 나은 승인은 모호한 질문을 적게 묻고, 더 정확한 질문을 묻습니다.


참고 자료


  1. OpenAI, “Human-in-the-loop,” OpenAI Agents SDK 문서, 2026년 5월 18일 접속. needs_approval, 보류 중인 승인 중단, RunState, 승인과 거절 처리, 고정 승인 결정, hosted MCP 승인 지원, 일시 중지와 재개 동작의 출처. 

  2. John Sotiropoulos, Keren Katz, and Ron F. Del Rosario, “OWASP Top 10 for Agentic Applications - The Benchmark for Agentic Security in the Age of Autonomous AI,” OWASP GenAI Security Project, 2025년 12월 9일. Agentic Top 10 릴리스, 전문가 검토 관점, 매끄러운 설명이 운영자를 오도해 해로운 승인을 하게 만들 수 있다는 ASI09 Human-Agent Trust Exploitation 표현의 출처. 

  3. Tobin South, Samuele Marro, Thomas Hardjono, Robert Mahari, Cedric Deslandes Whitney, Dazza Greenwood, Alan Chan, and Alex Pentland, “Authenticated Delegation and Authorized AI Agents,” arXiv:2501.09674, 2025년 1월 16일 제출. 위임된 권한, 에이전트별 자격 증명과 메타데이터, 권한 범위 지정, 책임 사슬, 자연어 권한을 감사 가능한 접근 제어 설정으로 변환하는 내용의 출처. 

  4. Liming Zhu, Qinghua Lu, Ming Ding, Sung Une Lee, Chen Wang, et al., “Designing meaningful human oversight in AI,” AI and Ethics, 2026년 5월 4일 출판. 작동 행위성과 평가 행위성의 구분, 해결-검증 비대칭, 감독 메커니즘, 인간 감독에는 높은 수준의 원칙만이 아니라 구체적인 인터페이스 메커니즘이 필요하다는 주장의 출처. 

  5. Ali Dehghantanha and Sajad Homayoun, “SoK: The Attack Surface of Agentic AI - Tools, and Autonomy,” arXiv:2603.22928, 2026년 3월 24일 제출. 프롬프트 주입, RAG 오염, 도구와 플러그인 악용, 에이전트 간 위협, 실행 중 감시, 사고 대응 제어 전반의 신뢰 경계 관점에 대한 출처. 

  6. Chaofan Li, et al., “Towards Security-Auditable LLM Agents: A Unified Graph Representation,” arXiv:2605.06812, 2026년 5월 7일 제출. Agent-BOM, 정적 SBOM과 실행 로그의 조각난 근거 한계, 질의 가능한 감사 경로, 도구 오용, 기억 오염, 공급망 탈취, 신뢰 악용을 포함한 공격 사슬 재구성에 대한 출처. 

  7. Lukas Pirch, Micha Horlboge, Patrick Grossmann, Syeda Mahnur Asif, Klim Kireev, Thorsten Holz, and Konrad Rieck, “Toward Securing AI Agents Like Operating Systems,” arXiv:2605.14932, 2026년 5월 14일 제출. 리소스 격리, 권한 분리, 통신 중재, 기존 운영체제(OS) 보안 기법을 agentic 시스템에 적용하는 OS 보안 비유의 출처. 

관련 게시물

MCP 도구에는 작업 수준 권한 부여가 필요합니다

MCP 도구에는 작업 수준 권한 부여가 필요합니다. 에이전트가 실행되기 전에 bearer token 검증은 도구별, 역할별, 작업별 권한 확인으로 이어져야 합니다.

11 분 소요

포크 폭탄이 우리를 구했다

LiteLLM 공격자는 구현 과정에서 실수 하나를 저질렀어요. 그 실수가 47,000건의 설치를 46분 만에 발각시킨 유일한 이유였습니다.

4 분 소요

Ralph 루프: 자율 AI 에이전트를 밤새 운영하는 방법

중지 훅, 스폰 예산, 파일 시스템 메모리를 활용한 자율 에이전트 시스템을 구축했습니다. 실패 사례와 실제로 코드를 출시하게 된 과정을 공유합니다.

8 분 소요