MCPcopy Index your code
hub / github.com/anthropics/claude-code-base-action

github.com/anthropics/claude-code-base-action @v0.0.63

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.0.63 ↗ · + Follow
10 symbols 42 edges 10 files 0 documented · 0% updated 2d agov0.0.63 · 2025-08-22★ 8997 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

⚠️ This is a Mirror Repository

This repository is an automated mirror of the base-action directory from anthropics/claude-code-action.

Do not submit PRs or issues to this repository. Instead, please contribute to the main repository:


Claude Code Base Action

This GitHub Action allows you to run Claude Code within your GitHub Actions workflows. You can use this to build any custom workflow on top of Claude Code.

For simply tagging @claude in issues and PRs out of the box, check out the Claude Code action and GitHub app.

Usage

Add the following to your workflow file:

# Using a direct prompt
- name: Run Claude Code with direct prompt
  uses: anthropics/claude-code-base-action@beta
  with:
    prompt: "Your prompt here"
    allowed_tools: "Bash(git:*),View,GlobTool,GrepTool,BatchTool"
    anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

# Or using a prompt from a file
- name: Run Claude Code with prompt file
  uses: anthropics/claude-code-base-action@beta
  with:
    prompt_file: "/path/to/prompt.txt"
    allowed_tools: "Bash(git:*),View,GlobTool,GrepTool,BatchTool"
    anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

# Or limiting the conversation turns
- name: Run Claude Code with limited turns
  uses: anthropics/claude-code-base-action@beta
  with:
    prompt: "Your prompt here"
    allowed_tools: "Bash(git:*),View,GlobTool,GrepTool,BatchTool"
    max_turns: "5" # Limit conversation to 5 turns
    anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

# Using custom system prompts
- name: Run Claude Code with custom system prompt
  uses: anthropics/claude-code-base-action@beta
  with:
    prompt: "Build a REST API"
    system_prompt: "You are a senior backend engineer. Focus on security, performance, and maintainability."
    allowed_tools: "Bash(git:*),View,GlobTool,GrepTool,BatchTool"
    anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

# Or appending to the default system prompt
- name: Run Claude Code with appended system prompt
  uses: anthropics/claude-code-base-action@beta
  with:
    prompt: "Create a database schema"
    append_system_prompt: "After writing code, be sure to code review yourself."
    allowed_tools: "Bash(git:*),View,GlobTool,GrepTool,BatchTool"
    anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

# Using custom environment variables
- name: Run Claude Code with custom environment variables
  uses: anthropics/claude-code-base-action@beta
  with:
    prompt: "Deploy to staging environment"
    claude_env: |
      ENVIRONMENT: staging
      API_URL: https://api-staging.example.com
      DEBUG: true
    allowed_tools: "Bash(git:*),View,GlobTool,GrepTool,BatchTool"
    anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

# Using fallback model for handling API errors
- name: Run Claude Code with fallback model
  uses: anthropics/claude-code-base-action@beta
  with:
    prompt: "Review and fix TypeScript errors"
    model: "claude-opus-4-1-20250805"
    fallback_model: "claude-sonnet-4-20250514"
    allowed_tools: "Bash(git:*),View,GlobTool,GrepTool,BatchTool"
    anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

# Using OAuth token instead of API key
- name: Run Claude Code with OAuth token
  uses: anthropics/claude-code-base-action@beta
  with:
    prompt: "Update dependencies"
    allowed_tools: "Bash(git:*),View,GlobTool,GrepTool,BatchTool"
    claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}

Inputs

Input Description Required Default
prompt The prompt to send to Claude Code No* ''
prompt_file Path to a file containing the prompt to send to Claude Code No* ''
allowed_tools Comma-separated list of allowed tools for Claude Code to use No ''
disallowed_tools Comma-separated list of disallowed tools that Claude Code cannot use No ''
max_turns Maximum number of conversation turns (default: no limit) No ''
mcp_config Path to the MCP configuration JSON file, or MCP configuration JSON string No ''
settings Path to Claude Code settings JSON file, or settings JSON string No ''
system_prompt Override system prompt No ''
append_system_prompt Append to system prompt No ''
claude_env Custom environment variables to pass to Claude Code execution (YAML multiline format) No ''
model Model to use (provider-specific format required for Bedrock/Vertex) No 'claude-4-0-sonnet-20250219'
anthropic_model DEPRECATED: Use 'model' instead No 'claude-4-0-sonnet-20250219'
fallback_model Enable automatic fallback to specified model when default model is overloaded No ''
timeout_minutes Timeout in minutes for Claude Code execution No '10'
anthropic_api_key Anthropic API key (required for direct Anthropic API) No ''
claude_code_oauth_token Claude Code OAuth token (alternative to anthropic_api_key) No ''
use_bedrock Use Amazon Bedrock with OIDC authentication instead of direct Anthropic API No 'false'
use_vertex Use Google Vertex AI with OIDC authentication instead of direct Anthropic API No 'false'
use_node_cache Whether to use Node.js dependency caching (set to true only for Node.js projects with lock files) No 'false'

*Either prompt or prompt_file must be provided, but not both.

Outputs

Output Description
conclusion Execution status of Claude Code ('success' or 'failure')
execution_file Path to the JSON file containing Claude Code execution log

Environment Variables

The following environment variables can be used to configure the action:

Variable Description Default
NODE_VERSION Node.js version to use (e.g., '18.x', '20.x', '22.x') '18.x'

Example usage:

- name: Run Claude Code with Node.js 20
  uses: anthropics/claude-code-base-action@beta
  env:
    NODE_VERSION: "20.x"
  with:
    prompt: "Your prompt here"
    anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

Custom Environment Variables

You can pass custom environment variables to Claude Code execution using the claude_env input. This allows Claude to access environment-specific configuration during its execution.

The claude_env input accepts YAML multiline format with key-value pairs:

- name: Deploy with custom environment
  uses: anthropics/claude-code-base-action@beta
  with:
    prompt: "Deploy the application to the staging environment"
    claude_env: |
      ENVIRONMENT: staging
      API_BASE_URL: https://api-staging.example.com
      DATABASE_URL: ${{ secrets.STAGING_DB_URL }}
      DEBUG: true
      LOG_LEVEL: debug
    allowed_tools: "Bash(git:*),View,GlobTool,GrepTool,BatchTool"
    anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

Features:

  • YAML Format: Use standard YAML key-value syntax (KEY: value)
  • Multiline Support: Define multiple environment variables in a single input
  • Comments: Lines starting with # are ignored
  • GitHub Secrets: Can reference GitHub secrets using ${{ secrets.SECRET_NAME }}
  • Runtime Access: Environment variables are available to Claude during execution

Example Use Cases:

# Development configuration
claude_env: |
  NODE_ENV: development
  API_URL: http://localhost:3000
  DEBUG: true

# Production deployment
claude_env: |
  NODE_ENV: production
  API_URL: https://api.example.com
  DATABASE_URL: ${{ secrets.PROD_DB_URL }}
  REDIS_URL: ${{ secrets.REDIS_URL }}

# Feature flags and configuration
claude_env: |
  FEATURE_NEW_UI: enabled
  MAX_RETRIES: 3
  TIMEOUT_MS: 5000

Using Settings Configuration

You can provide Claude Code settings configuration in two ways:

Option 1: Settings Configuration File

Provide a path to a JSON file containing Claude Code settings:

- name: Run Claude Code with settings file
  uses: anthropics/claude-code-base-action@beta
  with:
    prompt: "Your prompt here"
    settings: "path/to/settings.json"
    allowed_tools: "Bash(git:*),View,GlobTool,GrepTool,BatchTool"
    anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

Option 2: Inline Settings Configuration

Provide the settings configuration directly as a JSON string:

- name: Run Claude Code with inline settings
  uses: anthropics/claude-code-base-action@beta
  with:
    prompt: "Your prompt here"
    settings: |
      {
        "model": "claude-opus-4-1-20250805",
        "env": {
          "DEBUG": "true",
          "API_URL": "https://api.example.com"
        },
        "permissions": {
          "allow": ["Bash", "Read"],
          "deny": ["WebFetch"]
        },
        "hooks": {
          "PreToolUse": [{
            "matcher": "Bash",
            "hooks": [{
              "type": "command",
              "command": "echo Running bash command..."
            }]
          }]
        }
      }
    allowed_tools: "Bash(git:*),View,GlobTool,GrepTool,BatchTool"
    anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

The settings file supports all Claude Code settings options including:

  • model: Override the default model
  • env: Environment variables for the session
  • permissions: Tool usage permissions
  • hooks: Pre/post tool execution hooks
  • includeCoAuthoredBy: Include co-authored-by in git commits
  • And more...

Note: The enableAllProjectMcpServers setting is always set to true by this action to ensure MCP servers work correctly.

Using MCP Config

You can provide MCP configuration in two ways:

Option 1: MCP Configuration File

Provide a path to a JSON file containing MCP configuration:

- name: Run Claude Code with MCP config file
  uses: anthropics/claude-code-base-action@beta
  with:
    prompt: "Your prompt here"
    mcp_config: "path/to/mcp-config.json"
    allowed_tools: "Bash(git:*),View,GlobTool,GrepTool,BatchTool"
    anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

Option 2: Inline MCP Configuration

Provide the MCP configuration directly as a JSON string:

- name: Run Claude Code with inline MCP config
  uses: anthropics/claude-code-base-action@beta
  with:
    prompt: "Your prompt here"
    mcp_config: |
      {
        "mcpServers": {
          "server-name": {
            "command": "node",
            "args": ["./server.js"],
            "env": {
              "API_KEY": "your-api-key"
            }
          }
        }
      }
    allowed_tools: "Bash(git:*),View,GlobTool,GrepTool,BatchTool"
    anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

The MCP config file should follow this format:

{
  "mcpServers": {
    "server-name": {
      "command": "node",
      "args": ["./server.js"],
      "env": {
        "API_KEY": "your-api-key"
      }
    }
  }
}

You can combine MCP config with other inputs like allowed tools:

# Using multiple inputs together
- name: Run Claude Code with MCP and custom tools
  uses: anthropics/claude-code-base-action@beta
  with:
    prompt: "Access the custom MCP server and use its tools"
    mcp_config: "mcp-config.json"
    allowed_tools: "Bash(git:*),View,mcp__server-name__custom_tool"
    timeout_minutes: "15"
    anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

Example: PR Code Review

```yaml name: Claude Code Review

on: pull_request: types: [opened, synchronize]

jobs: code-review: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 0

  - name: Run Code Review

Core symbols most depended-on inside this repo

Shape

Function 10

Languages

TypeScript100%

Modules by API surface

src/run-claude.ts3 symbols
src/prepare-prompt.ts3 symbols
test/mcp-test/simple-mcp-server.ts1 symbols
src/validate-env.ts1 symbols
src/setup-claude-code-settings.ts1 symbols
src/index.ts1 symbols

For agents

$ claude mcp add claude-code-base-action \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page