GudCommit generates clean, conventional commit messages and GudChangelog creates changelog entries using Claude. You can use the Claude CLI (your existing Claude app / Claude Code login), AWS Bedrock, or the Anthropic API.
| Provider | Best for | Setup |
|---|---|---|
claude-cli |
Claude app / Claude Code users; no API key or AWS | Install Claude Code (includes claude CLI), then set "provider": "claude-cli" |
anthropic |
No AWS; you have an API key from console.anthropic.com | Set ANTHROPIC_API_KEY and "provider": "anthropic" |
bedrock (default) |
AWS accounts, aws login |
Configure AWS credentials (e.g. aws login + credential_process) |
claude-cli– Runs theclaudeCLI (claude -p "...") so it uses your existing Claude app or Claude Code login. No API key and no separate console.anthropic.com account.anthropic– Calls the Anthropic API; requires an API key from console.anthropic.com and separate pay-as-you-go billing.bedrock– Uses your AWS account and supports the newaws loginmethod with automatic credential rotation.
Claude app and Claude Code sign you in with your usual login (e.g. Google, Apple, or email). That's your Claude.ai account (Pro/Max/etc.).
API keys come from console.anthropic.com. That's a separate product with its own sign-in and pay-as-you-go billing (prepaid credits). A Pro/Max subscription does not include API access; API usage is billed separately.
If you only use the Claude app or Claude Code, you have three options:
- Use the Claude CLI (recommended) – Set
"provider": "claude-cli". GudCommit runsclaude -p "..."under the hood, so it uses the same login as your Claude app / Claude Code. No API key, no console.anthropic.com. Requires the Claude Code app (which installs theclaudecommand). - Use Bedrock – If you have AWS, use the
bedrockprovider andaws login(or other AWS credentials). - Use the Anthropic API – Sign up at console.anthropic.com, add billing and prepaid credits, then create an API key and set
"provider": "anthropic".
If you already use the Claude app or Claude Code:
- Install Claude Code (includes the
claudeCLI): code.claude.com - Log in in the app so
claudeis authenticated (e.g. runclaudeonce in a terminal and complete login). - Configure and run:
# In ~/.gudcommit.json: { "provider": "claude-cli" }
# Or:
export GUD_PROVIDER=claude-cli
cd golang && make build
git add . && ./bin/gudcommitNo API key and no AWS needed. The tool runs claude -p "..." and captures the response.
If you have an API key from console.anthropic.com (separate from your Claude app login):
export ANTHROPIC_API_KEY=your-key # or add to ~/.gudcommit.json
export GUD_PROVIDER=anthropic # or "provider": "anthropic" in config
cd golang && make build
git add . && ./bin/gudcommitNo AWS configuration needed.
- AWS CLI v2.32.0 or later:
aws --version - Go 1.21 or later
- Log in with AWS Console credentials:
aws login --profile my-aws- Configure credential_process in
~/.aws/config:
[profile Jornaya-Dev]
login_session = arn:aws:sts::794223901232:assumed-role/AWS_ROLE/INUMBER@verisk.com
[profile gudcommit]
credential_process = aws configure export-credentials --profile Jornaya-Dev --format process
region = us-east-1- Build and use:
cd golang && make build
git add .
./bin/gudcommit # Automatically uses 'gudcommit' profile!That's it! Credentials auto-refresh every 15 minutes (up to 12 hours max).
See the QUICKSTART_AWS_LOGIN.md guide for complete instructions.
If you prefer not to use aws login, you can use traditional credentials:
export AWS_ACCESS_KEY_ID=your-key-id
export AWS_SECRET_ACCESS_KEY=your-secret-key
export AWS_REGION=us-east-1
cd golang && make build
./bin/gudcommitUse ~/.gudcommit.json or ~/.gudchangelog.json. Precedence: env vars > ~/.gudcommit.json > ~/.gudchangelog.json > defaults.
Example – use Claude (Anthropic API):
{
"provider": "anthropic",
"model_id": "claude-sonnet-4-20250514",
"timeout_seconds": 60
}Set ANTHROPIC_API_KEY in your environment (recommended) or add "anthropic_api_key": "sk-ant-..." to the config.
Example – use Claude CLI (your app/Code login):
{
"provider": "claude-cli",
"timeout_seconds": 120
}Example – use AWS Bedrock:
{
"provider": "bedrock",
"model_id": "anthropic.claude-3-5-sonnet-20240620-v1:0",
"timeout_seconds": 60,
"region": "us-east-1"
}Config options:
| Option | claude-cli | Bedrock | Anthropic | Default |
|---|---|---|---|---|
provider |
"claude-cli" |
"bedrock" |
"anthropic" |
"bedrock" |
model_id |
(ignored) | Bedrock model ID or inference ARN | Anthropic model name | see above |
timeout_seconds |
CLI timeout | Request timeout | Request timeout | 60 (claude-cli: 120) |
region |
(ignored) | AWS region | (ignored) | us-east-1 |
anthropic_api_key |
(ignored) | (ignored) | API key (optional if env set) | — |
For claude-cli, ensure the claude binary is on your PATH, or set GUD_CLAUDE_CLI_PATH to its full path.
Environment overrides:
GUD_PROVIDER–bedrock,anthropic, orclaude-cliGUD_CLAUDE_CLI_PATH– full path toclaudebinary (claude-cli only)ANTHROPIC_API_KEYorGUD_ANTHROPIC_API_KEY– for Anthropic providerGUD_BEDROCK_MODEL_ID/GUD_ANTHROPIC_MODEL– model ID/nameGUD_HTTP_TIMEOUT_SECONDS– timeout in secondsAWS_REGION,AWS_PROFILE(Bedrock only; profile defaults togudcommit)
When provider is bedrock, gudcommit uses the standard AWS credential chain:
- NEW
aws login(recommended): Short-lived credentials with automatic rotation credential_process: Enablesaws loginsupport in Go SDK v2- Environment variables:
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY - Shared credentials:
~/.aws/credentials - Legacy AWS SSO:
aws sso login - IAM roles (for EC2/ECS/Lambda)
Note: API keys are no longer needed. The old GUD_BEDROCK_API_KEY method is deprecated.
# Stage your changes
git add .
# Generate commit message
./golang/bin/gudcommit# Generate changelog for changes between branches
./golang/bin/gudchangelog main
# Or compare with any other branch
./golang/bin/gudchangelog developImportant: Newer Claude models (like Claude 4.5 Sonnet and Claude 3.5 Sonnet v2) require using inference profile ARNs instead of direct model IDs.
Use the helper script to find available models and profiles:
./scripts/list-bedrock-models.shOr manually:
List models that support direct on-demand invocation:
aws bedrock list-foundation-models --region us-east-1 \
--query "modelSummaries[?contains(inferenceTypesSupported, 'ON_DEMAND')].[modelId,providerName]" \
--output tableList inference profiles (required for newer Claude models):
aws bedrock list-inference-profiles --region us-east-1 \
--query 'inferenceProfileSummaries[].{Name:inferenceProfileName,ARN:inferenceProfileArn,Models:models[0].modelId}' \
--output tableUsing newer models: For models that require inference profiles, use the ARN as your model_id:
{
"model_id": "arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-sonnet-4-5-v1:0",
"timeout_seconds": 60,
"region": "us-east-1"
}Add to your ~/.bashrc or ~/.zshrc:
function gudco() {
local commit_message="$($HOME/golang/bin/gudcommit)"
echo "Generated commit message:"
echo ""
echo "\033[1m$commit_message\033[0m"
echo ""
echo -n "Proceed with the commit? (y/n or e to Edit): "
read confirmation
case "$confirmation" in
[Yy])
git commit -m "$commit_message"
;;
[Ee])
git commit -e -m "$commit_message"
;;
*)
echo "Commit canceled."
;;
esac
}- Three providers: claude-cli (Claude Code CLI), Bedrock (AWS), Anthropic (Claude API)
- claude-cli: Runs
claude -p "..."; uses your Claude app / Claude Code login; no API key or AWS - Bedrock: AWS SDK Go v2, SigV4,
aws loginviacredential_process, default modelanthropic.claude-3-5-sonnet-20240620-v1:0 - Anthropic: HTTPS to
api.anthropic.com,ANTHROPIC_API_KEY, default modelclaude-sonnet-4-20250514 - Conventional commit format with structured JSON parsing
- Config:
~/.gudcommit.json/ env vars;providerchooses backend
✅ Use Claude app/Claude Code – set provider: claude-cli and use your existing login (no API key)
✅ Or use AWS Bedrock – aws login and automatic credential rotation
✅ Or use Anthropic API – provider: anthropic and ANTHROPIC_API_KEY
✅ Single config – switch providers without changing code
✅ Cross-platform (Linux, macOS, Windows)
- ✅ No long-lived credentials - Use
aws loginfor short-lived tokens - ✅ Automatic rotation - Credentials refresh every 15 minutes
- ✅ Standard AWS security - Uses IAM policies and SigV4 signing
- ✅ Secure by default - No API keys to accidentally commit
⚠️ Never commit AWS credentials to git
The tool will automatically display helpful setup instructions if credentials fail. Here are common issues:
This means AWS credentials are not properly configured. gudcommit now displays setup instructions automatically, but here's the quick fix:
- Ensure AWS CLI v2.32.0+:
aws --version - Log in:
aws login --profile my-aws - Configure
~/.aws/config:
[profile my-aws]
login_session = arn:aws:iam::123456789012:user/yourname
region = us-east-1
[profile gudcommit]
credential_process = aws configure export-credentials --profile my-aws --format process
region = us-east-1- Run:
gudcommit(automatically usesgudcommitprofile)
- Check that
~/.aws/configexists and has the[profile gudcommit]section - Verify
credential_processis correctly configured - Test with:
aws sts get-caller-identity --profile gudcommit
Your login session may have expired (max 12 hours). Run:
aws login --profile my-aws- Install Claude Code (the desktop app includes the
claudecommand). - Ensure
claudeis on your PATH (e.g. runclaude --helpin a terminal). - Or set the full path:
export GUD_CLAUDE_CLI_PATH=/path/to/claude
- Log in once: run
claudein a terminal and complete any sign-in flow. - If the prompt is very long, consider using
bedrockoranthropicinstead (CLI may hit argument-length limits on some systems).
Bedrock:
export AWS_ACCESS_KEY_ID=your-key-id
export AWS_SECRET_ACCESS_KEY=your-secret-key
export AWS_REGION=us-east-1
gudcommitClaude CLI (use app/Code login):
export GUD_PROVIDER=claude-cli
gudcommitAnthropic API:
export ANTHROPIC_API_KEY=your-key
export GUD_PROVIDER=anthropic
gudcommit# Test AWS credentials
aws sts get-caller-identity --profile gudcommit
# Check AWS CLI version
aws --version
# Test credential_process
aws configure export-credentials --profile my-aws --format processDownload the latest release binaries for your platform:
- Linux (amd64, arm64):
gudcommit-linux-*,gudchangelog-linux-* - macOS (amd64, arm64):
gudcommit-darwin-*,gudchangelog-darwin-* - Windows (amd64, arm64):
gudcommit-windows-*.exe,gudchangelog-windows-*.exe
# Download the appropriate binary for your platform
chmod +x gudcommit-<platform>-<arch>
chmod +x gudchangelog-<platform>-<arch>
# Move to your PATH (optional)
sudo mv gudcommit-<platform>-<arch> /usr/local/bin/gudcommit
sudo mv gudchangelog-<platform>-<arch> /usr/local/bin/gudchangelog# Clone and build
git clone <repository-url>
cd gudcommit
cd golang && make build- Quick Start Guide - 5-minute setup with
aws login - AWS Login Support - Complete credential documentation
- Go Implementation - Architecture details
- Conventional Commits
- AWS Bedrock Documentation
- AWS Login Credentials
# Run all tests
cd golang && go test ./...
# Run tests with coverage
cd golang && go test -cover ./...
# Run benchmarks
cd golang && go test -bench=. ./...
# Run linting
cd golang && golangci-lint run# Build for current platform
cd golang && make build
# Build for all platforms
cd golang && make build-all
# Clean build artifacts
cd golang && make clean
# Run tests
cd golang && make test- Fork the repository
- Create a feature branch
- Make your changes
- Run tests:
cd golang && make test - Run linting:
cd golang && golangci-lint run - Submit a pull request
OLD METHOD (DEPRECATED): Using GUD_BEDROCK_API_KEY environment variable
NEW METHOD: Using aws login with automatic credential rotation
The old scripts (scripts/auto-api-key.sh, scripts/generate-api-key.py) are no longer needed. The tool now uses standard AWS credentials with automatic rotation.
See QUICKSTART_AWS_LOGIN.md for migration instructions.