AI 가 내 레포를 망치지 않게 하는 법
Claude Code 와 OMC 에이전트가 코드를 쓸 때 레포를 안전하게 유지하는 전략. Worktree 격리, 커밋 위생, 브랜치 보호, PR 자동화까지.
AI 에이전트는 코드를 잘 쓸 수 있습니다. 문제는 어디에 쓰느냐예요. main 브랜치에 직접 커밋하고, 테스트 안 돌리고, 커밋 메시지를 "fix stuff"로 날리면 — 사람이 해도 위험한 짓을 에이전트가 더 빠르게 할 뿐입니다.
1. Worktree 격리 — 에이전트에게 별도 작업장 주기
Claude Code 는 --worktree 플래그로 git worktree를 네이티브 지원합니다. 에이전트가 작업할 별도 복사본을 만들어서, 본체 작업 디렉토리를 건드리지 않게 하는 거예요.
# 새 worktree 에서 Claude 세션 시작
claude --worktree feature-auth
# 내부적으로 일어나는 일:
# 1. .claude/worktrees/feature-auth/ 디렉토리 생성
# 2. worktree-feature-auth 브랜치를 origin/HEAD 에서 분기
# 3. 해당 디렉토리에서 Claude 세션 시작세션이 끝나면 변경사항이 없으면 자동 정리, 변경사항이 있으면 유지할지 물어봅니다. incident.io 엔지니어링 팀은 이 패턴을 커스텀 쉘 함수로 감싸서, worktree 생성과 Claude 세션 시작을 한 명령어로 묶어 씁니다.
gitignore 된 파일 복사
.env 같은 시크릿 파일은 worktree 에 자동 복사되지 않습니다. .worktreeinclude 파일을 프로젝트 루트에 만들고 gitignore 문법으로 패턴을 적어두면, 새 worktree 생성 시 해당 파일이 자동 복사됩니다. .claude/worktrees/ 를 .gitignore 에 추가하는 것도 잊지 마세요.
OMC 의 subagent 시스템도 worktree 격리를 지원합니다. Agent 호출 시 isolation: "worktree" 를 지정하면 subagent 가 별도 worktree 에서 작업하고, 변경사항이 없으면 자동 정리됩니다.
2. 커밋을 체크포인트로 쓰기
Anthropic 의 장기 실행 에이전트 하네스 설계에서 핵심 패턴 하나:
"This allowed the model to use git to revert bad code changes and recover working states of the code base."
에이전트에게 git 커밋은 단순한 버전 기록이 아니라 세이브 포인트입니다. Addy Osmani가 소개한 커뮤니티 표현처럼 "게임의 세이브 포인트" — 잘못되면 되돌릴 수 있는 안전장치예요.
실전 원칙:
- 작은 단위로 자주 커밋 — 사람이 코딩할 때보다 더 잘게 쪼개기. 한 파일 수정 = 한 커밋이 아니라, 한 기능 단위 = 한 커밋
- 커밋 전 테스트 통과 확인 — Hook 으로 강제하면 에이전트가 테스트 실패 상태를 커밋하는 걸 막음
- 설명 못 하는 코드는 커밋하지 않기 — 에이전트가 생성한 코드를 이해 못 하면 revert
Conventional Commits + Husky: 에이전트도 규칙을 따르게
# husky + commitlint 설치
pnpm add -D husky @commitlint/cli @commitlint/config-conventional
npx husky init
echo 'npx --no -- commitlint --edit $1' > .husky/commit-msgClaude Code 공식 문서가 강조하는 포인트:
"Hooks run scripts automatically at specific points in Claude's workflow. Unlike CLAUDE.md instructions which are advisory, hooks are deterministic and guarantee the action happens."
CLAUDE.md 에 "Conventional Commits 을 따라라"고 적는 건 권고일 뿐이에요. Husky hook 은 강제입니다. 에이전트가 잘못된 포맷으로 커밋하면 hook 이 거부하고, 에이전트는 메시지를 고쳐서 다시 시도합니다.
Hook 과 CLAUDE.md 의 차이
CLAUDE.md 에 적은 규칙은 에이전트가 "참고" 합니다 — 무시할 수도 있어요. Hook 은 에이전트의 의지와 무관하게 실행됩니다. 안전에 중요한 규칙은 CLAUDE.md 가 아니라 Hook 으로 거세요. 이 차이를 모르면 "분명 규칙 적어뒀는데 왜 안 따르지?" 에 빠집니다.
3. main 보호 — 에이전트가 머지 권한을 갖지 않게
GitHub 커뮤니티 토론에서 반복되는 합의:
"AI agents can propose code, never own it."
에이전트는 코드를 제안할 수 있지만, 머지 결정은 사람이 해야 합니다. 최소 설정:
# GitHub branch protection (Settings → Branches → Branch protection rules)
- Branch name pattern: main
- Require pull request reviews before merging: ON
- Required approving reviews: 1 (최소)
- Require status checks to pass: ON
- Do not allow bypassing the above settings: ON추가로 팀에서 쓸 수 있는 패턴:
ai-generated라벨을 AI 가 만든 PR 에 자동 부착 → 해당 라벨이 있으면 CI 커버리지 기준 상향- Claude Code GitHub Actions 사용 시
--allowedTools로 에이전트가 쓸 수 있는 도구 제한
4. PR 자동화 — Claude Code 가 PR 까지
Claude Code 는 gh pr create 를 네이티브로 호출합니다. "PR 만들어줘"라고 말하면 변경사항 분석 → 제목·본문 작성 → PR 생성까지 알아서 해요.
# 세션 안에서
> 지금까지 한 작업 PR 로 만들어줘
# Claude 가 실행하는 것:
# git add → git commit → gh pr create --title "..." --body "..."세션이 PR 에 연결되면, 나중에 이어서 작업할 수 있습니다:
# PR 기반으로 세션 복원
claude --from-pr 42GitHub Actions 와 연동하면 PR 코멘트에서 @claude 를 멘션해 에이전트를 호출할 수도 있습니다. 단, 권한 범위(contents: write, pull-requests: write)를 명시적으로 제한하는 게 중요해요.
다음에 읽을 글
- Slash Commands — Claude Code 카탈로그 —
/init,/pr-comments같은 git 관련 커맨드 상세 - Workflows — 바이브코딩 풀 파이프라인 — git 전략이 전체 파이프라인에서 어디에 위치하는지
참고 자료
- Claude Code — Common Workflows — worktree, PR 생성, 세션 연결 공식 문서
- Claude Code — Best Practices — Hook vs CLAUDE.md 차이, 에이전트 가드레일
- Claude Code — GitHub Actions — PR 자동화, 권한 모델, 보안 문서
- Anthropic — Effective Harnesses for Long-Running Agents — git 을 세션 간 메모리로 쓰는 패턴
- incident.io — Shipping Faster with Claude Code and Git Worktrees — 실전 worktree 워크플로
- Addy Osmani — AI Coding Workflow — 커밋을 세이브 포인트로 쓰는 패턴
- GitHub Community — AI Agents in Production — 브랜치 보호 + PR 라벨링 합의
Last verified: 2026-04-15 — Claude Code v2.1.109 / GitHub Actions v1 기준.