ActGov는 LLM 도구호출을 실행 전에 결정론 검증하는 권한집행 프레임워크다.
ActGov: Governing LLM Agent Actions via Policy-Constrained Validation
무엇인가
LLM이 텍스트 생성기에서 도구를 호출하고 외부 환경을 관찰하며 여러 단계를 스스로 이어가는 에이전트로 바뀌면서 보안 경계가 달라졌다. 모델 출력이 곧바로 이메일 수정, 파일 삭제, 권한 부여 같은 고영향 작업을 유발할 수 있고, 웹페이지나 이메일 본문에 심긴 신뢰할 수 없는 내용이 사용자 의도로 오인되면 에이전트가 권한 밖의 행동을 실행한다. 논문이 겨냥하는 위협은 간접 프롬프트 인젝션(IPI)이다. 최초 사용자 지시는 신뢰하지만, 하위 도구 관찰을 통해 들어온 공격자 제어 콘텐츠가 LLM으로 하여금 비인가 행동을 제안하게 만든다. 저자들은 기존 방어가 세 가지에서 약하다고 본다. 자율 에이전트 행동을 표현하는 통합 의미 모델이 없어 데이터 출처와 권한 출처를 혼동하고, 사전 정의된 계획이나 정적 파라미터 체크리스트에 의존해 동적으로 분기하는 장기 워크플로에서 무너지며, 도구 생태계가 커질수록 정책을 수작업으로 유지하기 어렵고 자동 생성 정책은 누락·충돌·의도치 않은 허용을 배포 전에 검증할 방법이 없다는 것이다.
어떻게 동작하나
ActGov의 핵심은 비정형 실행 문맥을 유한한 2차원 레코드 공간 R로 사상하는 것이다. 레코드는 두 축으로 분류된다. 형성 수준 축은 값이 어떻게 만들어지는지를 나타내며, 구조화된 시스템 상태에서 직접 계산되는 L1 결정적 레코드, 비정형 텍스트에서 의미 이해를 거쳐 미리 정의된 유한 값 영역으로 추출되는 L2 경계적 의미 레코드, L1과 L2 값을 불리언 논리로 조합한 L3 합성 레코드로 나뉜다. 의미 범위 축은 일곱 가지로, 제안된 후보 행동(action), 과제에 부여된 기본 권한(permission), 파라미터의 출처와 역할(parameter), 관련 실행 이력(history), 의도한 대상과 실제 대상의 일치 여부(binding), 외부 목적지의 보안 속성(external), 과제의 현재 운영 단계(domain)를 각각 기술한다. 예를 들어 pending_obligation 레코드는 L1 결정적 수준이면서 History 범위에 속하며, 이전 단계에서 해소되지 않은 사용자 승인 요구가 실행 추적에 남아 있는지 평가한다. 이렇게 문맥 추출을 고정 스키마와 유한 값 영역으로 제한함으로써 적대적 지시가 최종 정책 평가에 직접 영향을 주지 못하게 한다.
무엇과 다른가
정책 집합은 세 계층의 합집합 P = P_TP ∪ P_HI ∪ P_PO로 구성된다. Task-Permission은 신뢰된 사용자 과제를 최소 필요 도구·자원에 묶어 기준 권한 경계 perm을 만들고, 이 경계를 벗어나는 행동은 차단한다. Hard-Invariant는 활성 과제 범위와 무관하게 신뢰할 수 없는 주입 콘텐츠에서 유래한 외부 네트워크 행동을 막는 식의 전역 보안 속성을 담는다. Procedural-Obligation은 대상 바인딩이 약하거나 인자 출처가 불확실한 경우처럼 에이전트의 자율 처리 권한을 넘는 조건을 다루며, 실행 전에 충족해야 할 전제 조건을 요구하는 조건부 규칙으로 작동한다. 정책은 ActGov-Policy 단계에서 도구 명세, 정상 과제 추적, 관찰된 공격 실패 추적으로부터 LLM이 초안을 제안하고 반복 정제해 만든다. 이때 LLM은 정책 제안자일 뿐이며, 후보 규칙은 Z3 솔버로 검증된다. 검증기는 ∃r,v. Domain_R(r) ∧ P_sem(r,v) ∧ ¬A_sec(r,v) 형태의 질의로 유한 레코드 영역을 탐색해, 정책 의미론은 만족하지만 보안 단언을 위반하는 할당이 있는지 찾는다. SAT이면 반례가 드러나 정책 공백이나 충돌이 확인되고 정제가 다시 돌아가며, 모든 질의가 UNSAT일 때만 배포된다. 런타임의 ActGov-Runtime은 에이전트 LLM과 외부 도구 인터페이스 사이에 위치해 후보 호출 c_i를 가로채고, r_i = α_R(τ, perm, H_i, c_i)로 레코드 집합을 인스턴스화한 뒤 검증된 정책에 대해 결정론적으로 허용 또는 거부를 계산한다. LLM은 L2 레코드의 의미 파서, 즉 파라미터 출처 분류 같은 국소적 특징 추출에만 쓰이고 인가 판단 자체는 정책 인터프리터가 수행한다. 전체 시스템은 M = (H, C, R, P, V, T)라는 유한 상태 기계로 모델링된다.
어떻게 쓰나
실험은 도구 호출 에이전트 벤치마크인 AgentDojo와 AgentDyn에서 수행됐다. AgentDojo는 워크스페이스, 뱅킹, 여행, Slack 도메인의 다단계 과제에 이메일·웹페이지 관찰을 통해 공격을 주입하며, 사용자 과제와 호환 주입 과제를 짝지은 629개 보안 테스트 케이스를 포함한다. AgentDyn은 제3자 지시가 섞인 동적 개방형 과제로, 정당한 실행이 외부 관찰에서 행동 대상을 도출해야 하면서 동시에 같은 환경에 심긴 악성 지시를 무시해야 하기 때문에 정책 기반 방어에 특히 어렵다. 60개 사용자 과제와 28개 주입 과제를 조합한 560개 보안 테스트 케이스가 있다. 백엔드 모델은 Qwen3.6-flash, MiniMax-M2.5, DeepSeek-v4-pro, GPT-4o mini 네 가지이며, 방어 없는 기준선과 CaMeL, Progent, DRIFT, ACE 네 가지 시스템 수준 방어와 비교했다. VeriGuard는 소스 코드가 공개되지 않아 평가에서 제외했다. 공격 쌍을 학습·테스트 분할로 나누고, 정책 생성에는 GPT-5.5를 정책 제안자로 10회 정제 라운드와 사람 개입 검토를 결합한 뒤 정책 집합을 동결해, 이후 모든 평가는 보지 못한 테스트 분할에서 수행했다.
전제와 한계
결과에서 ActGov는 AgentDyn 테스트 분할에서 네 모델 모두 공격 성공률(ASR)을 최대 0.007로 억제하면서 경쟁력 있는 정상·공격 상황 유틸리티를 유지했다. 예를 들어 Qwen3.6-Flash에서 정상 유틸리티 0.667, 공격 상황 유틸리티 0.586을 유지했고, 방어가 없을 때는 각각 0.667과 0.650이었다. AgentDojo 테스트 분할에서는 네 백엔드 모두 ASR 0.000을 기록했고, Qwen3.6-Flash와 MiniMax-M2.5에서 최상위권 유틸리티를, DeepSeek-V4-Pro와 GPT-4o mini에서 경쟁력 있는 성능을 냈다. 반면 기준선들은 벤치마크 간 일관성이 떨어졌다. CaMeL과 ACE는 구조적 제약으로 낮은 ASR을 얻었지만 특히 AgentDyn에서 상당한 유틸리티 손실을 냈고, Progent와 DRIFT는 구조화된 AgentDojo에서는 나았지만 더 긴 궤적과 큰 도구 집합, 동적 교차 애플리케이션 상호작용을 포함하는 AgentDyn에서 성능이 떨어졌다. 이들 결과는 백엔드 모델에 따라 변동했는데, 이는 계획 생성·권한 부여·런타임 검증을 LLM에 의존하기 때문으로 해석된다. ActGov는 LLM을 경계가 정해진 레코드 추출에만 쓰고 인가 결정을 배포된 정책 위에서 결정론적으로 계산하기 때문에 더 안정적이다.
정책 생성 LLM과 학습 데이터 규모의 영향을 본 실험에서도 같은 50% 학습 부분집합을 쓰면 모든 생성기가 ASR 0.007 이하를 냈지만 유틸리티는 크게 갈렸다. DeepSeek-V4-Pro가 정상 0.533, 공격 상황 0.429로 가장 높았고 Qwen3.6-Flash와 MiniMax-M2.5는 더 제한적인 정책을 만들었다. 생성기를 DeepSeek-V4-Pro로 고정하고 학습 데이터를 50%에서 25%로 줄이면 정상 유틸리티는 0.533에서 0.500으로 소폭 감소했고 ASR은 0.007을 유지했다. 즉 생성 LLM의 능력과 학습 분할의 포괄성이 정책 생성·정제 과정에 유의미한 영향을 준다.
저자들이 명시한 한계는 정책 일반화다. ActGov는 엄격한 보안을 우선하는 프레임워크이므로, 최적의 규칙 묶음을 합성하려면 충분히 포괄적인 정상 과제와 공격 시나리오에 정책 정제 구성요소가 노출되어야 한다는 전제를 깐다. 교차 전이 평가에서 이 철학이 그대로 드러난다. 도메인 밖 과제를 만나면 생성된 정책은 양방향 전이 모두에서 ASR 0.000을 유지하며 절대적 안전성을 지키지만, 대신 매우 보수적이고 제한적인 행동으로 기본 설정되어 유틸리티가 크게 떨어진다. 예컨대 AgentDyn 테스트 분할에서 도메인 내 정책은 정상 유틸리티 0.600으로 방어 없는 기준선 0.767에 비해 합리적으로 유지했지만, AgentDojo로 학습한 도메인 외 정책을 배포하면 정상 유틸리티가 0.100으로 급락한다. 현재 실증 검증은 특정 데이터셋 분할 위에서 정책을 학습·정제하는 데 국한되어 있으며, 보지 못한 도구와 도메인에서도 유틸리티를 유지하는 개방 세계 정책 일반화가 향후 과제로 남아 있다.
개발자 관점에서 이 논문이 주는 실질적 시사점은 보안 판단을 모델의 자연어 이해 능력에서 떼어내 실행 계층으로 옮기는 아키텍처다. 이메일 발송, 파일 삭제, 결제, 권한 변경처럼 외부 효과가 있는 도구를 붙이는 에이전트라면, 각 도구 호출을 실행 직전에 가로채 문맥을 유한한 레코드로 추상화하고 검증된 정책으로 허용 여부를 결정하는 구조를 참고할 수 있다. 특히 Z3 같은 솔버를 오프라인 정책 생성 단계에만 쓰고 런타임에는 솔버 호출 없이 결정론적 평가만 수행한다는 분리가 지연 시간과 형식적 보증을 동시에 노리는 지점이다. 도입을 검토한다면 정책 생성에 쓸 정상 과제 추적과 공격 실패 추적을 얼마나 확보할 수 있는지, 그리고 학습 도메인을 벗어난 과제에서 유틸리티가 얼마나 떨어지는지를 먼저 확인해야 한다. 또한 LLM이 완전히 배제되는 것이 아니라 파라미터 출처 분류 같은 L2 레코드 추출에는 여전히 관여하므로, 그 추출 단계의 오류가 정책 평가에 어떤 영향을 주는지도 점검 대상이다.