<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Ci-Cd on RockB</title><link>https://baeseokjae.github.io/tags/ci-cd/</link><description>Recent content in Ci-Cd on RockB</description><image><title>RockB</title><url>https://baeseokjae.github.io/images/og-default.png</url><link>https://baeseokjae.github.io/images/og-default.png</link></image><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 23 Apr 2026 01:17:24 +0000</lastBuildDate><atom:link href="https://baeseokjae.github.io/tags/ci-cd/index.xml" rel="self" type="application/rss+xml"/><item><title>Claude Code GitHub Workflow 2026: PR Reviews, Commits, and CI Integration</title><link>https://baeseokjae.github.io/posts/claude-code-github-workflow-2026/</link><pubDate>Thu, 23 Apr 2026 01:17:24 +0000</pubDate><guid>https://baeseokjae.github.io/posts/claude-code-github-workflow-2026/</guid><description>Set up Claude Code GitHub Actions for automated PR reviews, CI failure auto-fix, and cost-effective AI code review under $5/month.</description><content:encoded><![CDATA[<p>The <code>anthropics/claude-code-action@v1</code> GitHub Action runs a full Claude Code runtime inside any standard GitHub Actions runner, giving your team automated PR reviews, CI failure auto-fixes, and interactive <code>@claude</code> comment triggers — all for under $5/month on most repositories.</p>
<h2 id="the-review-capacity-crisis-driving-ai-adoption-in-2026">The Review Capacity Crisis Driving AI Adoption in 2026</h2>
<p>Review capacity, not development speed, now limits delivery velocity — and that is the primary bottleneck facing engineering teams in 2026. Zylos Research found that 84% of developers regularly use AI-assisted coding tools and that 41% of all commits are AI-assisted. The natural next step is closing the loop: if AI is generating code, AI should also review it. The AI code review market is projected to reach $750M with a 9.2% CAGR through 2033, and 20% of companies already use AI to review 10–20% of their PRs, with that share expected to grow sharply through the year. Teams that don&rsquo;t automate review risk creating a two-speed pipeline — AI-pace code generation feeding into human-pace review queues. Claude Code GitHub Actions eliminates that mismatch by inserting a capable, configurable AI reviewer at every pull request boundary, scaling review throughput without scaling headcount.</p>
<h2 id="what-is-anthropicsclaude-code-actionv1">What Is <code>anthropics/claude-code-action@v1</code>?</h2>
<p><code>anthropics/claude-code-action@v1</code> is the official Anthropic GitHub Action that runs the full Claude Code runtime inside a standard GitHub Actions runner. Launched as part of Claude Code 2.0 on September 29, 2025 and built on Anthropic&rsquo;s Agent SDK, the action supports two operating modes that are now auto-detected — no explicit <code>mode:</code> tag required. In <strong>interactive mode</strong>, the action wakes when a developer mentions <code>@claude</code> in a PR comment and responds inline. In <strong>automation mode</strong>, the action runs headlessly on a schedule or trigger using the <code>prompt</code> parameter in your workflow YAML. The action connects to Claude via four authentication backends: Anthropic API direct, Claude Code OAuth (Max plan), AWS Bedrock OIDC, and Google Vertex AI OIDC. The key parameters are <code>anthropic_api_key</code> (required unless using OAuth), <code>prompt</code> (optional; omit for comment-trigger mode), <code>claude_args</code> (pass-through to the CLI), and <code>trigger_phrase</code> (default <code>@claude</code>). Unlike simpler actions that just call the Chat API, this runs the full Code agent — it can read files, run tests, push commits, and open PRs.</p>
<h2 id="quick-setup-three-paths-to-get-started">Quick Setup: Three Paths to Get Started</h2>
<p>Getting started with Claude Code GitHub Actions takes under ten minutes on any of three paths. The <strong>fastest path</strong> is running <code>/install-github-app</code> inside the Claude Code terminal — it installs the GitHub App, configures secrets, and creates a starter workflow automatically. The <strong>manual path</strong> requires adding <code>ANTHROPIC_API_KEY</code> to your repository&rsquo;s GitHub Secrets (<code>Settings → Secrets → Actions → New repository secret</code>) and creating a workflow file in <code>.github/workflows/</code>. The <strong>OAuth path</strong> uses a Claude Max plan token instead of an API key, which is useful for teams that want billing through the Max subscription rather than pay-per-token. Private repositories work identically — the action requires <code>pull-requests: write</code> permission in the workflow&rsquo;s <code>permissions:</code> block. The starter workflow below covers 90% of teams getting started:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">name</span>: <span style="color:#ae81ff">Claude Code Review</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">on</span>:
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">pull_request</span>:
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">types</span>: [<span style="color:#ae81ff">opened, synchronize]</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">issue_comment</span>:
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">types</span>: [<span style="color:#ae81ff">created]</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">permissions</span>:
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">pull-requests</span>: <span style="color:#ae81ff">write</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">contents</span>: <span style="color:#ae81ff">read</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">jobs</span>:
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">claude-review</span>:
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">runs-on</span>: <span style="color:#ae81ff">ubuntu-latest</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">steps</span>:
</span></span><span style="display:flex;"><span>      - <span style="color:#f92672">uses</span>: <span style="color:#ae81ff">actions/checkout@v4</span>
</span></span><span style="display:flex;"><span>      - <span style="color:#f92672">uses</span>: <span style="color:#ae81ff">anthropics/claude-code-action@v1</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">with</span>:
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">anthropic_api_key</span>: <span style="color:#ae81ff">${{ secrets.ANTHROPIC_API_KEY }}</span>
</span></span></code></pre></div><h2 id="the-four-core-workflow-patterns">The Four Core Workflow Patterns</h2>
<p>There are four workflow patterns that cover nearly every CI use case teams encounter when integrating Claude Code with GitHub. Understanding all four before picking one saves you from wiring the wrong trigger and wasting tokens. Each pattern targets a distinct moment in the development lifecycle: ad-hoc developer questions, systematic pre-triage of every PR, recovering from broken CI, and generating structured data to gate downstream steps. Groundy&rsquo;s 2026 guide identifies these as the canonical set after analyzing hundreds of production deployments built on <code>claude-code-action@v1</code>. Most teams start with Pattern 2 (automated PR review), add Pattern 1 (interactive comments) once they see developers actually using <code>@claude</code> mentions, and graduate to Pattern 3 (CI auto-fix) after they trust the agent&rsquo;s judgment on their codebase. Pattern 4 is for teams with more mature pipelines that need machine-readable quality gates, not just human-readable comments. Choosing the right entry point saves several hours of misconfigured trial runs and avoids the common mistake of deploying Pattern 3 before establishing baseline trust in the model&rsquo;s review quality on your specific codebase.</p>
<h3 id="pattern-1-interactive-claude-comment-trigger">Pattern 1: Interactive <code>@claude</code> Comment Trigger</h3>
<p>The interactive trigger fires when any pull request comment contains the phrase <code>@claude</code>. The action reads the comment, loads the diff, and replies inline. Use this for ad-hoc requests: &ldquo;<strong>@claude</strong> can you explain why we&rsquo;re using a mutex here?&rdquo; or &ldquo;<strong>@claude</strong> rewrite this function to handle the null case.&rdquo; The <code>trigger_phrase</code> parameter defaults to <code>@claude</code> but can be changed to avoid conflicts with GitHub user handles. Keep <code>prompt</code> out of the YAML for this pattern — the comment text becomes the prompt.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">on</span>:
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">issue_comment</span>:
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">types</span>: [<span style="color:#ae81ff">created]</span>
</span></span></code></pre></div><h3 id="pattern-2-automated-pr-code-review">Pattern 2: Automated PR Code Review</h3>
<p>Automated review runs on every PR open and push. Add a <code>prompt</code> parameter with your team&rsquo;s review standards, and every PR gets pre-triaged before a human looks at it. Setting <code>post_as_review: true</code> submits a formal GitHub PR Review — it appears in the approvals section, not just as a comment. The <code>review_event</code> parameter accepts <code>COMMENT</code>, <code>APPROVE</code>, or <code>REQUEST_CHANGES</code>.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span>- <span style="color:#f92672">uses</span>: <span style="color:#ae81ff">anthropics/claude-code-action@v1</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">with</span>:
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">anthropic_api_key</span>: <span style="color:#ae81ff">${{ secrets.ANTHROPIC_API_KEY }}</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">prompt</span>: |<span style="color:#e6db74">
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">      Review this pull request for: correctness, security vulnerabilities,
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">      test coverage gaps, and adherence to our style guide in CLAUDE.md.
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">      Be direct and specific. Flag blockers clearly.</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">post_as_review</span>: <span style="color:#e6db74">&#34;true&#34;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">review_event</span>: <span style="color:#e6db74">&#34;COMMENT&#34;</span>
</span></span></code></pre></div><p>The <code>system_prompt</code> parameter is the highest-leverage config option for teams. Write your standards once — naming conventions, forbidden patterns, required test coverage thresholds — and every PR review inherits them automatically.</p>
<h3 id="pattern-3-ci-failure-auto-fix">Pattern 3: CI Failure Auto-Fix</h3>
<p>CI failure auto-fix is the highest-impact pattern and the most compelling demonstration of what differentiates this action from simpler AI review tools. When CI fails, Claude diagnoses the failure, creates a fix branch, pushes a patch, and opens a PR for human review — all without human intervention. The critical implementation detail is the loop prevention guard: use an <code>if:</code> condition to exclude Claude&rsquo;s own fix branches from triggering new fix attempts, or you&rsquo;ll create an infinite loop.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">name</span>: <span style="color:#ae81ff">Auto-Fix CI Failures</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">on</span>:
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">workflow_run</span>:
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">workflows</span>: [<span style="color:#e6db74">&#34;CI&#34;</span>]
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">types</span>: [<span style="color:#ae81ff">completed]</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">jobs</span>:
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">auto-fix</span>:
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">if</span>: &gt;<span style="color:#e6db74">
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">      github.event.workflow_run.conclusion == &#39;failure&#39; &amp;&amp;
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">      !startsWith(github.event.workflow_run.head_branch, &#39;claude-fix/&#39;)</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">runs-on</span>: <span style="color:#ae81ff">ubuntu-latest</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">permissions</span>:
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">contents</span>: <span style="color:#ae81ff">write</span>
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">pull-requests</span>: <span style="color:#ae81ff">write</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">steps</span>:
</span></span><span style="display:flex;"><span>      - <span style="color:#f92672">uses</span>: <span style="color:#ae81ff">actions/checkout@v4</span>
</span></span><span style="display:flex;"><span>      - <span style="color:#f92672">uses</span>: <span style="color:#ae81ff">anthropics/claude-code-action@v1</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">with</span>:
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">anthropic_api_key</span>: <span style="color:#ae81ff">${{ secrets.ANTHROPIC_API_KEY }}</span>
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">prompt</span>: |<span style="color:#e6db74">
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">            CI failed on branch ${{ github.event.workflow_run.head_branch }}.
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">            Diagnose the failure, fix the root cause, commit on a new branch
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">            named claude-fix/${{ github.run_id }}, and open a PR.</span>
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">claude_args</span>: <span style="color:#e6db74">&#34;--max-turns 10&#34;</span>
</span></span></code></pre></div><h3 id="pattern-4-structured-output-for-downstream-decisions">Pattern 4: Structured Output for Downstream Decisions</h3>
<p>Pattern 4 generates machine-readable JSON from Claude&rsquo;s review, which downstream steps can parse to gate deployments or update dashboards. Instruct Claude to output only JSON in the <code>prompt</code>, then use <code>jq</code> or Python to extract fields. This pattern is overkill for most teams but indispensable for compliance pipelines that need auditable, structured quality gates.</p>
<h2 id="cost-optimization-path-filtering-concurrency-and-token-budgets">Cost Optimization: Path Filtering, Concurrency, and Token Budgets</h2>
<p>Claude Sonnet 4 costs $3/MTok input and $15/MTok output. A 400-line diff typically runs under $0.05 per review. For a team of 10 engineers merging 20 PRs/day, costs run approximately $24/month — and most teams running 50 PRs/month see under $5/month. Three levers control costs:</p>
<p><strong>Path filtering</strong> is the highest-impact optimization. Add <code>paths:</code> to your trigger to skip lock files, auto-generated code, and docs-only changes. This saves 30–50% on token costs immediately.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">on</span>:
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">pull_request</span>:
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">paths</span>:
</span></span><span style="display:flex;"><span>      - <span style="color:#e6db74">&#34;src/**&#34;</span>
</span></span><span style="display:flex;"><span>      - <span style="color:#e6db74">&#34;lib/**&#34;</span>
</span></span><span style="display:flex;"><span>      - <span style="color:#e6db74">&#34;!**/*.lock&#34;</span>
</span></span><span style="display:flex;"><span>      - <span style="color:#e6db74">&#34;!**/generated/**&#34;</span>
</span></span></code></pre></div><p><strong>Concurrency groups</strong> prevent parallel review jobs from stacking up on rapid pushes:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">concurrency</span>:
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">group</span>: <span style="color:#ae81ff">claude-review-${{ github.ref }}</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">cancel-in-progress</span>: <span style="color:#66d9ef">true</span>
</span></span></code></pre></div><p><strong><code>--max-turns</code></strong> caps the agent&rsquo;s iteration count. For review-only workflows, <code>--max-turns 3</code> is plenty. For CI auto-fix, <code>--max-turns 10</code> gives the agent enough room to diagnose and patch without running indefinitely.</p>
<h2 id="security-guardrails-loop-prevention-permissions-and-claudemd">Security Guardrails: Loop Prevention, Permissions, and CLAUDE.md</h2>
<p>Three security practices are non-negotiable for production deployments. First, <strong>never commit API keys</strong> — use GitHub Secrets exclusively. Second, <strong>scope permissions to the minimum necessary</strong>: a review-only job needs only <code>pull-requests: write</code> and <code>contents: read</code>; an auto-fix job additionally needs <code>contents: write</code>. Third, <strong>use CLAUDE.md to constrain behavior</strong>: place a <code>CLAUDE.md</code> at the repository root with explicit behavioral limits — which files the agent may not modify, which commands it may not run, and which review standards apply. Claude Code reads <code>CLAUDE.md</code> automatically on every run, making it the most reliable way to enforce team conventions without repeating them in every workflow YAML.</p>
<p>The loop prevention guard for CI auto-fix belongs in every production deployment:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">if</span>: &gt;<span style="color:#e6db74">
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">  !startsWith(github.event.workflow_run.head_branch, &#39;claude-fix/&#39;) &amp;&amp;
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">  !contains(github.actor, &#39;[bot]&#39;)</span>
</span></span></code></pre></div><h2 id="enterprise-deployment-aws-bedrock-and-google-vertex-ai">Enterprise Deployment: AWS Bedrock and Google Vertex AI</h2>
<p>For organizations with data residency requirements or enterprise procurement constraints, the action supports AWS Bedrock and Google Vertex AI as authentication backends via OIDC — no direct Anthropic billing required. Configure AWS Bedrock by setting <code>use_bedrock: true</code> and providing the appropriate OIDC role and region. Configure Google Vertex AI with <code>use_vertex: true</code> plus your project and region. Both paths require the GitHub OIDC token permission (<code>id-token: write</code>) in the workflow&rsquo;s <code>permissions:</code> block. Enterprise deployments using Bedrock or Vertex bypass the Anthropic API rate limits that can affect high-volume teams and get the same model quality with their existing cloud provider billing relationships.</p>
<table>
  <thead>
      <tr>
          <th>Auth Backend</th>
          <th>Billing</th>
          <th>Data Residency</th>
          <th>Setup Complexity</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Anthropic API</td>
          <td>Pay-per-token</td>
          <td>US (default)</td>
          <td>Low</td>
      </tr>
      <tr>
          <td>Claude Max OAuth</td>
          <td>Subscription</td>
          <td>US</td>
          <td>Low</td>
      </tr>
      <tr>
          <td>AWS Bedrock OIDC</td>
          <td>AWS billing</td>
          <td>Your region</td>
          <td>Medium</td>
      </tr>
      <tr>
          <td>Google Vertex OIDC</td>
          <td>GCP billing</td>
          <td>Your region</td>
          <td>Medium</td>
      </tr>
  </tbody>
</table>
<h2 id="the-state-of-ai-code-review-in-2026">The State of AI Code Review in 2026</h2>
<p>The numbers are unambiguous: AI code review delivers a 5:1 ROI, with teams reporting 300% return on subscription costs within six months and estimated annual savings of $250K for a 50-developer organization. Leading AI code review tools detect 42–48% of real-world runtime bugs with 85–95% overall accuracy and a 5–15% false positive rate. Code assistant adoption grew from 49.2% in January 2025 to 69% in October 2025 (peaking at 72.8% in August 2025). GitHub handles 82M+ pushes and 43M+ merged PRs per month — the scale at which manual review genuinely cannot keep pace. The industry has evolved from simple line-by-line analysis to agent-based, cross-repository review. Claude Code GitHub Actions is squarely in that second generation: it reasons about intent, not just syntax, and can act on what it finds rather than just flagging it.</p>
<h2 id="troubleshooting-common-issues">Troubleshooting Common Issues</h2>
<p><strong>Auth errors (<code>ANTHROPIC_API_KEY not found</code>):</strong> Confirm the secret name matches exactly — GitHub Secrets are case-sensitive. Confirm the workflow&rsquo;s <code>env:</code> or <code>with:</code> block references <code>${{ secrets.ANTHROPIC_API_KEY }}</code>, not a hardcoded string.</p>
<p><strong>Missing <code>pull-requests: write</code> permission:</strong> The action cannot post comments or submit reviews without this. Add it to the <code>permissions:</code> block at the job level, not just the workflow level.</p>
<p><strong>Loop prevention not working:</strong> Ensure your <code>if:</code> condition uses <code>startsWith</code> on the branch name, not a substring match. Claude&rsquo;s fix branches use the <code>claude-fix/</code> prefix by default.</p>
<p><strong>Review posts as a comment, not a formal review:</strong> Set <code>post_as_review: &quot;true&quot;</code> (string, not boolean) in the action&rsquo;s <code>with:</code> block.</p>
<p><strong>High token costs on large PRs:</strong> Add path filtering to the trigger and set <code>--max-turns</code> in <code>claude_args</code>. Review the <code>system_prompt</code> for unnecessary verbosity — shorter, more specific prompts cost less.</p>
<h2 id="best-practices-system-prompts-review-standards-and-team-conventions">Best Practices: System Prompts, Review Standards, and Team Conventions</h2>
<p>The <code>system_prompt</code> parameter is where teams get the most leverage per configuration hour invested. A well-written system prompt does three things: defines what good looks like (not just what bad looks like), scopes the review to what the team actually cares about (security? test coverage? API design?), and sets the tone (harsh gate vs. collaborative suggestion). Start specific and loosen over time as you observe false positives.</p>
<p>Put your review standards in <code>CLAUDE.md</code> rather than inline YAML — this keeps the source of truth version-controlled with the code it governs, visible to developers, and automatically loaded by every Claude Code session (local and CI). Use headings to separate concerns: <code>## Security Review Standards</code>, <code>## Testing Requirements</code>, <code>## Off-Limits Files</code>.</p>
<p>For teams new to AI review, start with <code>review_event: &quot;COMMENT&quot;</code> rather than <code>REQUEST_CHANGES</code> — this gives developers time to calibrate their trust in the AI&rsquo;s judgment before it starts blocking merges.</p>
<h2 id="faq">FAQ</h2>
<p><strong>Do I need a Claude Max plan to use Claude Code GitHub Actions?</strong>
No. The action works with a standard Anthropic API key on any plan. A Claude Max OAuth token is an option for teams that prefer subscription billing, but it is not required.</p>
<p><strong>Can Claude Code GitHub Actions push commits directly to my main branch?</strong>
Not unless you explicitly configure it to. The CI auto-fix pattern creates a new branch and opens a PR — it does not push to protected branches. You retain full merge control.</p>
<p><strong>How does <code>anthropics/claude-code-action@v1</code> differ from the old <code>v0</code> action?</strong>
In v1, mode is auto-detected (no more <code>mode:</code> tag), <code>direct_prompt</code> was renamed to <code>prompt</code>, and CLI options moved from dedicated parameters to <code>claude_args</code>. Any v0 workflow needs these three changes before upgrading.</p>
<p><strong>What happens if Claude&rsquo;s auto-fix PR is also broken?</strong>
The loop prevention guard (<code>!startsWith(branch, 'claude-fix/')</code>) prevents the action from triggering on its own fix branch. A broken fix PR shows up in your queue as any other PR — a human reviews and merges or closes it.</p>
<p><strong>Is this safe to run on public repositories?</strong>
Yes, with caution. The primary risk on public repos is prompt injection via malicious PR content. Scope the action&rsquo;s GitHub token permissions to the minimum necessary, and consider restricting the trigger to PRs from team members only using a <code>if: github.event.pull_request.author_association == 'MEMBER'</code> guard.</p>
]]></content:encoded></item></channel></rss>