Repository navigation
"Credit balance is too low" only via the action (Agent SDK); same key, runner and prompt work with claude -p #771
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Claude Issue Triage | |
| description: Run Claude Code for issue triage in GitHub Actions | |
| on: | |
| issues: | |
| types: [opened] | |
| jobs: | |
| triage-issue: | |
| # This job calls Claude, so it runs on GitHub's egress-firewall runner, which | |
| # filters the job's outbound network traffic (allow list: .github/egress-firewall.yaml). | |
| runs-on: ubuntu-24.04-firewall | |
| timeout-minutes: 10 | |
| permissions: | |
| contents: read | |
| issues: write | |
| # Required to mint the OIDC token that is exchanged for a Claude API | |
| # access token (Workload Identity Federation). | |
| id-token: write | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - name: Run Claude Code for Issue Triage | |
| uses: anthropics/claude-code-action@main | |
| env: | |
| CLAUDE_CODE_SCRIPT_CAPS: '{"edit-issue-labels.sh":2}' | |
| with: | |
| prompt: "/label-issue REPO: ${{ github.repository }} ISSUE_NUMBER: ${{ github.event.issue.number }}" | |
| # Authenticate to the Claude API via Workload Identity Federation | |
| # (the workflow's OIDC token is exchanged for a short-lived access | |
| # token) instead of a static API key. See docs/setup.md. | |
| anthropic_federation_rule_id: ${{ vars.ANTHROPIC_FEDERATION_RULE_ID }} | |
| anthropic_organization_id: ${{ vars.ANTHROPIC_ORGANIZATION_ID }} | |
| anthropic_service_account_id: ${{ vars.ANTHROPIC_SERVICE_ACCOUNT_ID }} | |
| # --permission-mode auto: a tool call that needs permission and is outside the allowed-tools list in | |
| # .claude/commands/label-issue.md runs only if Claude Code's safety review passes it. Tools in | |
| # --disallowedTools never run. --model is set because Claude Code's default model changes between releases. | |
| claude_args: '--model claude-opus-5 --permission-mode auto --disallowedTools "WebFetch,WebSearch,Write,Edit,MultiEdit,NotebookEdit"' | |
| allowed_non_write_users: "*" # Required for issue triage workflow, if users without repo write access create issues | |
| github_token: ${{ secrets.GITHUB_TOKEN }} |