요약이 지시가 될 때: LLM 에이전트가 직접 쓴 인수인계 요약 속 근거 없는 정책
When Do Summaries Become Instructions? Unsupported Policy in LLM Agents' Self-Written Handoff Summaries
TL;DR Highlight
시스템 프롬프트의 승인 문장을 구체화하자 근거 없는 제한 요약이 5.0%에서 1.8%로 줄었다
Who Should Read
컨텍스트 압축(compaction)을 쓰는 장기 실행 에이전트가 요약에 없던 '승인 필요' 규칙을 만들어내 고민인 백엔드 개발자
Core Mechanics
- 요약이 없던 규칙을 만들어낸다
- 에이전트가 컨텍스트를 압축하며 쓴 요약에 원장(permission ledger)에 없는 '승인 필요'나 '승인됨' 문장이 들어갔다.
- 다음 인스턴스는 그 요약을 자기 메모로 읽고 그대로 따른다.
- 빈도는 낮지만 실재한다
- 읽을 수 있는 요약 중 근거 없는 제한은 1.2%(Qwen3-8B)와 2.4%(gpt-oss-20b)였다.
- 근거 없는 허가 문장은 0.1%와 1.3%였다.
- 가짜 승인은 무단 실행으로 이어진다
- 철회된 승인을 유효하다고 쓴 요약이 있으면 후속 에이전트가 허가 없이 쓰기 작업을 했다.
- 해당 문장을 중립 문구로 바꾸면 무단 실행이 줄었다(사후 분석).
- 제한 문장 삭제 효과는 약하고 불안정하다
- 개발 세트에서는 효과가 컸지만 사전 지정한 홀드아웃 검증은 유의하지 않았다(p=0.58).
- 홀드아웃 제한은 잘못된 대상에 승인을 요청했다가 거절당한 뒤 일반화된 경우가 많았다.
- 진짜 권한 상태를 적어주면 요청이 크게 줄었다
- 허용된 대상까지 명시한 진짜 권한을 쓰면 불필요한 확인 요청 대부분이 멈췄다.
- 다만 진짜 권한을 적은 경우 규칙 위반이 늘어난 세트도 있었다.
- 시스템 프롬프트 한 문장이 원인이었다
- 'Some actions need approval.'이 모호해서 에이전트가 승인이 필요하다고 짐작했다.
- 승인 요구의 출처를 밝히는 문장으로 바꾸자 필요한 승인 요청은 거의 그대로였다.
Evidence
- 프롬프트 교체 F5 개발 세트
- 근거 없는 제한 요약이 5.0%에서 1.8%로 줄었다(사전 지정, McNemar p<10^-10).
- 승인이 필요 없는 행동에 대한 질문은 1,920 에피소드 중 278건에서 112건으로 줄었다.
- 프롬프트 교체 F6 홀드아웃 세트
- 근거 없는 제한 요약이 1.8%에서 0.3%로 줄었다(p<10^-9).
- 필요한 승인 요청은 3,840 에피소드 중 2,205건과 2,199건으로 거의 같았다.
- 가짜 승인 중립화
- F1과 F2를 합친 120회 실행에서 무단 행동이 24건에서 7건으로 줄었다(사후 분석, 풀 전체 풀링).
- 전체 이력을 준 경우는 0/120이었다.
- 제한 문장 중립화의 불안정성
- 사전 지정 테스트에서 확인 요청은 148회 중 126회에서 119회로 줄었고 p=0.58이었다.
- 개발 세트에서는 256회 중 251회에서 151회로 줄었다(탐색적).
How to Apply
- 시스템 프롬프트의 승인 문장 점검하기
- 오늘 'Some actions need approval' 같은 모호한 문장을 찾아라.
- 승인 요구는 규칙이나 사용자 요청에 명시된 것만이라는 문장으로 바꿔라.
- 요약에서 권한 문장 뽑아 원장과 대조하기
- 압축 요약에서 '승인됨', '승인 필요' 문장을 추출하라.
- 실제 권한 기록과 맞지 않으면 제거하거나 진짜 상태로 교체하라.
- 요약 뒤에 진짜 권한 상태 덧붙이기
- 외부 권한 목록에서 허용 대상과 철회 이력을 가져와 요약 끝에 붙여라.
- 규칙 위반률도 함께 모니터링하라.
- 철회된 승인을 요약에 명시하기
- 승인이 철회되면 요약 규칙에 철회 사실을 반드시 적게 하라.
- 유효한 승인만 남겼는지 로그로 확인하라.
Try It
# Claude/ChatGPT에 붙여넣기 (논문 방법의 간이 버전: 요약의 근거 없는 권한 문장 점검)
당신은 에이전트 인수인계 요약 감사자입니다.
아래 [규칙], [사용자 요청], [실제 권한 기록], [요약]을 읽으세요.
[규칙]
{{규칙}}
[사용자 요청]
{{요청}}
[실제 권한 기록]
{{권한 기록: 허용/금지/승인 필요, 승인 및 철회 이력}}
[요약]
{{에이전트가 쓴 요약}}
요약의 각 문장 중 아래에 해당하는 것을 번호와 함께 나열하세요.
1. 근거 없는 제한: 권한 기록상 승인 없이 허용된 행동이나 읽기 전용 도구에 승인/대기를 요구하는데 규칙·요청에도 없음.
2. 근거 없는 허가: 권한 기록상 허용되지 않았거나 철회된 행동을 승인됨/허용됨으로 서술.
각 항목마다 이유를 25단어 이내로 쓰고, 해당 없으면 '없음'이라고 하세요.
이어서 해 볼 것: 걸린 문장을 중립 문구로 바꾼 요약과 원본 요약을 각각 에이전트에 넣어 행동이 달라지는지 비교해 보세요.Terminology
관련 논문
Claude Code가 User-Agent 헤더에 이메일을 실어 웹사이트로 보낸다
Claude Code가 curl 요청 User-Agent에 사용자 이메일을 넣어 스팸 피해 제보가 나왔다
Rivet: S3 위에서 에이전트를 확장·오케스트레이션하는 Actor 플랫폼
에이전트마다 Actor를 띄웠더니 콜드스타트 4.99ms, 메모리 72KB가 됐다
Stroq: 코딩 에이전트가 한 일과 이유를 로컬에서 감사하는 도구
Stroq는 에이전트 세션에서 유출된 키를 찾고 위험 명령을 출처까지 추적해 막는다
멀티 에이전트 시스템 밑바닥부터 만들기: 아키텍처 패턴 3가지와 실패 모드
에이전트를 쪼개면 조율 문제가 생기니 코드 레벨 제한으로 막아야 한다
에이전트 매 턴마다 후보 N개 뽑아 고르기: Turn-Level Best-of-N 샘플링
매 턴 후보 액션 N개 중 LLM이 하나를 골랐더니 pass@1이 오르고 턴 수가 40~50% 줄었다
AI가 40년 된 기술 부채를 갚게 만들고 있다: PHP2Shell 사건
AI가 PHP의 오래된 크래시 버그를 원격 코드 실행 취약점으로 바꿔냈다
Postman 데스크톱이 Codex·Claude Code 플러그인을 몰래 설치했다
Postman 앱을 열었더니 Codex·Claude에 플러그인과 훅이 자동 설치됐다
Octomind: 단일 Rust 바이너리 오픈소스 코딩 에이전트 하니스
Rust 바이너리 하나로 어떤 모델이든 돌리고, TOML 가드레일로 정책을 거는 코딩 에이전트
Related Resources
Original Abstract (Expand)
Long-running LLM agents compact their context, replacing most history with a summary. We ask whether handoff summaries state permissions or requirements the record does not support, whether such sentences change what the next instance (the successor) does, and where they come from. Synthetic tool-use tasks carry a ground-truth permission ledger; same-snapshot replay reruns the successor with those whole sentences replaced by neutral filler. Two AI readers, reading only rule-flagged held-out summaries, confirmed unsupported restrictions in 1.2% and 2.4% of all readable summaries from two open-weight models, and unsupported authorizations in 0.1% and 1.3%. For restrictions, a pre-specified replay test was not significant (p = 0.58); a follow-up, planned after it, found a fragile effect (p = 0.027). Neutralizing false approvals cut unauthorized actions from 24 to 7 of 120 held-out runs (post hoc; later set: 17 to 11 of 48). Most development restrictions followed the agent's earlier reasoning that an action needs approval (post hoc). In pre-specified tests, replacing the system prompt's "Some actions need approval." with one saying where requirements come from cut unsupported restrictions from 5.0% to 1.8% of development summaries and, on held-out templates, from 1.8% to 0.3% (both p < 10^-9), while requests for approvals the ledger requires barely changed. Code and data: https://github.com/Chuw1/handoff-audit