CoreCode블로그

가이드

Claude Code GitHub Actions 설정: 이슈와 PR에서 @claude 사용하기

게시일 · 최종 확인

Claude Code GitHub Actions는 저장소의 워크플로 안에서 Claude Code를 실행하는 GitHub Action입니다. 풀 리퀘스트나 이슈 댓글에서 @claude를 멘션하면 Claude가 코드를 분석하고, 변경을 구현하고, 커밋을 푸시합니다. 이 글은 빠른 설정과 수동 설정, 기본 워크플로, 자주 쓰는 입력값, 누가 실행을 트리거할 수 있는지, 비용과 보안 유의점, 응답하지 않을 때 확인할 것을 단계별로 정리한 사용법입니다. Anthropic의 Claude Code GitHub Actions 문서를 따르며, 2026년 10월 30일에 해당 페이지와 대조해 확인했습니다.

핵심 요약
  • 빠른 설정: 연결하려는 저장소에서 claude를 열고 /install-github-app을 실행한 뒤 안내를 따릅니다. github.com 저장소에서만 동작하며 저장소 관리자(admin) 권한이 필요합니다.
  • 수동 설정은 세 단계입니다. Claude GitHub App 설치, ANTHROPIC_API_KEY 또는 CLAUDE_CODE_OAUTH_TOKEN 시크릿 추가, examples/claude.yml을 .github/workflows/에 복사.
  • prompt 입력이 없는 워크플로는 대화형 모드로 실행되어 댓글의 @claude를 기다리고, prompt 입력이 있는 워크플로는 멘션을 기다리지 않는 자동화 모드로 실행됩니다.
  • 자격 증명은 GitHub Secrets에만 보관하고 절대 커밋하지 마세요. 워크플로에는 필요한 권한만 주고, 병합 전에 Claude의 변경을 검토하세요.
  • 실행마다 GitHub Actions 사용 시간과 API 토큰이 소모되며, --max-turns, 타임아웃, 동시 실행 제어로 상한을 둘 수 있습니다.

무엇을 하는가

Claude Code GitHub Action은 저장소의 워크플로 안에서 Claude Code를 실행합니다. 풀 리퀘스트나 이슈 댓글에서 @claude를 멘션하면 Claude가 코드를 분석하고, 변경을 구현하고, 커밋을 푸시합니다. prompt를 지정해 어떤 GitHub 이벤트에서든 자동으로 실행하게 할 수도 있습니다. Anthropic이 나열한 용도는 이슈를 풀 리퀘스트로 바꾸기, 댓글만으로 버그 고치기, 반복 작업 자동화입니다.

Claude Code라는 이름을 쓰는 제품은 여러 가지입니다. 이 글은 저장소의 워크플로 파일로 설정하는 claude-code-action을 다룹니다. 워크플로를 작성하지 않고 모든 풀 리퀘스트에 자동 리뷰를 받고 싶다면, Anthropic의 페이지는 별도 제품인 Code Review를 안내합니다.

설정: 빠른 설정과 수동 설정

어느 쪽이든 저장소 관리자(admin) 권한이 필요합니다.

방법할 일언제 쓰나
빠른 설정Claude Code에서 /install-github-app을 실행합니다. Claude Code가 GitHub App을 설치하고, 인증 시크릿을 추가하며, 워크플로 풀 리퀘스트를 준비합니다.Claude Code를 로컬에서 실행할 때.
수동 설정앱 설치, 시크릿 추가, 워크플로 파일 복사를 직접 합니다.Claude Code를 로컬에서 실행하지 않을 때, 명령어가 실패할 때, 워크플로 파일을 완전히 직접 관리하고 싶을 때.

빠른 설정

/install-github-app은 github.com 저장소에서만 동작합니다. 저장소의 git remote가 gitlab.com이나 bitbucket.org에 있으면 설정을 시작하지 않고 안내 메시지를 출력한 뒤 종료합니다.

  1. GitHub CLI를 설치하고 gh auth login으로 인증합니다. Claude Code가 설치 여부를 확인하고, 없으면 경고합니다.
  2. 연결하려는 저장소에서 claude를 열고 /install-github-app을 실행한 뒤 안내를 따릅니다. Claude Code가 Claude GitHub App을 설치한 다음, 워크플로용 인증 시크릿을 설정합니다.
  3. 시크릿을 고르는 방식: Claude Code에 이미 API 키가 있으면 그 키를 재사용하고, 저장소에 ANTHROPIC_API_KEY 시크릿이 이미 있으면 그것을 유지할지 묻습니다. 그렇지 않으면 Claude 구독으로 장기 토큰을 만들지, API 키를 붙여넣을지 선택합니다.
  4. Claude Code가 자격 증명을 저장소 시크릿으로 저장합니다. 이름은 API 키면 ANTHROPIC_API_KEY, 구독 토큰이면 CLAUDE_CODE_OAUTH_TOKEN입니다.
  5. Claude Code가 선택한 워크플로 파일(해당 시크릿을 쓰도록 이미 설정됨)을 브랜치로 푸시하고, 풀 리퀘스트를 바로 만들 수 있는 상태로 브라우저에서 GitHub를 엽니다. 그 풀 리퀘스트를 만들어 병합하면 저장소에서 @claude가 동작합니다.

중간에 멈추려면 Esc를 누릅니다. 진행 중인 단계는 끝까지 실행되고 이후 단계는 시작되지 않습니다. 마지막 메시지에는 푸시된 브랜치나 저장된 시크릿처럼 저장소에서 이미 일어난 일이 나열됩니다. GitHub App을 설치한 뒤 Claude Code는 GitHub Actions 설정을 계속할지 묻습니다. Skip for now를 선택하면 GitHub App만 설치된 상태로 멈추며, 나중에 /install-github-app을 다시 실행해 워크플로와 시크릿 단계를 마칠 수 있습니다.

리뷰 워크플로를 선택하면 Claude는 각 리뷰를 풀 리퀘스트 자체에 게시합니다. 문제를 찾으면 각 문제에 인라인 댓글을 달고, 찾지 못하면 요약 댓글 하나를 남깁니다. 초안(draft) 같은 일부 풀 리퀘스트는 건너뜁니다. v2.1.229 이전에는 Claude가 리뷰를 워크플로 실행 로그에만 기록했습니다.

이전 버전이 생성한 리뷰 워크플로를 업데이트하려면 다음 중 하나를 하세요.

Amazon Bedrock, Google Cloud의 Agent Platform, Microsoft Foundry를 사용한다면 Anthropic의 페이지가 별도 문서인 Use Claude Code GitHub Actions with cloud providers로 안내합니다.

수동 설정

1. Claude GitHub App 설치. Claude GitHub App을 저장소에 설치합니다. 이 Action은 앱 권한 중 세 가지를 사용합니다.

설치 중에는 다른 Claude 기능이 사용하는 권한도 함께 부여합니다. 전체 목록은 아래 "GitHub App 권한"에 있습니다.

2. 인증 시크릿 추가. 인증 방식에 따라 다음 시크릿 중 하나를 저장소에 추가합니다. GitHub의 안내서는 using secrets in GitHub Actions입니다.

워크플로 파일에서는 시크릿을 해당 입력에 전달합니다. API 키는 anthropic_api_key, OAuth 토큰은 claude_code_oauth_token입니다.

3. 워크플로 파일 복사. examples/claude.yml을 저장소의 .github/workflows/ 디렉터리에 복사합니다. 이 파일은 예시일 뿐 아니라 실제로 동작하는 워크플로입니다. 커밋한 그대로라면 누군가 이슈나 풀 리퀘스트에서 @claude를 멘션할 때마다 Claude가 응답하며, ANTHROPIC_API_KEY 시크릿으로 인증합니다. 대신 CLAUDE_CODE_OAUTH_TOKEN을 추가했다면 워크플로의 anthropic_api_key 줄을 claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}으로 바꾸세요.

설정 후에는 이슈나 PR 댓글에서 @claude를 태그해 테스트하세요.

조직에 설정하기

빠른 설정과 수동 설정은 한 번에 저장소 하나를 설정합니다. 조직 전체에 Action을 배포하려면 다음과 같이 합니다.

여러 저장소가 공유하는 시크릿에는 OAuth 토큰이 아니라 Claude Console의 API 키로 인증하세요. OAuth 토큰은 claude setup-token을 실행한 사람의 구독에 묶여 있기 때문입니다. 장기 시크릿을 아예 보관하지 않으려면 workload identity federation을 사용합니다. 이 Action이 워크플로의 GitHub OIDC 토큰을 Claude Console 서비스 계정을 통해 Claude API 접근 권한으로 교환합니다. 입력값은 anthropic_federation_rule_id, anthropic_organization_id, 그리고 선택 사항인 anthropic_service_account_id와 anthropic_workspace_id이며, 워크플로에는 id-token: write 권한이 필요합니다. Console 쪽 설정은 Action의 설정 가이드에 있습니다.

GitHub App 권한

Claude GitHub App은 이 Action, Code Review, 클라우드 세션의 풀 리퀘스트 auto-fix를 비롯해 GitHub와 연동되는 모든 Claude 기능이 공유합니다. GitHub App에는 권한 집합이 하나뿐이므로 이 Action이 쓰지 않는 권한도 일부 포함됩니다. 앱을 설치할 때 다음을 부여합니다.

권한접근 수준
Actions읽기 및 쓰기
Administration읽기
Checks읽기 및 쓰기
Contents읽기 및 쓰기
Discussions읽기 및 쓰기
Issues읽기 및 쓰기
Members읽기
Merge queues읽기
Metadata읽기
Pull requests읽기 및 쓰기
Repository hooks읽기 및 쓰기
Statuses읽기
Workflows읽기 및 쓰기

앱을 설치한다는 것은 전체 권한 집합을 수락한다는 뜻이며, GitHub는 일부만 수락하는 것을 허용하지 않습니다. 조직에서 이 Action이 사용하는 권한만 요구한다면, Action의 설정 가이드를 따라 Contents, Issues, Pull requests 권한만 가진 커스텀 GitHub App을 만드세요. 커스텀 앱은 이 Action만 지원합니다. Code Review와 웹 auto-fix는 여전히 공식 앱이 필요합니다.

기본 워크플로: @claude에 응답하기

이 워크플로는 Action을 대화형 모드로 실행하므로, 누군가 이슈나 PR 댓글에서 @claude를 멘션할 때마다 Claude가 응답합니다.

name: Claude Code
on:
  issue_comment:
    types: [created]
  pull_request_review_comment:
    types: [created]
jobs:
  claude:
    if: contains(github.event.comment.body, '@claude')
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write
      issues: write
      id-token: write
      actions: read
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 1
      - uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

이 워크플로에서 보일러플레이트가 아닌 부분은 다음과 같습니다.

워크플로를 갖췄다면 어떤 이슈나 PR 댓글에서든 @claude를 멘션하고 요청을 적으세요.

@claude implement this feature based on the issue description
@claude how should I implement user authentication for this endpoint?
@claude fix the TypeError in the user dashboard component

Claude는 같은 이슈나 PR의 댓글로 답하고, 작업하면서 그 댓글을 업데이트합니다.

대화형 모드, 자동화 모드, 그리고 누가 실행을 트리거할 수 있는가

Action은 워크플로 설정을 보고 실행 방식을 판단합니다.

두 모드 모두 Claude가 시작되기 전에 Action이 트리거한 행위자에 대해 두 가지 검사를 하며, 둘 중 하나라도 거부하면 실행이 실패합니다.

자주 쓰는 입력값

가장 많이 쓰는 입력값입니다. 각 항목은 anthropics/claude-code-action 스텝의 with: 키에 대응합니다.

파라미터설명필수
promptClaude에 대한 지시. 일반 텍스트 또는 skill 호출. 생략하면 Claude는 대신 트리거 문구에 응답합니다.아니요
claude_argsClaude Code에 전달하는 CLI 인자.아니요
anthropic_api_keyClaude API 키.Claude API 사용 시 필요하며, claude_code_oauth_token이나 workload identity federation을 쓰면 불필요합니다. Bedrock, Agent Platform, Foundry에서는 사용하지 않습니다.
claude_code_oauth_tokenClaude 구독으로 인증하는 OAuth 토큰. claude setup-token으로 생성합니다.아니요
github_tokenGitHub 작업용 토큰. 생략하면 Action이 Claude GitHub App으로 인증합니다.아니요
plugin_marketplaces플러그인 마켓플레이스 Git URL 목록(줄바꿈으로 구분).아니요
plugins실행 전에 설치할 플러그인 이름 목록(줄바꿈으로 구분).아니요
settingsClaude Code 설정. JSON 문자열 또는 설정 JSON 파일 경로.아니요
trigger_phraseClaude가 응답하는 트리거 문구. 기본값: @claude.아니요
use_bedrockClaude API 대신 Amazon Bedrock을 사용합니다.아니요
use_vertexClaude API 대신 Google Cloud의 Agent Platform을 사용합니다.아니요
use_foundryClaude API 대신 Microsoft Foundry를 사용합니다.아니요

전체 입력값 목록은 Action의 설정 레퍼런스를 참고하세요.

claude_args로 CLI 인자 전달하기

claude_args 파라미터는 모든 Claude Code CLI 인자를 받습니다.

claude_args: "--max-turns 5 --model claude-sonnet-5 --mcp-config /path/to/config.json"

자주 쓰는 인자:

추가 워크플로 예시

examples 디렉터리에는 여러 시나리오용 바로 쓸 수 있는 워크플로가 있습니다. 이 글의 예시는 API 키 인증을 보여 줍니다. Claude 구독으로 인증한다면 어느 예시든 anthropic_api_key 줄을 claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}으로 바꾸세요.

풀 리퀘스트 자동 리뷰 (skill 실행)

prompt 입력은 일반 텍스트뿐 아니라 skill 호출도 받습니다.

다음 워크플로는 code-review 플러그인을 설치하고, 풀 리퀘스트가 열리거나 업데이트되거나 다시 열리거나 리뷰 준비 상태로 바뀔 때 그 skill을 실행합니다. 빠른 설정의 리뷰 워크플로와 같은 플러그인을 실행합니다. 프롬프트, 모델, 트리거를 직접 제어하고 싶을 때 이런 워크플로를 쓰세요. 공개 저장소에서는 GitHub가 포크 풀 리퀘스트로 트리거된 실행에 시크릿을 제공하지 않으므로, 리뷰는 같은 저장소의 브랜치에서 온 풀 리퀘스트에서만 실행됩니다.

name: Code Review
on:
  pull_request:
    types: [opened, synchronize, ready_for_review, reopened]
jobs:
  review:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: read
      issues: read
      id-token: write
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 1
      - uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          plugin_marketplaces: "https://github.com/anthropics/claude-plugins-official.git"
          plugins: "code-review@claude-plugins-official"
          prompt: "/code-review:code-review --comment ${{ github.repository }}/pull/${{ github.event.pull_request.number }}"
          claude_args: '--allowedTools "mcp__github_inline_comment__create_inline_comment"'

이 워크플로의 두 줄이 리뷰가 어디로 가는지를 결정합니다.

Claude는 초안(draft) 및 닫힌 풀 리퀘스트, 자동 생성되었거나 사소한 것처럼 리뷰가 필요 없다고 판단한 풀 리퀘스트, 이미 Claude의 댓글이 있는 풀 리퀘스트를 건너뜁니다.

일정에 맞춰 실행하기

prompt 입력이 있으면 Action은 cron 일정을 포함한 모든 GitHub 이벤트에서 자동화 모드로 실행됩니다. 일반 텍스트 프롬프트에서는 프롬프트에 필요한 도구를 claude_args의 --allowedTools나 settings 입력의 permissions.allow 규칙으로 부여하기 전까지 Claude가 셸이나 GitHub API에 접근할 수 없습니다. 대신 skill을 호출한다면 Claude는 그 skill의 allowed-tools frontmatter가 부여한 도구를 쓸 수 있습니다. GitHub는 예약 워크플로를 기본 브랜치에서만 실행하며, 공개 저장소에서는 저장소 활동이 없는 채로 60일이 지나면 일정을 비활성화합니다.

이 워크플로는 매일 09:00 UTC에 워크플로 실행 로그에 리포트를 생성합니다. claude_args 줄이 모델을 선택하고 GitHub MCP 도구 두 개를 허용합니다. Claude가 그 도구로 GitHub API를 통해 커밋과 이슈를 읽으므로 checkout 스텝은 생략할 수 있습니다.

name: Daily Report
on:
  schedule:
    - cron: "0 9 * * *"
jobs:
  report:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      issues: read
      id-token: write
    steps:
      - uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          prompt: "Generate a summary of yesterday's commits and open issues"
          claude_args: |
            --model claude-opus-5-5
            --allowedTools "mcp__github__list_commits,mcp__github__list_issues"

CLAUDE.md로 프로젝트 표준 정의하기

저장소 루트에 CLAUDE.md 파일을 만들어 코드 스타일 가이드라인, 리뷰 기준, 프로젝트별 규칙, 선호하는 패턴을 정의하세요. Claude는 PR을 만들고 요청에 응답할 때 이 가이드라인을 따릅니다. 작성 방법은 CLAUDE.md 설정에서 다룹니다.

보안: 자격 증명과 권한

경고: API 키나 OAuth 토큰을 저장소에 직접 커밋하지 마세요. 항상 GitHub Secrets로 저장하고 워크플로에서 참조하세요. 예: anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}.

도구가 할 수 있는 일을 제어하는 Claude Code의 메커니즘은 권한 모드와 hooks를 참고하세요.

비용과 사용량

실행할 때마다 두 종류의 자원이 소모됩니다.

Claude에게 더 명확한 컨텍스트를 주고 실행당 작업량에 상한을 두면 두 종류의 비용을 모두 낮출 수 있습니다.

문제 해결

Claude가 @claude 명령에 응답하지 않을 때

Claude의 커밋에서 CI가 실행되지 않을 때

인증 오류

더 많은 해결 방법은 Action의 FAQ를 참고하세요.

제거와 베타에서 업그레이드

FAQ

@claude를 멘션했는데 아무 일도 일어나지 않습니다. 무엇부터 확인해야 하나요?

이 순서로 확인하세요. 저장소에 GitHub App이 설치되어 있는지, 워크플로가 활성화되어 있는지, 저장소 시크릿에 API 키나 OAuth 토큰이 설정되어 있는지, 댓글에서 @claude가 완전한 단어인지(/claude나 @claude-bot이 아닌지), 댓글을 단 사용자에게 쓰기 권한이 있는지. 봇 행위자는 allowed_bots에 나열하지 않으면 거부됩니다.

API 키와 OAuth 토큰 중 무엇을 써야 하나요?

둘 다 가능합니다. ANTHROPIC_API_KEY는 Claude Console API 키이고, CLAUDE_CODE_OAUTH_TOKEN은 Pro, Max, Team, Enterprise 요금제의 Claude 구독으로 인증합니다. OAuth 토큰을 쓰면 실행은 API 과금 대신 구독을 사용합니다. 조직의 여러 저장소가 공유하는 시크릿에는 Anthropic의 페이지가 API 키를 쓰라고 안내합니다. OAuth 토큰은 claude setup-token을 실행한 사람의 구독에 묶여 있기 때문입니다.

이 Action을 릴레이나 커스텀 base URL로 향하게 할 수 있나요?

Anthropic의 페이지에는 커스텀 base URL이나 게이트웨이 옵션이 문서화되어 있지 않으므로, 이 글은 그에 대해 아무 주장도 하지 않습니다. 페이지는 두 가지 경로를 설명합니다. 기본적으로 Claude API를 직접 호출하는 방식(API 키 또는 OAuth 토큰)과, use_bedrock, use_vertex, use_foundry로 본인의 클라우드 계정을 거치는 방식입니다. 본인 컴퓨터에 Claude Code 자체를 설정하는 방법은 Claude Code 설정에 있습니다.

출처