Skip to Content
시작하기승인이 떴을 때

승인이 떴을 때

UpServe 에이전트는 사용자를 대신해 여러 가지 도구를 자율적으로 사용합니다. 그중 결과가 되돌리기 어렵거나 외부에 영향을 주는 동작 — 예: 새로운 스킬 설치, 팀 구성원 생성, 결제·전송·삭제가 일어날 수 있는 화면 조작 — 은 사용자에게 한번 물어본 뒤 실행됩니다. 이 안내는 그 “물어보는 화면”이 떴을 때 어떻게 반응하면 되는지 알려줍니다.

왜 승인이 뜨나요?

에이전트는 똑똑하지만, 사용자의 의도를 100% 알지는 못합니다. 그래서 UpServe는 다음 두 가지를 분리합니다.

  • 즉시 실행해도 안전한 일 — 검색, 읽기, 정리, 메모 등은 그냥 진행합니다.
  • 한번 확인이 필요한 일 — 외부에 영향이 가거나 비용·삭제·제출이 발생할 수 있는 일은 채팅에 승인 카드가 떠서 사용자의 선택을 기다립니다.

이런 방식을 흔히 “사람의 손이 한 번 거치는 자동화”라고 합니다. 자율성을 유지하면서도 큰 사고를 막아주는 안전장치입니다.

자동 실행 vs 승인 필요

각 도구는 두 가지 모드 중 하나로 설정돼 있습니다.

  • 자동 실행 — 에이전트가 묻지 않고 바로 사용
  • 승인 필요 — 에이전트가 사용하려고 할 때마다 사용자에게 묻기

설정을 바꾸려면 에이전트 상세 화면 → 설정 탭 → 활성화된 도구 섹션을 펼치면, 각 도구 옆에 자동 실행 / 승인 필요 토글이 있습니다. 처음 설정되어 있는 도구는 다음과 같습니다.

  • 승인 필요 (기본): 새로운 스킬 설치, 팀 에이전트 생성, 스케줄 만들기/변경/삭제, 파일 외부 공유, 서브 에이전트 실행, 팀원에 도구·스킬 장착, POST/PUT/DELETE 같은 외부 API 호출
  • 자동 실행 (기본): 웹 검색·읽기, 메모 작성, GET 방식의 API 조회, 팀 채팅 전송 등

여기에 더해, 에이전트가 컴퓨터 화면을 직접 조작하다가 결제·전송·동의·삭제처럼 위험한 단계에 도달했다고 스스로 판단하면, 도구가 “승인 필요”로 설정돼 있지 않더라도 그 한 번의 동작에 한해 확인을 요청합니다.

사용자가 “이 도구는 매번 묻지 말고 그냥 써도 돼”라고 판단되면 토글을 자동 실행으로 바꾸면 됩니다. 반대로 평소 안전한 도구라도 “조심해서 다뤄줘”라고 하고 싶으면 승인 필요로 바꿀 수 있습니다.

승인 화면에서 무엇이 보이나요?

승인이 필요한 순간이 오면 채팅 흐름 안에 카드가 한 장 끼어듭니다. 카드에는 다음이 보입니다.

  • 어떤 도구를 쓰려는지 — 예: skill_install, team_agent_create, 또는 스킬 이름
  • 무엇을 하려는지 — 도구가 받을 입력값의 요약 (예: 설치하려는 스킬 이름·설명, 만들려는 팀원 이름)
  • 왜 필요한지 — 에이전트가 스스로 적어둔 한두 줄 사유 (특히 위험할 수 있는 화면 조작의 경우)
  • 남은 응답 시간 — 카드 아래쪽에 타이머가 표시됩니다. 시간 안에 답이 없으면 자동으로 닫히며, 에이전트가 그 도구 없이 진행할지 다른 방법을 찾을지 스스로 결정합니다.

승인 / 거부 / 그냥 두기

카드에는 두 개의 버튼이 있습니다.

  • 승인 — 에이전트가 곧바로 해당 도구를 실행하고 결과를 채팅에 이어 붙입니다.
  • 거부 — 에이전트는 그 도구를 쓰지 않고, 다른 방법을 찾거나 사용자에게 다시 묻습니다. 거부 사유를 함께 적어주면 에이전트는 그 의사를 자기 메모에 남겨, 같은 요청을 반복하지 않습니다.

버튼 대신 채팅창에 짧게 답해도 됩니다 (카드가 떠 있는 동안, 직접 대화 중일 때만 인식됩니다). 승인으로 인식하는 표현: “승인”, “허용”, “확인”, “허가”, “ㅇㅋ”, “yes”, “ok”, “approve”, “allow”, “confirm”. 거부로 인식하는 표현: “거부”, “거절”, “취소”, “불허”, “no”, “deny”, “cancel”, “reject”, “disallow”. 위 목록에 없거나 의미가 애매하면 안전을 위해 거부로 처리됩니다.

응답하지 않으면 타이머가 끝나는 순간 자동으로 닫힙니다. 이 경우 에이전트는 “사용자가 응답하지 않았다”는 사실을 알고, 그 도구 없이 진행하거나 다음 기회에 다시 묻습니다.

자율 실행 중 승인이 떴다면

에이전트는 사용자와 대화할 때만 일하지 않습니다. 스케줄 시간이 되어 깨어나거나, 웹훅이 도착해서 자동으로 실행되는 도중에도 승인이 필요한 단계에 도달할 수 있습니다. 이때:

  • 카드는 그대로 해당 에이전트의 채팅에 쌓입니다.
  • 알림을 켜둔 사용자에게는 푸시 알림으로 “승인 요청이 있어요”라고 알려 옵니다.
  • 스케줄·하트비트·웹훅으로 깨어난 백그라운드 실행에서는 사용자가 바로 답하기 어려운 점을 감안해, 응답 대기 시간이 평소보다 길게 설정됩니다. 또한 백그라운드 실행이 아닌 일반 채팅 중이라도, 응답 대기 시간이 10분(600초) 이상인 도구에서 승인 카드가 뜨면 별도로 푸시 알림이 전송됩니다.

알림을 받으려면 알림 설정 에서 푸시 알림을 켜두세요.

흔한 시나리오

1) 마켓플레이스에서 새 스킬을 설치하려 할 때

에이전트가 “이번 작업에는 이 스킬이 도움이 될 것 같아요”라고 판단하면 설치 도구를 부릅니다. 카드에 스킬 이름·설명과 함께 “왜 필요한지” 사유가 표시됩니다. 신뢰할 수 있는 패키지면 승인, 아니면 거부 후 “그 스킬 말고 다른 방법으로 해줘”라고 적어 주세요.

2) 팀에 새 전문가 에이전트를 만들려 할 때

리더 에이전트가 “이 일을 잘하는 동료를 새로 뽑을게요”라며 팀원 생성을 시도하면 카드가 뜹니다. 어떤 이름·역할의 에이전트가 생기는지 확인하고 승인하세요. 거부하면 리더는 기존 팀원만으로 처리합니다.

3) 에이전트가 외부 사이트에서 결제·전송 단계에 도달했을 때

에이전트가 웹 브라우저를 조작하다가 “결제 확인”, “게시”, “전송”, “삭제” 같은 버튼을 누르려 하면 그 한 번에 한해 승인이 떠오릅니다. 카드의 사유를 잘 읽고 진행 여부를 결정하세요.

4) 에이전트가 직접 만든 스킬을 패키지로 내보낼 때

에이전트가 자기 작업을 재사용 가능한 스킬로 묶어두려 하면 리뷰 카드가 뜹니다. 승인 카드와는 달리, 이 화면에서는 이름·설명·공개 여부를 사용자가 직접 편집한 뒤 확정합니다. 확정해도 곧바로 외부에 공개되지는 않습니다.

웹 브라우저 조작 시 승인 기준

에이전트가 웹 사이트를 직접 열고 클릭·입력하는 작업(웹 브라우저 도구)은 같은 “클릭”이라도 그 클릭이 무엇을 일으키느냐에 따라 자동 진행과 승인 요청이 갈립니다.

항상 자동 진행되는 동작

다음은 결과를 되돌릴 수 있거나 아무것도 바꾸지 않는 동작이므로 승인 없이 자동 진행됩니다.

  • 페이지 스냅샷 찍기, 스크롤, 마우스 올리기(호버), 앞·뒤 이동
  • 현재 URL 확인, 페이지 제목 확인, 특정 요소가 화면에 있는지 확인
  • 특정 항목이 로딩될 때까지 기다리기

항상 승인이 필요한 동작

아래 상황은 이전에 승인 없이 넘어가는 것처럼 보여도, 실제 결과를 되돌리기 어렵기 때문에 반드시 한번 묻고 진행합니다.

  • 에이전트가 게시·전송·결제·삭제·구독 해지처럼 되돌리기 어려운 동작이라고 스스로 판단하고 신고한 버튼 클릭 (어떤 동작인지는 승인 카드의 Intent 항목으로 표시됩니다)
  • 로그인 폼 안에서 “로그인(Sign in)”, “계정 만들기(Create account)” 같은 인증 버튼을 클릭할 때 (단순 로그인 링크 이동이 아닌, 폼 제출이 동반될 때만)
  • 비밀번호 입력칸, 카드번호 입력칸, 일회용 코드(2FA) 입력칸에 글자 입력
  • 다른 사이트로 폼을 제출하는 버튼 클릭
  • 결제 위젯, OAuth(소셜 로그인 팝업) 같은 외부 창 안에서의 버튼 클릭
  • 파일 업로드

맥락에 따라 달라지는 동작

단순 클릭이나 텍스트 입력이라도 맥락에 따라 달라집니다. 검색창에 입력하는 것은 자동 진행이지만, 비밀번호 폼 안의 입력칸에 입력하면 승인이 뜹니다. 에이전트는 해당 요소가 어떤 역할을 하는지를 보고 판단합니다.

최근 스냅샷을 찍지 않은 상태에서 에이전트가 클릭·입력하려 하면, 안전을 위해 해당 동작도 승인을 요청합니다.

”다음 N회 자동 승인”의 의미

승인 카드 아래에 “다음 N회 자동 승인” 토글이 있을 때, 이 카운터는 위에서 설명한 의미 있는 동작 횟수만 셉니다. URL 확인이나 스냅샷 같은 자동 통과 동작은 카운트에 포함되지 않으므로, 설정한 N회를 예상보다 빨리 소비하는 일이 없습니다.


고급 (Advanced)

아래 내용은 일반 사용자에게 필요하지 않습니다. 도구별 정책을 세밀하게 조정하거나, 자율 실행 중 어떤 동작이 막힐지 미리 가늠하고 싶을 때만 참고하세요.

”승인 필요” 도구와 분류 방식

도구는 세 가지 경로로 승인 카드를 발생시킵니다.

항상 승인 필요 (정적 분류)

다음 도구는 호출될 때마다 반드시 승인 카드가 뜹니다.

  • skill_install — 마켓플레이스 스킬 설치
  • team_agent_create — 팀 내 전문가 에이전트 신규 생성
  • team_agent_equip — 팀 에이전트에 도구·스킬 장착
  • sub_spawn — 일회성 서브 에이전트 실행
  • file_share — 파일을 외부 다운로드 링크로 공유
  • schedule_create / schedule_update / schedule_delete — 스케줄 생성·수정·삭제

조건부 승인 필요 (동적 분류)

  • 외부 API 호출 (http_request): POST, PUT, PATCH, DELETE 방식만 승인 필요. GET/HEAD/OPTIONS는 자동 실행.
  • 컴퓨터 화면 조작 (computer_use): click, double_click, right_click, key, type, drag, shell 등 화면을 직접 바꾸는 액션만 승인 필요. 스크린샷·스크롤은 자동 진행.
  • 웹 브라우저 (browser): 본문 “웹 브라우저 조작 시 승인 기준” 섹션 참고.

리뷰 대기 (별도 흐름)

  • skill_export — 에이전트가 만든 작업물을 스킬 패키지로 내보낼 때. 일반 승인 카드가 아닌 스킬 리뷰 화면으로 이동하며, 이름·설명·파일 목록을 사용자가 직접 검토·편집 후 확정합니다.

AUTO_DENY (사용자 확인 없이 즉시 차단)

일부 동작은 승인 카드 없이 곧바로 차단되고 에이전트에게 “불가” 결과가 돌아옵니다. 대표 사례:

  • bash 명령에 rm -rf /(루트·홈 경로), 포크 폭탄, 다운로드-파이프-실행, mkfs.*(파일시스템 포맷), dd의 블록 디바이스 직접 쓰기 같은 시스템 파괴 패턴이 감지될 때
  • 에이전트 훅(hook)이 해당 동작을 명시적으로 거부(DENY)로 설정한 경우

AUTO_DENY 결과를 받은 에이전트는 같은 명령을 재시도하지 않고 다른 접근법을 선택합니다.

도구별 토글 (“항상 자동 승인” 설정)

에이전트 상세 → 설정 탭에는 두 종류의 승인 설정이 있습니다.

  1. 도구별 자동 실행/승인 필요 토글 (활성화된 도구 섹션): 각 도구를 영구적으로 자동 실행하거나 항상 승인 필요로 설정. 해당 에이전트의 모든 실행(스케줄·웹훅 포함)에 적용됩니다.
  2. “항상 자동 승인” 섹션: 별도 항상 자동 승인 섹션에서 도구별 체크박스를 켜면, 이후 그 도구의 모든 호출이 자동 통과됩니다. 이 설정 역시 자율 실행에도 함께 적용됩니다.

승인 카드 안의 “다음 N회 자동 승인” 토글은 이와 별개로, 해당 대화 세션에서만 유효한 일회성 면제입니다.

웹 브라우저 승인 정책 상세

위험 요소 분류 근거

click / type / fill / select 액션은 직전 스냅샷에서 수집한 요소 메타데이터를 기반으로 분류됩니다. 수집 항목은 요소의 표시 텍스트(text), aria-label, data-testid, 폼 제출 여부(is_submit), 폼 action 오리진(form_action), 입력 유형(input_type), 자동완성 힌트(autocomplete), 비밀번호 폼 포함 여부(in_password_form), 외부 프레임 오리진(iframe_origin)입니다.

메타데이터가 없는 상태(직전 스냅샷 없음, ref 만료)에서 위 mutation 액션을 호출하면 fail-closed 규칙에 따라 항상 REQUIRE_USER로 분류됩니다.

press (Enter, Tab, Escape 같은 키 입력)는 현재 포커스된 요소로 전역 디스패치되므로 위 요소 메타데이터 분류가 적용되지 않습니다. 기본적으로 자동 승인되며, 에이전트가 “이 Enter는 폼을 게시한다”고 자기 행동을 위험으로 표시한 경우에만 승인 카드가 뜹니다.

에이전트의 자기 분류 (safety)

click / type 액션은 라벨 단어 매칭으로 분류되지 않습니다. X · Reddit · 슬랙 같은 사이트에서는 “Post” · “Reply” · “Like” 같은 동작 단어가 카드 영역 라벨, 댓글 아이콘의 aria-label, 입력창 placeholder 곳곳에 박혀 있어, 단어 기반 자동 차단은 댓글 아이콘 클릭이나 입력창 타이핑 같은 평범한 동작에까지 승인 카드를 띄우는 false positive를 일으켰습니다.

대신 에이전트가 비가역 동작(게시·전송·삭제·결제·구독 해지 등)을 실행할 때 호출 자체에 safety: {decision: "REQUIRE_CONFIRMATION", intent: "..."} 표시를 직접 붙입니다. 이 표시가 있으면 REQUIRE_USER로 escalate되고, 승인 카드의 Intent 항목으로 어떤 동작을 하려는지 사용자에게 노출됩니다. 이 자기 분류는 escalate 전용이라 결정론 룰(아래)을 낮출 수는 없습니다.

인증 토큰

sign · login · log in · sign in · sign out · log out · register · create account 단어가 요소의 text / aria-label / data-testid에 포함되고 동시에 폼 컨텍스트(is_submit=True 또는 비밀번호 폼 내부)일 때만 REQUIRE_USER로 분류됩니다. 페이지 헤더의 “Sign in” 링크처럼 단순 로그인 페이지 이동은 폼 컨텍스트가 없으므로 자동 통과합니다.

민감 자동완성 값

autocomplete 속성이 다음 중 하나면 쓰기 액션(type, fill)에서 REQUIRE_USER입니다:

cc-number cc-csc cc-exp cc-exp-month cc-exp-year cc-name cc-given-name cc-family-name one-time-code current-password new-password

evaluate vs probe

browser.evaluate 액션은 스크립트를 정적 분석해 read-only 여부를 판단합니다. 아래 항목 중 하나라도 발견되면 REQUIRE_USER로 분류됩니다.

  • DOM 쓰기: .innerHTML, .value = ..., .click(), .submit()
  • 내비게이션: location.href = ..., history.pushState(...)
  • 네트워크 요청: fetch(), XMLHttpRequest, sendBeacon, new WebSocket
  • 스토리지 쓰기: localStorage.setItem, document.cookie = ...
  • 코드 주입: eval(), new Function, setTimeout, setInterval
  • 스크립트 길이 1,000자 초과

browser.probe 액션은 url, title, ready_state, scroll_position, selector_exists, selector_count, selector_text 같은 구조화된 정보만 반환하며, 정적 분석 없이 항상 자동 통과됩니다.

LLM escalation

에이전트가 직접 판단했을 때 위험하다고 보이는 동작은 safety: { decision: "REQUIRE_CONFIRMATION", intent: "..." } 필드를 채워 승인을 요청할 수 있습니다. 이 신호는 escalation 전용이라, 결정론적 분류가 이미 REQUIRE_USER인 경우 LLM이 ALLOWED로 낮출 수 없습니다. 또한 스냅샷·스크롤·probe처럼 read-only인 액션에 REQUIRE_CONFIRMATION을 달아도 over-mark guard가 이를 무시합니다.

거부 후 흐름

거부하면 에이전트는 다음을 받게 됩니다.

  • “사용자가 명시적으로 거절했다”는 신호
  • (사용자가 적었다면) 거부 사유
  • “같은 제안을 반복하지 말라”는 안내

에이전트는 그 사유를 자기 메모에 “피드백” 항목으로 저장한 뒤, 다른 방법을 찾거나 사용자에게 다시 묻는 방향으로 답변을 이어 갑니다. 결과적으로 같은 요청을 미래에 자동 반복하지 않습니다.

응답 대기 시간

각 도구를 승인 필요로 켰을 때의 기본 대기 시간은 도구 성격에 따라 다릅니다.

  • 코드 실행 — 약 5분
  • 컴퓨터 화면 조작 — 약 10분
  • 스킬 설치 — 최대 1시간 (사용자가 스킬 내용을 충분히 검토하라고)
  • 그 외 — 기본값 적용

스케줄·하트비트 실행에서는 기본 대기 시간이 4배로 늘어나고, 웹훅 실행에서는 2배로 늘어납니다. 단일 승인이 무한정 대기하지는 않으며, 최대 24시간을 넘지 않습니다.

공유(스냅샷) 모드에서의 승인 동작

에이전트를 공유 링크(/share/...)나 임베드(/embed/...)로 외부에 열어두면, 그 세션은 허용된 도구 목록으로만 동작합니다. 스킬 설치·팀 에이전트 생성처럼 원래 승인이 필요한 도구들은 외부 세션에서 아예 제공되지 않아 카드 자체가 뜨지 않습니다.

단, 허용된 도구 중에도 동적으로 승인이 필요한 상황(예: 브라우저 도구의 위험한 클릭)이 생기면 승인 카드가 표시될 수 있습니다. 외부 방문자가 승인 카드를 받더라도 원본 에이전트의 설정은 변경되지 않습니다. 같은 에이전트라도 원래 작성자가 직접 들어와 쓸 때는 평소대로 모든 승인 정책이 적용됩니다.

관련 페이지