Add documentation for the timeout_minutes input removal that occurred in PR #482. The input has been replaced with standard GitHub Actions timeout-minutes at job level. Fixes #527 Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Ashwin Bhat <ashwin-ant@users.noreply.github.com>
11 KiB
Migration Guide: v0.x to v1.0
This guide helps you migrate from Claude Code Action v0.x to v1.0. The new version introduces intelligent mode detection and simplified configuration while maintaining backward compatibility for most use cases.
Overview of Changes
🎯 Key Improvements in v1.0
- Automatic Mode Detection - No more manual
modeconfiguration - Simplified Configuration - Unified
promptandclaude_argsinputs - Better SDK Alignment - Closer integration with Claude Code CLI
⚠️ Breaking Changes
The following inputs have been deprecated and replaced:
| Deprecated Input | Replacement | Notes |
|---|---|---|
mode |
Auto-detected | Action automatically chooses based on context |
direct_prompt |
prompt |
Direct drop-in replacement |
override_prompt |
prompt |
Use GitHub context variables instead |
custom_instructions |
claude_args: --system-prompt |
Move to CLI arguments |
max_turns |
claude_args: --max-turns |
Use CLI format |
model |
claude_args: --model |
Specify via CLI |
allowed_tools |
claude_args: --allowedTools |
Use CLI format |
disallowed_tools |
claude_args: --disallowedTools |
Use CLI format |
claude_env |
settings with env object |
Use settings JSON |
mcp_config |
claude_args: --mcp-config |
Pass MCP config via CLI arguments |
timeout_minutes |
Use GitHub Actions timeout-minutes |
Configure at job level instead of input level |
Migration Examples
Basic Interactive Workflow (@claude mentions)
Before (v0.x):
- uses: anthropics/claude-code-action@beta
with:
mode: "tag"
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
custom_instructions: "Follow our coding standards"
max_turns: "10"
allowed_tools: "Edit,Read,Write"
After (v1.0):
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
claude_args: |
--max-turns 10
--system-prompt "Follow our coding standards"
--allowedTools Edit,Read,Write
Automation Workflow
Before (v0.x):
- uses: anthropics/claude-code-action@beta
with:
mode: "agent"
direct_prompt: "Review this PR for security issues"
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
model: "claude-3-5-sonnet-20241022"
allowed_tools: "Edit,Read,Write"
After (v1.0):
- uses: anthropics/claude-code-action@v1
with:
prompt: |
REPO: ${{ github.repository }}
PR NUMBER: ${{ github.event.pull_request.number }}
Review this PR for security issues
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
claude_args: |
--model claude-4-0-sonnet-20250805
--allowedTools Edit,Read,Write
⚠️ Important: For PR reviews, always include the repository and PR context in your prompt. This ensures Claude knows which PR to review.
Automation with Progress Tracking (New in v1.0)
Missing the tracking comments from v0.x agent mode? The new track_progress input brings them back!
In v1.0, automation mode (with prompt input) doesn't create tracking comments by default to reduce noise. However, if you need progress visibility, you can use the track_progress feature:
Before (v0.x with tracking):
- uses: anthropics/claude-code-action@beta
with:
mode: "agent"
direct_prompt: "Review this PR for security issues"
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
After (v1.0 with tracking):
- uses: anthropics/claude-code-action@v1
with:
track_progress: true # Forces tag mode with tracking comments
prompt: |
REPO: ${{ github.repository }}
PR NUMBER: ${{ github.event.pull_request.number }}
Review this PR for security issues
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
Benefits of track_progress
- Preserves GitHub Context: Automatically includes all PR/issue details, comments, and attachments
- Brings Back Tracking Comments: Creates progress indicators just like v0.x agent mode
- Works with Custom Prompts: Your
promptis injected as custom instructions while maintaining context
Supported Events for track_progress
The track_progress input only works with these GitHub events:
Pull Request Events:
opened- New PR createdsynchronize- PR updated with new commitsready_for_review- Draft PR marked as readyreopened- Previously closed PR reopened
Issue Events:
opened- New issue creatededited- Issue title or body modifiedlabeled- Label added to issueassigned- Issue assigned to user
Note
: Using
track_progress: truewith unsupported events will cause an error.
Custom Template with Variables
Before (v0.x):
- uses: anthropics/claude-code-action@beta
with:
override_prompt: |
Analyze PR #$PR_NUMBER in $REPOSITORY
Changed files: $CHANGED_FILES
Focus on security vulnerabilities
After (v1.0):
- uses: anthropics/claude-code-action@v1
with:
prompt: |
REPO: ${{ github.repository }}
PR NUMBER: ${{ github.event.pull_request.number }}
Analyze this pull request focusing on security vulnerabilities in the changed files.
Note: The PR branch is already checked out in the current working directory.
💡 Tip: While you can access GitHub context variables in your prompt, it's recommended to use the standard
REPO:andPR NUMBER:format for consistency.
Environment Variables
Before (v0.x):
- uses: anthropics/claude-code-action@beta
with:
claude_env: |
NODE_ENV: test
CI: true
After (v1.0):
- uses: anthropics/claude-code-action@v1
with:
settings: |
{
"env": {
"NODE_ENV": "test",
"CI": "true"
}
}
Timeout Configuration
Before (v0.x):
- uses: anthropics/claude-code-action@beta
with:
timeout_minutes: 30
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
After (v1.0):
jobs:
claude-task:
runs-on: ubuntu-latest
timeout-minutes: 30 # Moved to job level
steps:
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
How Mode Detection Works
The action now automatically detects the appropriate mode:
-
If
promptis provided → Runs in automation mode- Executes immediately without waiting for @claude mentions
- Perfect for scheduled tasks, PR automation, etc.
-
If no
promptbut @claude is mentioned → Runs in interactive mode- Waits for and responds to @claude mentions
- Creates tracking comments with progress
-
If neither → No action is taken
Advanced Configuration with claude_args
The claude_args input provides direct access to Claude Code CLI arguments:
claude_args: |
--max-turns 15
--model claude-4-0-sonnet-20250805
--allowedTools Edit,Read,Write,Bash
--disallowedTools WebSearch
--system-prompt "You are a senior engineer focused on code quality"
--mcp-config '{"mcpServers": {"custom": {"command": "npx", "args": ["-y", "@example/server"]}}}'
Common claude_args Options
| Option | Description | Example |
|---|---|---|
--max-turns |
Limit conversation turns | --max-turns 10 |
--model |
Specify Claude model | --model claude-4-0-sonnet-20250805 |
--allowedTools |
Enable specific tools | --allowedTools Edit,Read,Write |
--disallowedTools |
Disable specific tools | --disallowedTools WebSearch |
--system-prompt |
Add system instructions | --system-prompt "Focus on security" |
--mcp-config |
Add MCP server config | --mcp-config '{"mcpServers": {...}}' |
Provider-Specific Updates
AWS Bedrock
- uses: anthropics/claude-code-action@v1
with:
use_bedrock: "true"
claude_args: |
--model anthropic.claude-4-0-sonnet-20250805-v1:0
Google Vertex AI
- uses: anthropics/claude-code-action@v1
with:
use_vertex: "true"
claude_args: |
--model claude-4-0-sonnet@20250805
MCP Configuration Migration
Adding Custom MCP Servers
Before (v0.x):
- uses: anthropics/claude-code-action@beta
with:
mcp_config: |
{
"mcpServers": {
"custom-server": {
"command": "npx",
"args": ["-y", "@example/server"]
}
}
}
After (v1.0):
- uses: anthropics/claude-code-action@v1
with:
claude_args: |
--mcp-config '{"mcpServers": {"custom-server": {"command": "npx", "args": ["-y", "@example/server"]}}}'
You can also pass MCP configuration from a file:
- uses: anthropics/claude-code-action@v1
with:
claude_args: |
--mcp-config /path/to/mcp-config.json
Step-by-Step Migration Checklist
- Update action version from
@betato@v1 - Remove
modeinput (auto-detected now) - Replace
direct_promptwithprompt - Replace
override_promptwithpromptusing GitHub context - Move
custom_instructionstoclaude_argswith--system-prompt - Convert
max_turnstoclaude_argswith--max-turns - Convert
modeltoclaude_argswith--model - Convert
allowed_toolstoclaude_argswith--allowedTools - Convert
disallowed_toolstoclaude_argswith--disallowedTools - Move
claude_envtosettingsJSON format - Move
mcp_configtoclaude_argswith--mcp-config - Replace
timeout_minuteswith GitHub Actionstimeout-minutesat job level - Optional: Add
track_progress: trueif you need tracking comments in automation mode - Test workflow in a non-production environment
Getting Help
If you encounter issues during migration:
- Check the FAQ for common questions
- Review example workflows for reference
- Open an issue for support
Version Compatibility
- v0.x workflows will continue to work but with deprecation warnings
- v1.0 is the recommended version for all new workflows
- Future versions may remove deprecated inputs entirely