Fail Closed on Side Effects: A Blast-Radius Gate for Agent Patches

개요

에이전트 패치의 부작용(side effects)으로 인한 잠재적 위험 범위를 제한하기 위한 'Fail Closed' 방식의 게이트웨이 방법론이 제안된다. 이 방법론은 파일 시스템 접근, 도구 호출, 환경 변수 접근, 네트워크 통신 등 에이전트 실행 시 발생하는 외부 영향(side effects)을 엄격히 통제한다.

주요 내용

* Blast Radius Gate: 에이전트 패치가 단위 테스트를 통과하더라도 파일 시스템 외부 쓰기, 선언되지 않은 도구 호출, 불필요한 환경 변수 읽기 등을 수행할 수 있다는 점을 지적하며, 이러한 잠재적 위험 범위를 사전에 통제해야 함을 강조한다.
* Fail-Closed Envelope: 파일 시스템 루트, 도구 이름, 환경 변수 키, 네트워크 호스트에 대해 'Fail-Closed' 원칙을 적용하는 봉투(envelope) 개념을 제안한다. 봉투를 벗어나는 모든 시도는 실패 처리되며, 이러한 위반은 절대 동결(freeze)되지 않는다.
* Dual-Runner Disagreement: 봉투 외부 속성(non-envelope property)에 대한 이중 실행(dual-runner) 간의 불일치 발생 시에만 동결(freeze)이 가능하며, 이때도 해시된 증거 번들(hashed evidence bundle)이 필요하다.
* Capability Change Perspective: 에이전트 패치를 기능 변경(capability change)으로 간주하고, 실행 결과가 선언된 봉투 범위를 벗어나면 게이트가 실패하도록 한다. 랭킹, 문구, 지연 시간 등의 사소한 문제는 이 규칙을 무시하지 못한다.
* Gate Functionality: 이 게이트는 모델 텍스트의 골든 파일, 변경 점수, 전체 재실행이 아니며, 다음 네 가지 질문에 대한 답변만을 제공한다:
* 허용된 루트 외부에서 쓰기 또는 삭제가 발생했는가?
* 허용 목록에 없는 도구 이름이 호출되었는가?
* 허용 목록에 없는 환경 변수 키가 읽혔는가?
* 허용 목록에 없는 네트워크 호스트가 열렸는가?
이 중 하나라도 '예'이면 실패 처리된다.
* Artifacts: 실행 결과로 고정된 봉투(locked envelope)와 관찰자 로그(observer log)를 생성한다. 봉투는 고정(pin)되어 픽스처(fixture)로 사용되며, 해시를 통해 변경 시 리뷰 노트 없이는 실행이 거부된다.
* Harness Proposal: 제안된 하네스(harness)는 사용자 공간 트레이싱으로 커널 레벨의 기법을 놓칠 수 있으므로, 이를 값싼 경고 장치(cheap tripwire)로 사용하고 필요시 실제 격리(real jail)를 추가하도록 한다.
* Observer Implementation: proposed_observer.py는 봉투 로드, 로그 기록, 위반 검증 기능을 포함한다.
* Envelope Property Checks: test_envelope_properties.py는 파일 시스템 접근, 도구 호출, 환경 변수 접근 등 봉투 속성 검증에 대한 테스트 케이스를 제공한다.
* Numbered Workflow:
1. 패치 존재 전에 봉투 선언 (리뷰 시 envelope.json 작성)
2. 봉투 해시 및 다이제스트 내보내기 (에이전트 프로세스는 ENVELOPE_HASH만 받음)
3. 옵저버 하에 패치 실행 (깨끗한 작업 공간, 픽스처 코퍼스 사용)
4. 봉투 위반 시 Fail Closed 처리 (동결, 재시도, '알려진 이슈' 레이블 대상 아님)
5. 봉투 검사 통과 후 비봉투 속성 점수화
6. 이중 실행자 불일치 시에만 동결 (로그인 예외, 캘린더 날짜 만료)
* Freeze Ledger: freeze_ledger.tsv는 동결 기록을 관리하며, 동결은 특정 속성에 대해 두 실행자가 비봉투 속성에서 불일치할 때만 부여된다.
* Decision Table: 관찰 결과, 봉투 클린 여부, 이중 실행자 일치 여부에 따른 행동을 정의한다.
* Disclosure & Limitations: 이 방법론은 MonkeyCode의 제품 홍보의 일환으로 준비되었으며, 무료 모델 접근 및 서버 옵션이 활용될 수 있다. 사용자 공간 옵저버는 래핑된 API를 우회하는 사항을 놓칠 수 있으며, 동결은 단일 실행자가 아닌 두 실행자 간의 불일치에 기반해야 한다.
* Minimal CI Shape Set: CI 환경에서는 봉투 파일 무결성 검증 후 pytest를 사용하여 봉투 속성을 검사하고, 이후 에이전트를 실행하여 비봉투 속성을 평가하는 워크플로우를 제시한다.

시사점

이 방법론은 에이전트 패치의 잠재적 위험 범위를 효과적으로 제한하고, 예상치 못한 부작용으로 인한 시스템 오류나 보안 취약점을 방지하는 데 기여할 수 있다. 또한, 엄격한 검증 절차를 통해 코드 변경의 신뢰성을 높이고, 문제 발생 시 원인 파악 및 해결을 용이하게 한다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions