GudCommit & GudChangelog - AI-Powered Git Tools
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.
Choosing your LLM provider
| 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 / Claude Code vs API (why console.anthropic.com looks like a different account)
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".
🚀 Quick Start (Claude CLI – use your Claude app / Claude Code login)
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/gudcommit
No API key and no AWS needed. The tool runs claude -p "..." and captures the response.
🚀 Quick Start (Claude / Anthropic API)
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/gudcommit
No AWS configuration needed.
🚀 Quick Start (AWS Bedrock with aws login)
Prerequisites
- AWS CLI v2.32.0 or later:
aws --version - Go 1.21 or later
Setup (5 minutes)
- 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).
📋 Detailed Setup
See the QUICKSTART_AWS_LOGIN.md guide for complete instructions.
Alternative: Environment Variables
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/gudcommit
🔧 Configuration
JSON Config (recommended)
Use ~/.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)
AWS Credentials (Bedrock only)
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.
📖 Usage
GudCommit (Commit Messages)
# Stage your changes git add . # Generate commit message ./golang/bin/gudcommit
GudChangelog (Changelog Entries)
# Generate changelog for changes between branches ./golang/bin/gudchangelog main # Or compare with any other branch ./golang/bin/gudchangelog develop
Discover available models/inference profiles (Bedrock only)
Important: 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.sh
Or 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"
}Shell Aliases (Optional)
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 }
🏗️ Architecture
Current Implementation (Go)
- 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
Benefits
✅ 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)
🔒 Security
- ✅ 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
🐛 Troubleshooting
AWS Credential Issues
The tool will automatically display helpful setup instructions if credentials fail. Here are common issues:
"no EC2 IMDS role found" or "failed to refresh cached credentials"
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)
"Unable to load AWS SDK config"
- Check that
~/.aws/configexists and has the[profile gudcommit]section - Verify
credential_processis correctly configured - Test with:
aws sts get-caller-identity --profile gudcommit
"credential_process failed"
Your login session may have expired (max 12 hours). Run:
aws login --profile my-aws
Claude CLI issues (provider: claude-cli)
"claude CLI not found"
- 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
"claude CLI failed" or no output
- 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).
Alternative: Environment Variables
Bedrock:
export AWS_ACCESS_KEY_ID=your-key-id export AWS_SECRET_ACCESS_KEY=your-secret-key export AWS_REGION=us-east-1 gudcommit
Claude CLI (use app/Code login):
export GUD_PROVIDER=claude-cli
gudcommitAnthropic API:
export ANTHROPIC_API_KEY=your-key export GUD_PROVIDER=anthropic gudcommit
Debug Commands
# 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 process
📦 Releases & Downloads
Pre-built Binaries
Download 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
Installation
# 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
From Source
# Clone and build git clone <repository-url> cd gudcommit cd golang && make build
📚 Documentation
- 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
🧪 Development & Testing
Running Tests
# 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 Commands
# 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
🤝 Contributing
- 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
🔄 Migration from API Keys
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.