권한과 안전장치
무료 플랜 비공개 저장소는 브랜치 보호를 걸 수 없습니다. 그래서 「에이전트가 할 수 없는 일」을 저장소의 권한 규칙과 산출물 검사로 정합니다. 사람의 손 머지까지 막지는 못하므로, 사람 쪽 규칙은 문서와 경고로 둡니다.
권한 규칙의 세 칸
| 칸 | 뜻 | 넣는 것 |
|---|---|---|
| deny | 절대 못 함 | main 으로 가는 모든 push 꼴, 요청서 · 결정을 바꾸는 명령, gh api 전체, 인프라 쓰기, 비밀 읽기, 릴리스 발행 |
| ask | 사람에게 묻기(헤드리스에서는 곧 거부) | 되돌리기 · 지우기(stash · reset --hard · clean · force push · rm -r), PR 생성 · 머지, 화면 앱 공용 파일 편집, 자기 판정 파일 편집 |
| allow | 읽기와 검사만 | git status/diff/log/show, pnpm check/test/build/visual, gh pr view/checks, gh issue view/list, 판독 전용 스크립트 |
전체 예시는 권한 규칙 템플릿에 있습니다.
실제로 막힌 구멍들
gh api 는 통째로 막는다
처음엔 gh api -X POST 꼴만 막았습니다. 그런데 반응 API 는 -f content=+1 만으로 쓰기가 되어, 에이전트가 👍(승인)를 스스로 달 수 있는 틈이 있었습니다. 이후 gh api 는 전부 거부하고, 판독은 GET 만 하는 전용 스크립트로만 합니다.
node -e 를 열지 않는다
편의상 node -e 를 허용했다가 하루 만에 닫았습니다. child_process 로 모든 거부 규칙을 우회할 수 있기 때문입니다. node scripts/* 같은 와일드카드 허용도 같은 이유로 두지 않습니다.
규칙은 문자열만 본다
권한 규칙은 명령 문자열을 대조합니다. git -C . push 처럼 꼴을 바꾸면 걸리지 않습니다. 그래서 지시문에 「막힌 명령은 꼴을 바꿔 다시 시도하지 않는다」 를 명시하고, 중요한 경계는 아래의 산출물 검사로 한 번 더 막습니다.
자기 판정을 고치지 못하게
에이전트가 검사기를 고쳐 스스로 통과하는 일을 막습니다. 다음 파일 편집은 ask(헤드리스에서는 거부)입니다.
- 화면 규칙 검사기와 그 테스트
- 러너 스크립트, 감시 셸 스크립트, launchd 설정
- 스킬 문서(SKILL.md), 예비 워크플로
산출물 경계
러너는 바뀐 파일이 화면 자리(screens_dir/<그룹>/<화면>/)와 등록 파일 밖이면 멈춥니다. 커밋 전에 작업 트리로 한 번, PR 의 파일 목록으로 한 번 더 봅니다. 모델이 하네스 스크립트나 워크플로를 몰래 함께 올리는 것을 막는 마지막 문입니다.
최소 권한 체인
- 러너는 세 스킬 머리말
allowed-tools의 합집합만 넘깁니다. 테스트가 그 목록에 gh 쓰기 · PR 여닫기 명령이 섞이지 않았는지 확인합니다. - 파일 쓰기는
acceptEdits로만 받고, MCP 서버는 하나도 열지 않습니다. - 생성 스킬이 금지하는 것: 세 파일 밖 수정, 캐시 삭제와
stash/reset/clean, 다른 화면 코드 읽기, 같은 시도 반복.
검사를 건너뛰면 빨갛게
- 예전에 틀렸던 화면 두 장은 sha256 으로 검사를 면제하되, 규칙이 그 틀린 사례를 실제로 잡는지(
mustCatch) 확인합니다. - 검사기가 훑은 화면 수가 기준보다 적으면 실패합니다. 「아무것도 안 봤는데 초록」을 막습니다.
자격 증명
| 무엇 | 어디 | 범위 |
|---|---|---|
| Slack 봇 · 앱 토큰 | ~/.yuyu-harness/slack.env (0600) | 저장소에 없음 |
| 정적 배포 토큰 | 저장소 secret | Pages 편집만 |
| gh · git | 러너 Mac 의 로그인 | GITHUB_TOKEN 머지는 다른 워크플로를 깨우지 않아서 |
.gitignore | .env*, *.pem, settings.local.json, .harness-work/, .claude/worktrees/ |
공개 문서 사이트에는 허용 목록에 든 문서만 싣고, 실린 문서가 바깥(비공개 문서)을 링크하면 빌드가 멈춥니다.
제품 · 인프라 쪽
릴리스 하네스와 AWS 쪽 보안(OIDC · 최소 권한 · 혼동된 대리인 방지 · 네트워크 · 로그 위생)은 릴리스 하네스와 AWS 인프라 기본형에 있습니다.