728x90

“GitHub 안에 들어앉은 Claude 에이전트”
역할
- PR/이슈에 대한 지능형 코드 어시스턴트 + 자동 구현 에이전트
- 개발자가 GitHub에서
@claude에 질문 → 코드/아키텍처/Q&A@claude에게 “이 PR 보안 리뷰해줘” → 리뷰 코멘트 + 개선 제안- “이 이슈 구현해줘” → 브랜치 생성, 코드 수정, PR 생성까지 자동 실행
지능형 모드 감지 (Intelligent Mode Detection)
- 별도
mode설정 없이 워크플로 컨텍스트를 보고 자동으로 모드를 결정:- PR/이슈 댓글 +
@claude→ Tag Mode (대화/리뷰 모드) prompt가 있는 스케줄/라벨/자동 워크플로 → Agent Mode (자동화 모드)
- PR/이슈 댓글 +
지원 모델/제공자
- Anthropic API 직접 호출
- AWS Bedrock 기반 Claude
- Google Vertex AI 기반 Claude
실행 위치
- GitHub Actions Runner에서 돌아가며, 코드/파일 조작은 전부 GitHub API + MCP 서버를 통해 수행됩니다.
아키텍처 구조 – 두 단계 + 모드 시스템 + MCP
1. 두 단계 구조
Phase 1 – Preparation (prepare.ts)
- GitHub 토큰/OIDC 인증 설정
- 액터 권한 확인(쓰기 권한 등)
- 이벤트 분석 → Claude를 실행해야 할지, 어떤 모드인지 결정
- PR/이슈 컨텍스트 수집 + 진행상황 체크박스가 포함된 tracking comment 생성
Phase 2 – Execution (base-action/)
- GitHub MCP 서버 설치/구성
- PR diff, 이슈 내용, 파일 내용 등으로 프롬프트 생성
- Claude 호출(Anthropic/Bedrock/Vertex)
- 결과 반영
- 파일 수정/커밋/브랜치·PR 생성
- PR/이슈 코멘트 업데이트
- 체크박스 상태 갱신
2. 모드 시스템
Mode 디렉토리 (src/modes/)
- Tag 모드
@claude멘션, 이슈 할당 등 “사람 요청”을 처리- 코드 리뷰, 질의응답, 부분 수정 등
- Agent 모드
- 워크플로
prompt에 따라 완전 자동화 작업 수행 - 예: “매일 새벽 3시 리포지토리 헬스 체크하고 이슈 생성”
- 워크플로
각 모드는 공통 인터페이스(shouldTrigger, prepare) 구현, registry.ts에서 이벤트와 매핑됩니다.
3. GitHub / MCP 통합 구조
GitHub 통합 (src/github/)
- 컨텍스트 파싱: 이벤트(댓글, PR, 이슈) → 내부 공통 구조
- 데이터 페치: GraphQL/REST로 PR diff, 코멘트, 이슈, 파일 등 수집
- 연산
- 브랜치 생성/삭제
- 파일 수정 커밋
- 코멘트/리뷰 작성 및 업데이트
MCP 서버 (src/mcp/)
- GitHub Actions 서버: 워크플로/CI 관련 작업
- GitHub Comment 서버: 코멘트 읽기/쓰기
- GitHub File Ops 서버: 리포지토리 파일 읽기/쓰기
- MCP 설정은
mcp_config로 사용자가 추가 확장 가능 (예: 사내 API, 이슈 트래커 MCP 등).
진행상황 체크박스
- Claude가 작업을 단계별로 수행하면서 tracking comment의 체크박스 상태를 실시간 갱신
- “설계 검토 → 코드 작성 → 테스트 → PR 생성” 식으로 눈에 보이는 상태 관리가 가능.
주요 기능 정리 (질의응답 + 리뷰 + 구현 자동화)
1. 코드 Q&A / 아키텍처 질의응답
💬 예시 (PR/이슈 댓글)
@claude 이 PR에서 user authentication 흐름이 어떻게 되는지 설명해줘.
@claude 이 서비스간 의존성을 줄이려면 어떤 구조로 리팩터링하는 게 좋을까?
- Claude는
- 관련 코드를 MCP로 읽고
- 언어/프레임워크/아키텍처 관점에서 설명
- 설계 상의 리스크나 개선 포인트 제안
2. PR 리뷰 자동화
기능
- PR diff 분석
- 스타일/성능/보안/테스트 커버리지 관점 리뷰
- GitHub 리뷰 코멘트로 제안 추가
💡 워크플로 예시: 특정 라벨이 붙으면 자동 리뷰
name: Claude Auto Review
on:
pull_request:
types: [opened, synchronize, labeled]
jobs:
review:
if: contains(github.event.pull_request.labels.*.name, 'review:claude')
runs-on: ubuntu-latest
steps:
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: "/review security, performance, readability 관점에서 엄격하게 리뷰해줘"
claude_args: |
--max-turns 6
3. 코드 구현 / 수정 자동화
가능한 작업 범위
- 단순 수정(버그 픽스)
- 리팩터링
- 신규 기능 구현
- 테스트 코드 추가, 문서 업데이트
💡 예시 – 이슈 기반 기능 구현
name: Implement Feature from Issue
on:
issues:
types: [opened, labeled]
jobs:
implement:
if: contains(github.event.issue.labels.*.name, 'impl:claude')
runs-on: ubuntu-latest
steps:
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: |
이 이슈 설명을 기준으로 기능을 구현해줘.
- 기존 코드 스타일과 폴더 구조를 따르고
- 단위 테스트를 추가하고
- CHANGELOG 또는 관련 문서를 업데이트해줘.
claude_args: |
--max-turns 12
- Claude가
- 브랜치 생성
- 코드를 수정 & 테스트 추가
- PR 생성
- PR에 작업 내용과 체크리스트를 코멘트로 남김
4. 진척도 시각화(체크박스)
Progress Tracking
- Claude가 tracking comment 예시
작업 진행 상황: - [x] 요구사항 분석 - [x] 관련 코드 파일 스캔 - [ ] 구현 - [ ] 테스트 작성 및 실행 - [ ] PR 생성 및 링크 추가 - 단계가 끝날 때마다 체크박스 업데이트 → 사람이 보기에도 “어디까지 되었는지” 명확.
설정 구조 – prompt + claude_args + CLAUDE.md
1. Action 입력 구조의 핵심
통합된 설정
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: "여기에 Claude에게 줄 지시"
claude_args: |
--model claude-sonnet-4.5
--max-turns 8
--system-prompt "사내 코딩 컨벤션과 보안 가이드를 반드시 지켜라."
prompt- “이번 실행에서 무엇을 시킬지”에 대한 주 지시문
claude_args- CLI 옵션을 그대로 넘기는 형태
- 예:
--model,--max-turns,--system-prompt,--allowedTools,--disallowedTools등
2. CLAUDE.md – 레포지토리 단위 정책 파일
CLAUDE.md 역할
- 레포지토리 루트에 두는 “이 프로젝트에서 Claude가 따라야 할 개발 규칙/컨텍스트” 문서
- 예시 내용
- 언어/프레임워크 버전, 런타임
- 코딩 컨벤션, 폴더 구조
- 테스트/배포 규칙, 커밋 메시지 규칙
- 보안/취약점 관련 기준 (예: OWASP Top 10, 내부 보안 가이드)
Claude는 매 실행마다 이 파일을 참고하여
- 프로젝트 스타일에 맞는 코드 작성
- 보안/설계 기준 반영
3. 예시 – 기본 @claude 멘션 대응 워크플로
name: Claude Code
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
jobs:
claude:
runs-on: ubuntu-latest
steps:
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
# prompt 생략 시 → @claude 멘션에 자동 대응
- 이 상태면 누군가 댓글에
@claude라고 적는 순간 Action이 기동되고, Tag 모드로 답변/코드 제안 수행.
300x250
보안 관점: 권한·네트워크·통제 전략
Claude Code Action은 강력하지만 네트워크/도구 사용에 제약이 적기 때문에, CI/CD에 넣을 때는 반드시 보안 컨트롤을 설계해야 합니다.
1. GitHub 권한/비밀정보 관리
🔐 권한 최소화
- GitHub App / 워크플로 권한:
- Contents: Read & write (필요 시에만)
- Issues: Read & write
- Pull requests: Read & write
- 민감 리포엔:
- write 대신 별도 “bot 전용” 브랜치만 쓰게 정책 수립
- protected branch + 필수 리뷰/빌드 통과 후만 merge 허용
🔑 비밀정보(Secrets) 관리
ANTHROPIC_API_KEY는 반드시 GitHub Secrets로 보관- 다른 클라우드(AWS/Google) 자격증명도 역시 Secrets + OIDC/Workload Identity Federation 사용 권장
2. 네트워크/런타임 보안 (Harden-Runner 등)
🛡 네트워크 기본 특성
- Claude Code Action은 기본적으로 네트워크 차단이 없음
- 패키지 레지스트리(npm, PyPI) 접속
- GitHub API, Anthropic API, 각종 외부 서비스 호출 가능
- 이는 유연성을 높여주지만, 보안/감사 측면에서 리스크가 될 수 있음
🔍 Harden-Runner로 모니터링/차단
예시 – 아웃바운드 네트워크 감사 적용
jobs:
claude:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
issues: read
id-token: write
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@v2
with:
egress-policy: audit
- name: Run Claude Code
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
claude_args: |
--allowedTools "Bash(npm test)"
보안 관점 가이드
- 처음에는
egress-policy: audit으로 “누구에게 어디로 나가는지”를 관측 - 이후 허용 도메인(Anthropic, GitHub, 사내 레지스트리 등)을 화이트리스트로 제한
- 필요하다면
Bash등 도구 사용을 정해진 커맨드로만 제한 (--allowedTools활용)
3. 도구/파일 접근 통제
🧰 allowed/disallowed tools (현재는 claude_args로 전달)
- 예: “테스트 실행만 허용하고, 임의
curl/rm -rf같은 건 금지”라는 식으로 설계
claude_args: |
--allowedTools "Bash(npm test)"
--disallowedTools "Bash(rm *)"
📁 파일 접근 범위
- Claude는 MCP GitHub File Ops를 통해 파일을 읽고 수정
- 보안상 민감한 파일(예: 인프라 크리덴셜 템플릿)은
- 별도 리포로 분리
- Claude가 동작하는 워크플로에서 해당 경로 접근을 정책적으로 금지(프롬프트 + 코드 리뷰 규칙)
4. 리뷰/감사 및 운영 프로세스
🧾 사람 리뷰 필수 정책
- Claude가 생성한 PR/커밋에는
- “AI Generated” 라벨 자동 부여
- 최소 1명 이상의 인간 리뷰어 필수 요구
- 보안 고위험 영역(인증/암호화/결제)
- Claude 코드는 “초안/제안”으로만 사용하고, 실제 반영은 담당자 수동 작성
📊 로그/모니터링
- GitHub Audit Log, Actions 로그에
- Claude 실행 워크플로 ID
- 사용된 prompt/명령 패턴(내부 정책상 가능한 범위에서)
- Harden-Runner / SIEM(Wazuh, Elastic, Chronicle 등)에
- 네트워크 이벤트 / 프로세스 이벤트 연계
- 비정상 외부 접속 탐지 룰 설정
도입/운영 체크리스트
- 리포지토리 범위 정의
- 어느 레포/브랜치에 Claude Code를 허용할지 결정
- POC는 비핵심·테스트 레포부터 시작
- 권한 설계
- GitHub App 권한 최소화 (Contents/Issues/PR만)
- Protected branch + 필수 리뷰/빌드
- 네트워크/런타임 통제
- Harden-Runner 등으로 egress audit → 이후 제한
allowedTools로 실행 가능한 명령 최소화
- CLAUDE.md + 보안 가이드 구축
- 프로젝트 코딩 규칙 + 보안 규칙(입력 검증, 인증/권한, 비밀정보 처리) 명시
- “보안 관련 변경은 반드시 사람 검토 필요” 같은 정책도 적어둠
- 운영 정책/교육
- 개발자에게
@claude멘션 사용법- “무조건 믿지 말고 리뷰하라”는 원칙
- 보안팀은
- 정기적으로 Claude 생성 PR 샘플 리뷰
- 이상 행위(과도한 패키지 설치, 외부 호스트 접속 등) 모니터링
- 개발자에게
- 클라우드 제공자 선택
- 데이터 거버넌스/규제가 중요하다면:
- AWS Bedrock / Google Vertex AI 경유 사용 검토 (데이터 레지던시, VPC 등)
- 데이터 거버넌스/규제가 중요하다면:
“코드 리뷰 + 구현 자동화 엔진”으로 보기
정리하면 Claude Code Action은
- PR/이슈 Q&A + 리뷰 + 코드 구현까지 한 번에 처리하는 GitHub Action
- Intelligent Mode Detection으로 별도 모드 설정 없이 자연스럽게 동작
prompt+claude_args+CLAUDE.md만으로 구성이 단일화된 깔끔한 구조- GitHub API + MCP + 체크박스로 협업 흐름에 자연스럽게 녹아드는 자동화
- 네트워크 제한이 거의 없는 강력한 에이전트이므로
→ 권한 최소화 + 네트워크 모니터링 + 사람 리뷰를 반드시 결합해야 안전하게 운영 가능
728x90
그리드형(광고전용)
댓글