-
-
Notifications
You must be signed in to change notification settings - Fork 953
Add Claude Code GitHub Workflow #2839
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,59 @@ | ||||||||||||||||||||||
| name: Claude Code Review | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| on: | ||||||||||||||||||||||
| pull_request: | ||||||||||||||||||||||
| types: [opened, synchronize] | ||||||||||||||||||||||
| # Optional: Only run on specific file changes | ||||||||||||||||||||||
| # paths: | ||||||||||||||||||||||
| # - "src/**/*.ts" | ||||||||||||||||||||||
| # - "src/**/*.tsx" | ||||||||||||||||||||||
| # - "src/**/*.js" | ||||||||||||||||||||||
| # - "src/**/*.jsx" | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| jobs: | ||||||||||||||||||||||
| claude-review: | ||||||||||||||||||||||
| # Optional: Filter by PR author | ||||||||||||||||||||||
| # if: | | ||||||||||||||||||||||
| # github.event.pull_request.user.login == 'external-contributor' || | ||||||||||||||||||||||
| # github.event.pull_request.user.login == 'new-developer' || | ||||||||||||||||||||||
| # github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR' | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| runs-on: ubuntu-latest | ||||||||||||||||||||||
| permissions: | ||||||||||||||||||||||
| contents: read | ||||||||||||||||||||||
| pull-requests: read | ||||||||||||||||||||||
| issues: read | ||||||||||||||||||||||
| id-token: write | ||||||||||||||||||||||
|
Comment on lines
+22
to
+26
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Missing write permission for The prompt instructs Claude to use 🔎 Proposed fix permissions:
contents: read
- pull-requests: read
+ pull-requests: write
issues: read
id-token: write📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||
|
|
||||||||||||||||||||||
| steps: | ||||||||||||||||||||||
| - name: Checkout repository | ||||||||||||||||||||||
| uses: actions/checkout@v4 | ||||||||||||||||||||||
| with: | ||||||||||||||||||||||
| fetch-depth: 1 | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| - name: Run Claude Code Review | ||||||||||||||||||||||
| id: claude-review | ||||||||||||||||||||||
| uses: anthropics/claude-code-action@v1 | ||||||||||||||||||||||
| with: | ||||||||||||||||||||||
| claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }} | ||||||||||||||||||||||
| prompt: | | ||||||||||||||||||||||
| REPO: ${{ github.repository }} | ||||||||||||||||||||||
| PR NUMBER: ${{ github.event.pull_request.number }} | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| Please review this pull request and provide feedback on: | ||||||||||||||||||||||
| - Code quality and best practices | ||||||||||||||||||||||
| - Potential bugs or issues | ||||||||||||||||||||||
| - Performance considerations | ||||||||||||||||||||||
| - Security concerns | ||||||||||||||||||||||
| - Test coverage | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| Use the repository's CLAUDE.md for guidance on style and conventions. Be constructive and helpful in your feedback. | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| Use `gh pr comment` with your Bash tool to leave your review as a comment on the PR. | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| # See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md | ||||||||||||||||||||||
| # or https://code.claude.com/docs/en/cli-reference for available options | ||||||||||||||||||||||
| claude_args: | | ||||||||||||||||||||||
| --allowed-tools "Bash(gh issue view:*),Bash(gh search:*),Bash(gh issue list:*),Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),Bash(gh pr list:*)" | ||||||||||||||||||||||
| --model claude-opus-4-5-20251101 | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,53 @@ | ||
| name: Claude Code | ||
|
|
||
| on: | ||
| issue_comment: | ||
| types: [created] | ||
| pull_request_review_comment: | ||
| types: [created] | ||
| issues: | ||
| types: [opened, assigned] | ||
| pull_request_review: | ||
| types: [submitted] | ||
|
|
||
| jobs: | ||
| claude: | ||
| if: | | ||
| (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) || | ||
| (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) || | ||
| (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) || | ||
| (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude'))) | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Assigned event triggers Claude for stale @claude mentionsMedium Severity The workflow triggers on |
||
| runs-on: ubuntu-latest | ||
| permissions: | ||
| contents: read | ||
| pull-requests: read | ||
| issues: read | ||
| id-token: write | ||
| actions: read # Required for Claude to read CI results on PRs | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Read-only permissions block Claude from commenting and committingHigh Severity The PR description states Claude can "create comments, branches, and commits", but the workflow only grants |
||
| steps: | ||
| - name: Checkout repository | ||
| uses: actions/checkout@v4 | ||
| with: | ||
| fetch-depth: 1 | ||
|
|
||
| - name: Run Claude Code | ||
| id: claude | ||
| uses: anthropics/claude-code-action@v1 | ||
| with: | ||
| claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }} | ||
|
|
||
| # This is an optional setting that allows Claude to read CI results on PRs | ||
| additional_permissions: | | ||
| actions: read | ||
|
|
||
| claude_args: | | ||
| --model claude-opus-4-5-20251101 | ||
|
|
||
| # Optional: Give a custom prompt to Claude. If this is not specified, Claude will perform the instructions specified in the comment that tagged it. | ||
| # prompt: 'Update the pull request description to include a summary of changes.' | ||
|
|
||
| # Optional: Add claude_args to customize behavior and configuration | ||
| # See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md | ||
| # or https://code.claude.com/docs/en/cli-reference for available options | ||
| # claude_args: '--allowed-tools Bash(gh pr:*)' | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Insufficient permissions prevent Claude from commenting on PRs
High Severity
The workflow explicitly instructs Claude to use
gh pr commentto leave review comments and includesBash(gh pr comment:*)in allowed tools, but thepermissionsblock only grantspull-requests: read. TheghCLI uses the workflow'sGITHUB_TOKEN, which is constrained by these permissions. The command will fail with a 403 error because write access is required. Changing topull-requests: writeis needed for the workflow to function as designed.