English | 简体中文 | 繁體中文 | 日本語 | 한국어 | हिन्दी | Français | Русский | Español | Português | Deutsch | Nederlands
LLM-powered commit messages that understand your code!
Automate your commits! Replace git commit -m "..." with gac for contextual, well-formatted commit messages generated by large language models!
Intelligent, contextual messages that explain the why behind your changes:
uvx gac init   # Configure your provider, model, and language
uvx gac model  # Re-run provider/model setup without language prompts
uvx gac  # Generate and commit with LLMThat's it! Review the generated message and confirm with y.
uv tool install gac
gac init
gac model
gacuv tool upgrade gac- Anthropic • Cerebras • Chutes.ai • DeepSeek • Fireworks
 - Gemini • Groq • LM Studio • MiniMax • Mistral • Ollama • OpenAI
 - OpenRouter • Streamlake • Synthetic.new • Together AI
 - Z.AI • Z.AI Coding • Custom Endpoints (Anthropic/OpenAI)
 
- Understands intent: Analyzes code structure, logic, and patterns to understand the "why" behind your changes, not just what changed
 - Semantic awareness: Recognizes refactoring, bug fixes, features, and breaking changes to generate contextually appropriate messages
 - Intelligent filtering: Prioritizes meaningful changes while ignoring generated files, dependencies, and artifacts
 - Intelligent commit grouping - Automatically group related changes into multiple logical commits with 
--group 
- One-liner (-o flag): Single-line commit message following conventional commit format
 - Standard (default): Summary with bullet points explaining implementation details
 - Verbose (-v flag): Comprehensive explanations including motivation, technical approach, and impact analysis
 
- 25+ languages: Generate commit messages in English, Chinese, Japanese, Korean, Spanish, French, German, and 20+ more languages
 - Flexible translation: Choose to keep conventional commit prefixes in English for tool compatibility, or fully translate them
 - Multiple workflows: Set a default language with 
gac language, or use-l <language>flag for one-time overrides - Native script support: Full support for non-Latin scripts including CJK, Cyrillic, Arabic, and more
 
- Interactive feedback: Type 
rto reroll,eto edit in-place with vi/emacs keybindings, or directly type your feedback likemake it shorterorfocus on the bug fix - One-command workflows: Complete workflows with flags like 
gac -ayp(stage all, auto-confirm, push) - Git integration: Respects pre-commit and lefthook hooks, running them before expensive LLM operations
 
- Automatic secret detection: Scans for API keys, passwords, and tokens before committing
 - Interactive protection: Prompts before committing potentially sensitive data with clear remediation options
 - Smart filtering: Ignores example files, template files, and placeholder text to reduce false positives
 
# Stage your changes
git add .
# Generate and commit with LLM
gac
# Review → y (commit) | n (cancel) | r (reroll) | e (edit) | or type feedback| Command | Description | 
|---|---|
gac | 
Generate commit message | 
gac -y | 
Auto-confirm (no review needed) | 
gac -a | 
Stage all before generating commit message | 
gac -o | 
One-line message for trivial changes | 
gac -v | 
Verbose format with Motivation, Technical Approach, and Impact Analysis | 
gac -h "hint" | 
Add context for LLM (e.g., gac -h "bug fix") | 
gac -s | 
Include scope (e.g., feat(auth):) | 
gac -p | 
Commit and push | 
# Complete workflow in one command
gac -ayp -h "release preparation"
# Detailed explanation with scope
gac -v -s
# Quick one-liner for small changes
gac -o
# Group changes into logically related commits
gac -ag
# Debug what the LLM sees
gac --show-prompt
# Skip security scan (use carefully)
gac --skip-secret-scanNot happy with the result? You have several options:
# Simple reroll (no feedback)
r
# Edit in-place with rich terminal editing
e
# Uses prompt_toolkit for multi-line editing with vi/emacs keybindings
# Press Esc+Enter or Ctrl+S to submit, Ctrl+C to cancel
# Or just type your feedback directly!
make it shorter and focus on the performance improvement
use conventional commit format with scope
explain the security implications
# Press Enter on empty input to see the prompt againThe edit feature (e) provides rich in-place terminal editing, allowing you to:
- Edit naturally: Multi-line editing with familiar vi/emacs key bindings
 - Make quick fixes: Correct typos, adjust wording, or refine formatting
 - Add details: Include information the LLM might have missed
 - Restructure: Reorganize bullet points or change the message structure
 
Run gac init to configure your provider interactively, or set environment variables:
Need to change providers or models later without touching language settings? Use gac model for a streamlined flow that skips the language prompts.
# Example configuration
GAC_MODEL=anthropic:your-model-name
OPENAI_API_KEY=your_key_here
ANTHROPIC_API_KEY=your_key_hereSee .gac.env.example for all available options.
Want commit messages in another language? Run gac language to select from 25+ languages including Español, Français, 日本語, and more.
Want to customize commit message style? See docs/CUSTOM_SYSTEM_PROMPTS.md for guidance on writing custom system prompts.
📊 View live usage analytics and statistics →
Track real-time installation metrics and package download statistics.
- Full documentation: docs/USAGE.md - Complete CLI reference
 - Custom prompts: docs/CUSTOM_SYSTEM_PROMPTS.md - Customize commit message style
 - Troubleshooting: docs/TROUBLESHOOTING.md - Common issues and solutions
 - Contributing: docs/CONTRIBUTING.md - Development setup and guidelines
 
Made with ❤️ for developers who want better commit messages