Skip to content

Commit aec1c34

Browse files
mslutheractions-usersepehr500ashwin-antclaude[bot]
authored
Merge latest from upstream (#1)
* chore: update claude-code-base-action to v0.0.11 * chore: update claude-code-base-action to v0.0.12 * chore: update claude-code-base-action to v0.0.13 * Update allowed tools align with what is available in github-mcp-server (anthropics#145) * feat: add max_turns parameter support (anthropics#149) * feat: add max_turns parameter support - Add max_turns input to action.yml with proper description - Pass max_turns parameter through to claude-code-base-action - Update README with documentation and examples for max_turns usage - Add comprehensive tests to verify max_turns configuration - Add yaml dependency for test parsing Closes anthropics#148 Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> * chore: remove max-turns test and yaml dependency Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> * chore: revert package.json and bun.lock changes Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> * Update action.yml * prettier --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> * feat: add roadmap for Claude Code GitHub Action v1.0 (anthropics#150) Add ROADMAP.md documenting planned features and improvements for reaching v1.0: - GitHub Action CI results visibility - Cross-repo support - Workflow file modification capabilities - Additional event trigger support - Configurable commit signing - Enhanced code review features - Bot user trigger support - Customizable base prompts The roadmap provides transparency on development priorities and invites community feedback and contributions. * fix: set disallowed_tools as env when runing prepare.ts (anthropics#151) * chore: update claude-code-base-action to v0.0.14 * feat: add MultiEdit to base_allowed_tools (anthropics#155) Add MultiEdit tool to the BASE_ALLOWED_TOOLS array to enable Claude Code to use the MultiEdit tool for making multiple edits to a single file in one operation. Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> * fix: add baseUrl to Octokit initialization in update_claude_comment (anthropics#157) * fix: add baseUrl to Octokit initialization in update_claude_comment Fixes Bad credentials error on GitHub Enterprise Server by passing GITHUB_API_URL as baseUrl when initializing Octokit, consistent with other Octokit instances in the codebase. Fixes anthropics#156 Related to anthropics#107 Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> * fix: pass GITHUB_API_URL as env var to MCP server Update the MCP server initialization to pass GITHUB_API_URL as an environment variable, allowing it to work correctly with GitHub Enterprise Server instances. Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> * fix: import GITHUB_API_URL from config in install-mcp-server Use the centralized GITHUB_API_URL constant from src/github/api/config.ts instead of reading directly from process.env when passing environment variables to the MCP server. This ensures consistency with how the API URL is handled throughout the codebase. Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> * fix --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> * chore: update claude-code-base-action to v0.0.17 * chore: update claude-code-base-action to v0.0.18 * chore: update claude-code-base-action to v0.0.19 * feat: use GitHub display name in Co-authored-by trailers (anthropics#163) * feat: use GitHub display name in Co-authored-by trailers - Add name field to GitHubAuthor type - Update GraphQL queries to fetch user display names - Add triggerDisplayName to CommonFields type - Extract display name from fetched GitHub data in prepareContext - Update Co-authored-by trailer generation to use display name when available This ensures consistency with GitHub's web interface behavior where Co-authored-by trailers use the user's display name rather than username. Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> * fix: update GraphQL queries to handle Actor type correctly The name field is only available on the User subtype of Actor in GitHub's GraphQL API. This commit updates the queries to use inline fragments (... on User) to conditionally access the name field when the actor is a User type. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * refactor: clarify Co-authored-by instructions in prompt Replace interpolated values with clear references to XML tags and add explicit formatting instructions. This makes it clearer how to use the GitHub display name when available while maintaining the username for the email portion. Changes: - Use explicit references to <trigger_display_name> and <trigger_username> tags - Add clear formatting instructions and example - Explain fallback behavior when display name is not available 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * feat: fetch trigger user display name via dedicated GraphQL query Instead of trying to extract the display name from existing data (which was incomplete due to Actor type limitations), we now: - Add a dedicated USER_QUERY to fetch user display names - Pass the trigger username to fetchGitHubData - Fetch the display name during data collection phase - Simplify prepareContext to use the pre-fetched display name This ensures we always get the correct display name for Co-authored-by trailers, regardless of where the trigger came from. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com> * feat: use dynamic fetch depth based on PR commit count (anthropics#169) - Replace fixed depth of 20 with dynamic calculation - Use Math.max(commitCount, 20) to ensure minimum context * Accept multiline input for allowed_tools and disallowed_tools (anthropics#168) * docs: add uv example for Python MCP servers in mcp_config section (anthropics#170) Added documentation showing how to configure Python-based MCP servers using uv with the --directory argument, as requested in issue anthropics#130. Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Ashwin Bhat <ashwin-ant@users.noreply.github.com> * feat: add release workflow with beta tag management (anthropics#171) - Auto-increment patch version for new releases - Update beta tag to point to latest release - Update major version tag (v0) for simplified action usage - Support dry run mode for testing - Keep beta as the "latest" release channel 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Claude <noreply@anthropic.com> * chore: update claude-code-base-action to v0.0.20 * update MCP server image to version 0.5.0 (anthropics#175) * feat: enhance error reporting with specific error types from Claude execution (anthropics#164) * feat: enhance error reporting with specific error types from Claude execution - Extract error subtypes (error_during_execution, error_max_turns) from result object - Display specific error messages in comment header based on error type - Use total_cost_usd field from SDKResultMessage type - Prevent showing redundant error details when already displayed in header 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * chore: update claude-code-base-action to v0.0.19 * feat: use GitHub display name in Co-authored-by trailers (anthropics#163) * feat: use GitHub display name in Co-authored-by trailers - Add name field to GitHubAuthor type - Update GraphQL queries to fetch user display names - Add triggerDisplayName to CommonFields type - Extract display name from fetched GitHub data in prepareContext - Update Co-authored-by trailer generation to use display name when available This ensures consistency with GitHub's web interface behavior where Co-authored-by trailers use the user's display name rather than username. Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> * fix: update GraphQL queries to handle Actor type correctly The name field is only available on the User subtype of Actor in GitHub's GraphQL API. This commit updates the queries to use inline fragments (... on User) to conditionally access the name field when the actor is a User type. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * refactor: clarify Co-authored-by instructions in prompt Replace interpolated values with clear references to XML tags and add explicit formatting instructions. This makes it clearer how to use the GitHub display name when available while maintaining the username for the email portion. Changes: - Use explicit references to <trigger_display_name> and <trigger_username> tags - Add clear formatting instructions and example - Explain fallback behavior when display name is not available 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * feat: fetch trigger user display name via dedicated GraphQL query Instead of trying to extract the display name from existing data (which was incomplete due to Actor type limitations), we now: - Add a dedicated USER_QUERY to fetch user display names - Pass the trigger username to fetchGitHubData - Fetch the display name during data collection phase - Simplify prepareContext to use the pre-fetched display name This ensures we always get the correct display name for Co-authored-by trailers, regardless of where the trigger came from. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com> * feat: use dynamic fetch depth based on PR commit count (anthropics#169) - Replace fixed depth of 20 with dynamic calculation - Use Math.max(commitCount, 20) to ensure minimum context * Accept multiline input for allowed_tools and disallowed_tools (anthropics#168) * docs: add uv example for Python MCP servers in mcp_config section (anthropics#170) Added documentation showing how to configure Python-based MCP servers using uv with the --directory argument, as requested in issue anthropics#130. Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Ashwin Bhat <ashwin-ant@users.noreply.github.com> * feat: add release workflow with beta tag management (anthropics#171) - Auto-increment patch version for new releases - Update beta tag to point to latest release - Update major version tag (v0) for simplified action usage - Support dry run mode for testing - Keep beta as the "latest" release channel 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Claude <noreply@anthropic.com> * chore: update claude-code-base-action to v0.0.20 * update MCP server image to version 0.5.0 (anthropics#175) * refactor: convert error subtype check to switch case Replace if-else chain with switch statement for better readability and maintainability when handling error subtypes. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: GitHub Actions <actions@github.com> Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> Co-authored-by: Bastian Gutschke <bge@medicuja.com> Co-authored-by: Hidetake Iwata <int128@gmail.com> Co-authored-by: Tomohiro Ishibashi <103555868+tomoish@users.noreply.github.com> * Revert "feat: enhance error reporting with specific error types from Claude e…" (anthropics#179) This reverts commit 1b94b9e. * chore: update claude-code-base-action to v0.0.21 * fix: correct assignee trigger test to handle different assignee properly (anthropics#178) * fix: use direct assignee field * fix: correct assignee trigger test to handle different assignee properly The test was failing because the mockIssueAssignedContext was missing the top-level assignee field that the trigger validation logic checks. Added the missing assignee field to the mock context and updated the test to properly override both the top-level assignee and issue.assignee fields when testing assignment to a different user. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * Adjust IssuesAssignedEvent import position (#2) --------- Co-authored-by: Claude <noreply@anthropic.com> * chore: update claude-code-base-action to v0.0.22 * docs: remove references to non-existent test-local.sh script (anthropics#187) All tests for this repo can be run with `bun test` - the test-local.sh script was a holdover from the base action repo. Fixes anthropics#172 Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Ashwin Bhat <ashwin-ant@users.noreply.github.com> * chore: update claude-code-base-action to v0.0.23 * chore: update claude-code-base-action to v0.0.24 --------- Co-authored-by: GitHub Actions <actions@github.com> Co-authored-by: Sepehr Sobhani <sepehr411@gmail.com> Co-authored-by: Ashwin Bhat <ashwin@anthropic.com> Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com> Co-authored-by: atsushi-ishibashi <a.ishibashi0501@gmail.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Bastian Gutschke <bge@medicuja.com> Co-authored-by: Hidetake Iwata <int128@gmail.com> Co-authored-by: Tomohiro Ishibashi <103555868+tomoish@users.noreply.github.com> Co-authored-by: Kuma Taro <kumagai@bear.tokyo>
1 parent 4780996 commit aec1c34

24 files changed

+575
-45
lines changed

.github/workflows/claude-review.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,4 @@ jobs:
2929
3030
Be constructive and specific in your feedback. Give inline comments where applicable.
3131
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
32-
allowed_tools: "mcp__github__add_pull_request_review_comment"
32+
allowed_tools: "mcp__github__create_pending_pull_request_review,mcp__github__add_pull_request_review_comment_to_pending_review,mcp__github__submit_pending_pull_request_review,mcp__github__get_pull_request_diff"

.github/workflows/issue-triage.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ jobs:
3232
"--rm",
3333
"-e",
3434
"GITHUB_PERSONAL_ACCESS_TOKEN",
35-
"ghcr.io/github/github-mcp-server:sha-7aced2b"
35+
"ghcr.io/github/github-mcp-server:sha-6d69797"
3636
],
3737
"env": {
3838
"GITHUB_PERSONAL_ACCESS_TOKEN": "${{ secrets.GITHUB_TOKEN }}"

.github/workflows/release.yml

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
name: Create Release
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
dry_run:
7+
description: "Dry run (only show what would be created)"
8+
required: false
9+
type: boolean
10+
default: false
11+
12+
jobs:
13+
create-release:
14+
runs-on: ubuntu-latest
15+
permissions:
16+
contents: write
17+
outputs:
18+
next_version: ${{ steps.next_version.outputs.next_version }}
19+
steps:
20+
- name: Checkout code
21+
uses: actions/checkout@v4
22+
with:
23+
fetch-depth: 0
24+
25+
- name: Get latest tag
26+
id: get_latest_tag
27+
run: |
28+
# Get only version tags (v + number pattern)
29+
latest_tag=$(git tag -l 'v[0-9]*' | sort -V | tail -1 || echo "v0.0.0")
30+
if [ -z "$latest_tag" ]; then
31+
latest_tag="v0.0.0"
32+
fi
33+
echo "latest_tag=$latest_tag" >> $GITHUB_OUTPUT
34+
echo "Latest tag: $latest_tag"
35+
36+
- name: Calculate next version
37+
id: next_version
38+
run: |
39+
latest_tag="${{ steps.get_latest_tag.outputs.latest_tag }}"
40+
# Remove 'v' prefix and split by dots
41+
version=${latest_tag#v}
42+
IFS='.' read -ra VERSION_PARTS <<< "$version"
43+
44+
# Increment patch version
45+
major=${VERSION_PARTS[0]:-0}
46+
minor=${VERSION_PARTS[1]:-0}
47+
patch=${VERSION_PARTS[2]:-0}
48+
patch=$((patch + 1))
49+
50+
next_version="v${major}.${minor}.${patch}"
51+
echo "next_version=$next_version" >> $GITHUB_OUTPUT
52+
echo "Next version: $next_version"
53+
54+
- name: Display dry run info
55+
if: ${{ inputs.dry_run }}
56+
run: |
57+
echo "🔍 DRY RUN MODE"
58+
echo "Would create tag: ${{ steps.next_version.outputs.next_version }}"
59+
echo "From commit: ${{ github.sha }}"
60+
echo "Previous tag: ${{ steps.get_latest_tag.outputs.latest_tag }}"
61+
62+
- name: Create and push tag
63+
if: ${{ !inputs.dry_run }}
64+
run: |
65+
next_version="${{ steps.next_version.outputs.next_version }}"
66+
git config user.name "github-actions[bot]"
67+
git config user.email "github-actions[bot]@users.noreply.github.com"
68+
69+
git tag -a "$next_version" -m "Release $next_version"
70+
git push origin "$next_version"
71+
72+
- name: Create Release
73+
if: ${{ !inputs.dry_run }}
74+
env:
75+
GH_TOKEN: ${{ github.token }}
76+
run: |
77+
next_version="${{ steps.next_version.outputs.next_version }}"
78+
79+
gh release create "$next_version" \
80+
--title "$next_version" \
81+
--generate-notes \
82+
--latest=false # We want to keep beta as the latest
83+
84+
update-beta-tag:
85+
needs: create-release
86+
if: ${{ !inputs.dry_run }}
87+
runs-on: ubuntu-latest
88+
permissions:
89+
contents: write
90+
steps:
91+
- name: Checkout code
92+
uses: actions/checkout@v4
93+
with:
94+
fetch-depth: 0
95+
96+
- name: Update beta tag
97+
run: |
98+
# Get the latest version tag
99+
VERSION=$(git tag -l 'v[0-9]*' | sort -V | tail -1)
100+
101+
# Update the beta tag to point to this release
102+
git config user.name "github-actions[bot]"
103+
git config user.email "github-actions[bot]@users.noreply.github.com"
104+
git tag -fa beta -m "Update beta tag to ${VERSION}"
105+
git push origin beta --force
106+
107+
- name: Update beta release to be latest
108+
env:
109+
GH_TOKEN: ${{ github.token }}
110+
run: |
111+
# Update beta release to be marked as latest
112+
gh release edit beta --latest
113+
114+
update-major-tag:
115+
needs: create-release
116+
if: ${{ !inputs.dry_run }}
117+
runs-on: ubuntu-latest
118+
permissions:
119+
contents: write
120+
steps:
121+
- name: Checkout code
122+
uses: actions/checkout@v4
123+
with:
124+
fetch-depth: 0
125+
126+
- name: Update major version tag
127+
run: |
128+
next_version="${{ needs.create-release.outputs.next_version }}"
129+
# Extract major version (e.g., v0 from v0.0.20)
130+
major_version=$(echo "$next_version" | cut -d. -f1)
131+
132+
# Update the major version tag to point to this release
133+
git config user.name "github-actions[bot]"
134+
git config user.email "github-actions[bot]@users.noreply.github.com"
135+
git tag -fa "$major_version" -m "Update $major_version tag to $next_version"
136+
git push origin "$major_version" --force
137+
138+
echo "Updated $major_version tag to point to $next_version"

CONTRIBUTING.md

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -50,20 +50,6 @@ Thank you for your interest in contributing to Claude Code Action! This document
5050
bun test
5151
```
5252

53-
2. **Integration Tests** (using GitHub Actions locally):
54-
55-
```bash
56-
./test-local.sh
57-
```
58-
59-
This script:
60-
61-
- Installs `act` if not present (requires Homebrew on macOS)
62-
- Runs the GitHub Action workflow locally using Docker
63-
- Requires your `ANTHROPIC_API_KEY` to be set
64-
65-
On Apple Silicon Macs, the script automatically adds the `--container-architecture linux/amd64` flag to avoid compatibility issues.
66-
6753
## Pull Request Process
6854

6955
1. Create a new branch from `main`:
@@ -103,13 +89,7 @@ Thank you for your interest in contributing to Claude Code Action! This document
10389

10490
When modifying the action:
10591

106-
1. Test locally with the test script:
107-
108-
```bash
109-
./test-local.sh
110-
```
111-
112-
2. Test in a real GitHub Actions workflow by:
92+
1. Test in a real GitHub Actions workflow by:
11393
- Creating a test repository
11494
- Using your branch as the action source:
11595
```yaml

README.md

Lines changed: 64 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ jobs:
7070
# NODE_ENV: test
7171
# DEBUG: true
7272
# API_URL: https://api.example.com
73+
# Optional: limit the number of conversation turns
74+
# max_turns: "5"
7375
```
7476

7577
## Inputs
@@ -78,6 +80,7 @@ jobs:
7880
| --------------------- | -------------------------------------------------------------------------------------------------------------------- | -------- | --------- |
7981
| `anthropic_api_key` | Anthropic API key (required for direct API, not needed for Bedrock/Vertex) | No\* | - |
8082
| `direct_prompt` | Direct prompt for Claude to execute automatically without needing a trigger (for automated workflows) | No | - |
83+
| `max_turns` | Maximum number of conversation turns Claude can take (limits back-and-forth exchanges) | No | - |
8184
| `timeout_minutes` | Timeout in minutes for execution | No | `30` |
8285
| `github_token` | GitHub token for Claude to operate with. **Only include this if you're connecting a custom GitHub app of your own!** | No | - |
8386
| `model` | Model to use (provider-specific format required for Bedrock/Vertex) | No | - |
@@ -146,6 +149,40 @@ For MCP servers that require sensitive information like API keys or tokens, use
146149
# ... other inputs
147150
```
148151

152+
#### Using Python MCP Servers with uv
153+
154+
For Python-based MCP servers managed with `uv`, you need to specify the directory containing your server:
155+
156+
```yaml
157+
- uses: anthropics/claude-code-action@beta
158+
with:
159+
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
160+
mcp_config: |
161+
{
162+
"mcpServers": {
163+
"my-python-server": {
164+
"type": "stdio",
165+
"command": "uv",
166+
"args": [
167+
"--directory",
168+
"${{ github.workspace }}/path/to/server/",
169+
"run",
170+
"server_file.py"
171+
]
172+
}
173+
}
174+
}
175+
allowed_tools: "my-python-server__<tool_name>" # Replace <tool_name> with your server's tool names
176+
# ... other inputs
177+
```
178+
179+
For example, if your Python MCP server is at `mcp_servers/weather.py`, you would use:
180+
181+
```yaml
182+
"args":
183+
["--directory", "${{ github.workspace }}/mcp_servers/", "run", "weather.py"]
184+
```
185+
149186
**Important**:
150187
151188
- Always use GitHub Secrets (`${{ secrets.SECRET_NAME }}`) for sensitive values like API keys, tokens, or passwords. Never hardcode secrets directly in the workflow file.
@@ -311,6 +348,24 @@ You can pass custom environment variables to Claude Code execution using the `cl
311348

312349
The `claude_env` input accepts YAML format where each line defines a key-value pair. These environment variables will be available to Claude Code during execution, allowing it to run tests, build processes, or other commands that depend on specific environment configurations.
313350

351+
### Limiting Conversation Turns
352+
353+
You can use the `max_turns` parameter to limit the number of back-and-forth exchanges Claude can have during task execution. This is useful for:
354+
355+
- Controlling costs by preventing runaway conversations
356+
- Setting time boundaries for automated workflows
357+
- Ensuring predictable behavior in CI/CD pipelines
358+
359+
```yaml
360+
- uses: anthropics/claude-code-action@beta
361+
with:
362+
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
363+
max_turns: "5" # Limit to 5 conversation turns
364+
# ... other inputs
365+
```
366+
367+
When the turn limit is reached, Claude will stop execution gracefully. Choose a value that gives Claude enough turns to complete typical tasks while preventing excessive usage.
368+
314369
### Custom Tools
315370

316371
By default, Claude only has access to:
@@ -326,8 +381,15 @@ Claude does **not** have access to execute arbitrary Bash commands by default. I
326381
```yaml
327382
- uses: anthropics/claude-code-action@beta
328383
with:
329-
allowed_tools: "Bash(npm install),Bash(npm run test),Edit,Replace,NotebookEditCell"
330-
disallowed_tools: "TaskOutput,KillTask"
384+
allowed_tools: |
385+
Bash(npm install)
386+
Bash(npm run test)
387+
Edit
388+
Replace
389+
NotebookEditCell
390+
disallowed_tools: |
391+
TaskOutput
392+
KillTask
331393
# ... other inputs
332394
```
333395

ROADMAP.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Claude Code GitHub Action Roadmap
2+
3+
Thank you for trying out the beta of our GitHub Action! This document outlines our path to `v1.0`. Items are not necessarily in priority order.
4+
5+
## Path to 1.0
6+
7+
- **Ability to see GitHub Action CI results** - This will enable Claude to look at CI failures and make updates to PRs to fix test failures, lint errors, and the like.
8+
- **Cross-repo support** - Enable Claude to work across multiple repositories in a single session
9+
- **Ability to modify workflow files** - Let Claude update GitHub Actions workflows and other CI configuration files
10+
- **Support for workflow_dispatch and repository_dispatch events** - Dispatch Claude on events triggered via API from other workflows or from other services
11+
- **Ability to disable commit signing** - Option to turn off GPG signing for environments where it's not required. This will enable Claude to use normal `git` bash commands for committing. This will likely become the default behavior once added.
12+
- **Better code review behavior** - Support inline comments on specific lines, provide higher quality reviews with more actionable feedback
13+
- **Support triggering @claude from bot users** - Allow automation and bot accounts to invoke Claude
14+
- **Customizable base prompts** - Full control over Claude's initial context with template variables like `$PR_COMMENTS`, `$PR_FILES`, etc. Users can replace our default prompt entirely while still accessing key contextual data
15+
16+
---
17+
18+
**Note:** This roadmap represents our current vision for reaching `v1.0` and is subject to change based on user feedback and development priorities.
19+
20+
We welcome feedback on these planned features! If you're interested in contributing to any of these features, please open an issue to discuss implementation details with us. We're also open to suggestions for new features not listed here.

action.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,10 @@ inputs:
6262
required: false
6363
default: "false"
6464

65+
max_turns:
66+
description: "Maximum number of conversation turns"
67+
required: false
68+
default: ""
6569
timeout_minutes:
6670
description: "Timeout in minutes for execution"
6771
required: false
@@ -96,6 +100,7 @@ runs:
96100
ASSIGNEE_TRIGGER: ${{ inputs.assignee_trigger }}
97101
BASE_BRANCH: ${{ inputs.base_branch }}
98102
ALLOWED_TOOLS: ${{ inputs.allowed_tools }}
103+
DISALLOWED_TOOLS: ${{ inputs.disallowed_tools }}
99104
CUSTOM_INSTRUCTIONS: ${{ inputs.custom_instructions }}
100105
DIRECT_PROMPT: ${{ inputs.direct_prompt }}
101106
MCP_CONFIG: ${{ inputs.mcp_config }}
@@ -105,12 +110,13 @@ runs:
105110
- name: Run Claude Code
106111
id: claude-code
107112
if: steps.prepare.outputs.contains_trigger == 'true'
108-
uses: anthropics/claude-code-base-action@9e4e150978667888ba2108a2ee63a79bf9cfbe06 # v0.0.10
113+
uses: anthropics/claude-code-base-action@f382bd1ea00f26043eb461ebabebe0d850572a71 # v0.0.24
109114
with:
110115
prompt_file: ${{ runner.temp }}/claude-prompts/claude-prompt.txt
111116
allowed_tools: ${{ env.ALLOWED_TOOLS }}
112117
disallowed_tools: ${{ env.DISALLOWED_TOOLS }}
113118
timeout_minutes: ${{ inputs.timeout_minutes }}
119+
max_turns: ${{ inputs.max_turns }}
114120
model: ${{ inputs.model || inputs.anthropic_model }}
115121
mcp_config: ${{ steps.prepare.outputs.mcp_config }}
116122
use_bedrock: ${{ inputs.use_bedrock }}

0 commit comments

Comments
 (0)