KeisukeYamashita b00a3414fd
fix: share one exchanged WIF credential across spawned Claude processes (#1407)
* fix: share one exchanged WIF credential across spawned Claude processes

GitHub OIDC tokens are single-use at the Anthropic token-exchange
endpoint (the same jti cannot be exchanged twice). With plugins
configured, the action spawns several short-lived claude processes
(plugin marketplace add, one plugin install per plugin, then the main
query). Each resolved federation from bare env vars and exchanged the
same identity-token file independently: the first exchange succeeded
and every later process got 401 (jti_reused), which the main query
retried for ~3 minutes before failing the job.

The SDK only enables its on-disk credentials cache when federation is
loaded from a profile config file, not from bare env vars. Write a
profile pointing at the identity-token file and select it via
ANTHROPIC_CONFIG_DIR / ANTHROPIC_PROFILE so the first process exchanges
once and the rest reuse the cached access token. The env vars are kept
as a fallback for CLIs that predate profile support.

* fix: scope the WIF credential cache per federation config

Address review feedback on the shared-credentials-cache fix:

- Embed a fingerprint of the federation inputs (rule, org, service
  account, workspace, base URL, scope) in the config dir name. The SDK
  cache reuses a token on expires_at alone and RUNNER_TEMP is per-job,
  so a later step with different federation inputs would silently reuse
  the first step's token. service_account_id and scope are included
  beyond the reviewed list because both are sent in the exchange
  request body and change which credential is minted.
- Skip the action-managed profile with a warning when the operator has
  already set ANTHROPIC_CONFIG_DIR or ANTHROPIC_PROFILE.
- Shrink the profile to the minimal file-backed form; the CLI's bundled
  SDK gap-fills the federation fields from the env vars the action
  already exports (verified against the pinned 2.1.173 binary).
- Remove the token dir in stop() so the identity token and the cached
  exchanged credential don't outlive the step.
- Document that cache sharing relies on the plugin subprocesses
  spawning sequentially.
2026-07-22 07:02:41 -07:00
2025-05-27 13:26:03 -07:00
2025-05-19 08:32:32 -07:00
2025-05-19 08:32:32 -07:00
2025-05-19 08:32:32 -07:00
2025-05-19 08:32:32 -07:00

Claude Code Action responding to a comment

Claude Code Action

A general-purpose Claude Code action for GitHub PRs and issues that can answer questions and implement code changes. This action intelligently detects when to activate based on your workflow context—whether responding to @claude mentions, issue assignments, or executing automation tasks with explicit prompts. It supports multiple authentication methods including Anthropic direct API (API key or workload identity federation), Amazon Bedrock, Google Vertex AI, and Microsoft Foundry.

Features

  • 🎯 Intelligent Mode Detection: Automatically selects the appropriate execution mode based on your workflow context—no configuration needed
  • 🤖 Interactive Code Assistant: Claude can answer questions about code, architecture, and programming
  • 🔍 Code Review: Analyzes PR changes and suggests improvements
  • Code Implementation: Can implement simple fixes, refactoring, and even new features
  • 💬 PR/Issue Integration: Works seamlessly with GitHub comments and PR reviews
  • 🛠️ Flexible Tool Access: Access to GitHub APIs and file operations (additional tools can be enabled via configuration)
  • 📋 Progress Tracking: Visual progress indicators with checkboxes that dynamically update as Claude completes tasks
  • 📊 Structured Outputs: Get validated JSON results that automatically become GitHub Action outputs for complex automations
  • 🏃 Runs on Your Infrastructure: The action executes entirely on your own GitHub runner (Anthropic API calls go to your chosen provider)
  • ⚙️ Simplified Configuration: Unified prompt and claude_args inputs provide clean, powerful configuration aligned with Claude Code SDK

📦 Upgrading from v0.x?

See our Migration Guide for step-by-step instructions on updating your workflows to v1.0. The new version simplifies configuration while maintaining compatibility with most existing setups.

Quickstart

The easiest way to set up this action is through Claude Code in the terminal. Just open claude and run /install-github-app.

This command will guide you through setting up the GitHub app and required secrets.

Note:

  • You must be a repository admin to install the GitHub app and add secrets
  • This quickstart method is only available for direct Anthropic API users. For AWS Bedrock, Google Vertex AI, or Microsoft Foundry setup, see docs/cloud-providers.md.

📚 Solutions & Use Cases

Looking for specific automation patterns? Check our Solutions Guide for complete working examples including:

  • 🔍 Automatic PR Code Review - Full review automation
  • 📂 Path-Specific Reviews - Trigger on critical file changes
  • 👥 External Contributor Reviews - Special handling for new contributors
  • 📝 Custom Review Checklists - Enforce team standards
  • 🔄 Scheduled Maintenance - Automated repository health checks
  • 🏷️ Issue Triage & Labeling - Automatic categorization
  • 📖 Documentation Sync - Keep docs updated with code changes
  • 🔒 Security-Focused Reviews - OWASP-aligned security analysis
  • 📊 DIY Progress Tracking - Create tracking comments in automation mode

Each solution includes complete working examples, configuration details, and expected outcomes.

Documentation

📚 FAQ

Having issues or questions? Check out our Frequently Asked Questions for solutions to common problems and detailed explanations of Claude's capabilities and limitations.

License

This project is licensed under the MIT License—see the LICENSE file for details.

Description
No description provided
Readme MIT 19 MiB
Languages
TypeScript 86.3%
Python 7.3%
JavaScript 5.3%
Shell 1.1%