코딩 에이전트의 자율성에 경계 긋기: Boundary Contracts 파일럿 연구
Toward Bounding Coding-Agent Autonomy in Software Maintenance: A Pilot Study of Boundary Contracts
TL;DR Highlight
파일별 역할(수정/참조/필수/보호)을 미리 알려줬더니 허용 가능한 패치가 9개에서 18개로 늘었다
Who Should Read
Claude Code·Codex 같은 코딩 에이전트에 유지보수 작업을 맡겼다가 엉뚱한 파일이 수정되거나 테스트가 빠져 고민인 백엔드 개발자
Core Mechanics
- 관련 있다고 수정해도 되는 건 아니다
- 컨트롤러는 API 경로를 이해하려면 읽어야 하지만 수정하면 안 될 수 있다.
- 요청에 없던 회귀 테스트는 오히려 반드시 고쳐야 할 수 있다.
- 파일에 네 가지 역할을 붙인다
- 수정 가능(editable), 읽기 전용(inspect-only), 필수(required), 보호(protected) 네 가지다.
- 필드는 allowed_read_paths, allowed_edit_paths, must_edit, inspect_only, must_not_edit, violation_rules다.
- 정답 패치는 넣지 않는다
- 계약에는 기대 diff나 구현 내용이 들어 있지 않다.
- 구현 판단과 패치 생성은 여전히 에이전트가 한다.
- 계약은 사전 지식에서 자동 생성한다
- 저장소 목록, 유지보수 단위, 변경 유형 스키마, 규칙을 미리 모아 둔다.
- 요청이 오면 proposal agent가 후보를 골라 CANDIDATES.yaml로 만든다.
- 파일 찾기 효과만은 아닌 듯하다
- 두 조건이 같은 파일을 하나라도 수정한 21개 작업만 따로 봤다.
- 여기서도 불필요한 수정과 패치 결과에 차이가 남았다.
- 경계가 틀리면 에이전트도 틀린다
- 범위가 너무 좁거나 필수 동반 파일이 빠지면 실패했다.
- 경계 수정 허용 여부와 강제 방식은 아직 열린 문제다.
Evidence
- 선택 정확도가 크게 올랐다
- 같은 Codex 기반 에이전트의 40개 작업에서 macro F1이 기준선 0.440에서 0.682로 올랐다.
- 빠뜨린 수정은 62에서 34, 불필요한 수정은 56에서 22로 줄었다.
- 패치 품질도 올랐다
- 필수 동작 커버리지는 0.429에서 0.673, 블로킹 결함은 52에서 26이 됐다.
- 필수 테스트 충족은 11/40에서 26/40, 엄격 허용 패치는 9/40에서 18/40이 됐다.
- 같은 파일을 건드린 21개 작업에서도 차이가 남았다
- macro F1이 0.652에서 0.786, 불필요한 수정은 29에서 9로 줄었다.
- 엄격 허용 패치는 7/21에서 11/21, 블로킹 결함은 19에서 11이 됐다.
- 한계가 크다
- 저장소 1개, Java·XML 2,900개 이상 파일, 작업당 1회 실행이다.
- 실제 테스트 스위트 실행 없이 패치 기반 평가 기록으로 채점했다.
How to Apply
- 다음 작업 요청에 파일 역할을 직접 적기
- 에이전트에게 유지보수를 시키기 전에 수정할 파일, 읽기만 할 파일, 반드시 고칠 파일(테스트 포함), 건드리면 안 될 파일을 요청문에 적어라.
- 아래 프롬프트를 붙여넣어 기존 작업과 결과를 비교하라.
- 변경 유형별 역할 템플릿 만들기
- 응답 필드 추가, 검증 규칙 추가, SQL 조건 변경 같은 반복 작업을 골라라.
- 유형마다 보통 함께 고치는 파일(DTO, 매퍼, 테스트)을 YAML로 정리해 둬라.
- CLAUDE.md나 AGENTS.md에 경계 규칙 넣기
- 항상 보호할 경로(공개 API 컨트롤러 등)와 테스트 수정 필수 규칙을 적어라.
- 단 논문에서는 일반 컨텍스트 파일이 성공률을 올리지 못했다는 연구가 인용되므로, 작업별 역할 지정을 우선하라.
- 권한 훅으로 실제 강제하기
- 보호 경로에 대한 편집 도구를 거부하도록 실행 환경에 설정하라.
- 논문은 이를 강제형 경계로 제시했고 이번 실험에서는 시험하지 않았다.
Try It
# Claude Code 또는 Codex에 붙여넣는 프롬프트 (논문 방법의 간이 버전)
작업 요청: {{유지보수 요청}}
수정 전에 아래 경계 계약(Boundary Contract)을 먼저 따르세요.
allowed_read_paths: {{읽어도 되는 경로}}
allowed_edit_paths: {{수정해도 되는 경로}}
must_edit: {{반드시 수정할 파일 또는 종류. 예: 관련 회귀 테스트}}
inspect_only: {{읽기만 하고 수정하지 말 파일. 예: 컨트롤러}}
must_not_edit: {{수정 금지 경로}}
규칙:
1. 구현 방식은 직접 판단하세요.
2. inspect_only와 must_not_edit 파일은 수정하지 마세요.
3. must_edit 항목은 모두 처리하세요.
4. 경계가 부족해 범위 밖 파일이 필요해 보이면 수정하지 말고 이유와 함께 먼저 알려주세요.
끝나면 수정한 파일 목록과 각 파일이 어느 역할에 해당하는지 표로 보여주세요.
이어서 해 볼 것: 같은 요청을 계약 없이도 돌려서 수정 파일 수와 테스트 포함 여부를 비교해 보세요.Terminology
관련 논문
Postman 데스크톱이 Codex·Claude Code 플러그인을 몰래 설치했다
Postman 앱을 열었더니 Codex·Claude에 플러그인과 훅이 자동 설치됐다
Octomind: 단일 Rust 바이너리 오픈소스 코딩 에이전트 하니스
Rust 바이너리 하나로 어떤 모델이든 돌리고, TOML 가드레일로 정책을 거는 코딩 에이전트
ChatGPT 무제한 채팅에 MCP를 붙여 코딩 에이전트 풀로 쓴 후기
ChatGPT 채팅에 로컬 MCP를 붙여 Codex 한도 없이 병렬 코딩을 돌렸다
GPT-5.6 Sol, 평화 모드 Factorio를 13.5시간에 클리어
GPT-5.6 Sol이 Codex 낮은 사고 수준으로 평화 모드 Factorio 로켓 발사까지 갔다
계산해 봐: 링크 하나로 ChatGPT 계정을 탈취한 방법
공개 공유 링크 하나로 ChatGPT 피해자 세션에서 JS 실행, 비공개 대화 유출 가능했다
AI가 SRE를 대체하는 게 아니라 실력을 깎아먹는다
인시던트 95%를 AI에 맡기자 나머지 5%를 다룰 SRE의 실력이 녹슬 수 있다
Cursor Marketplace의 Claude Code 확장에 심어진 SSH 백도어
Cursor Marketplace의 변조된 Claude Code 확장이 SSH 백도어를 심었다
AI-native 엔지니어링 조직 만들기: FurtherAI 9개월 회고
배포 전 과정을 단계별로 자동화하자 엔지니어 1인당 일일 머지가 약 5배 늘었다
Original Abstract (Expand)
As coding agents gain greater autonomy to modify software repositories, relevant context alone does not define their operational authority. An artifact may be relevant to a maintenance task while being inappropriate to edit; conversely, another artifact may be required even when it is not explicitly mentioned in the request. We explore Boundary Contracts, a machine-readable abstraction that makes task-specific artifact roles (editable, inspect-only, required, and protected) explicit before repository modification begins. We conduct a pilot study on 40 maintenance tasks from a real enterprise repository, comparing the same Codex-based coding agent with and without Boundary Contract information. The boundary-informed condition improves macro edit-selection F1 from 0.440 to 0.682, required-behavior coverage from 0.429 to 0.673, and the number of strictly acceptable patches from 9 of 40 to 18 of 40. To probe whether these gains are explained only by improved file localization, we additionally analyze 21 tasks in which both conditions modify at least one identical file. Differences remain in edit selectivity and patch outcomes, providing initial evidence that explicit artifact roles may influence maintenance behavior beyond localization alone. This pilot does not establish the general effectiveness of Boundary Contracts. Rather, it provides initial evidence for a broader research question: how should the operational boundaries of coding agents be generated, validated, revised, and ultimately enforced as repository-level maintenance becomes increasingly autonomous?