Skip to main content

🚀 Git Auto Commit (gac)

PyPI version Changelog Python Build Status codecov Ruff mypy Contributions welcome License: MIT

English | 简体中文 | 繁體中文 | 日本語 | 한국어 | हिन्दी | Tiếng Việt | Français | Русский | Español | Português | Norsk | Svenska | Deutsch | Nederlands | Italiano

LLM-powered commit messages that understand your code!

Automate your commits! Replace git commit -m "..." with uvx gac for contextual, well-formatted commit messages generated by large language models!


What You Get

Intelligent, contextual messages that explain the why behind your changes:

GAC generating a contextual commit message


Quick Start

uvx gac init   # Configure your provider, model, and language
uvx gac  # Generate and commit with LLM

That's it! Review the generated message and confirm with y.


Key Features

35+ Supported Providers

  • Anthropic • Azure OpenAI • Cerebras • ChatGPT (OAuth) • Chutes.ai • Claude Code (OAuth)
  • Crof.ai • DeepInfra • DeepSeek • Fireworks • Gemini • GitHub Copilot (OAuth) • Groq
  • Kimi for Coding • LM Studio • MiniMax.io • Mistral AI • Moonshot AI • Neuralwatt • Ollama
  • Ollama Cloud • OpenAI • OpenCode Go • OpenRouter • Plexus Gateway • Qwen Cloud (CN & INTL)
  • Replicate • Streamlake/Vanchin • Synthetic.new • Together AI • Wafer.ai • Z.AI (API & Coding Plans)
  • Custom Endpoints (Anthropic/OpenAI)

🧠 Smart LLM Analysis

  • 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

📝 Multiple Message Formats

  • 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
  • 50/72 rule (--50-72 flag): Enforce the classic commit message format for optimal readability in git log and GitHub UI
  • DCO/Signoff (--signoff flag): Add Signed-off-by line for Developer Certificate of Origin compliance (required by Cherry Studio, Linux kernel, and other projects)

🌍 Multilingual Support

  • 25+ languages: Generate commit messages in English, Chinese, Japanese, Korean, Spanish, French, German, and 18+ 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 uvx gac language, or use -l <language> flag for one-time overrides
  • Native script support: Full support for non-Latin scripts including CJK, Cyrillic, Thai, and more

💻 Developer Experience

  • Interactive feedback: Type r to reroll, e to edit (in-place TUI by default, or your $GAC_EDITOR if set), or directly type your feedback like make it shorter or focus on the bug fix
  • Interactive questioning: Use --interactive (-i) to answer targeted questions about your changes for more contextual commit messages
  • One-command workflows: Complete workflows with flags like uvx gac -ayp (stage all, auto-confirm, push)
  • Git integration: Respects pre-commit and lefthook hooks, running them before expensive LLM operations
  • MCP server: Run uvx gac serve to expose commit tools to AI agents via the Model Context Protocol

📊 Usage Statistics

uvx gac stats               # Overview: total gacs, streaks, daily/weekly peaks, top projects & models
uvx gac stats models        # Per-model breakdown: gacs, tokens, latency, speed, per-commit latency charts
uvx gac stats projects      # Per-project breakdown: gacs, commits, tokens, avg files per gac across all repos
uvx gac stats recent        # Recent gac history: per-gac tokens, speed, latency, files (-n 20 for more)
uvx gac stats reset         # Reset all stats (prompts for confirmation)
uvx gac stats reset model <model-id>  # Reset stats for a specific model only
  • Track your gacs: See how many commits you've made with gac, your current streak, peak daily/weekly activity, and top projects
  • Token tracking: Total prompt + completion tokens by day, week, project, and model — with high-score trophies for token usage too
  • Top models: See which models you use most and how many tokens each one consumes
  • High score celebrations: 🏆 trophies when you set new daily, weekly, token, or streak records; 🥈 for tying them
  • Opt-in during setup: uvx gac init asks whether to enable stats and explains exactly what's stored
  • Opt-out anytime: Set GAC_DISABLE_STATS=true (or 1/yes/on) to disable. Setting it to false/0/no (or unsetting) keeps stats enabled
  • Privacy-first: Stored locally in ~/.gac_stats.json. Only counts, dates, project names, and model names — no commit messages, code, or personal data. No telemetry

🛡️ Built-in Security

  • 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

Usage Examples

Basic Workflow

# Stage your changes
git add .

# Generate and commit with LLM
uvx gac

# Review → y (commit) | n (cancel) | r (reroll) | e (edit) | or type feedback

Common Commands

Command Description
uvx gac Generate commit message
uvx gac -y Auto-confirm (no review needed)
uvx gac -a Stage all before generating commit message
uvx gac -S Interactively select files to stage
uvx gac -o One-line message for trivial changes
uvx gac -v Verbose format with Motivation, Technical Approach, and Impact Analysis
uvx gac -h "hint" Add context for LLM (e.g., uvx gac -h "bug fix")
uvx gac -s Include scope (e.g., feat(auth):)
uvx gac -i Ask questions about changes for better context
uvx gac -g Group changes into multiple logical commits
uvx gac -p Commit and push
uvx gac model Change AI provider and model
uvx gac stats View your gac usage statistics

Power User Examples

# View your commit statistics
uvx gac stats

# Stats for all projects
uvx gac stats projects

# Complete workflow in one command
uvx gac -ayp -h "release preparation"

# Detailed explanation with scope
uvx gac -v -s

# Quick one-liner for small changes
uvx gac -o

# Generate commit message in a specific language
uvx gac -l ja

# Group changes into logically related commits
uvx gac -ag

# Interactive mode with verbose output for detailed explanations
uvx gac -iv

# Debug what the LLM sees
uvx gac --show-prompt

# Skip security scan (use carefully)
uvx gac --skip-secret-scan

# Add signoff for DCO compliance (Cherry Studio, Linux kernel, etc.)
uvx gac --signoff

Interactive Feedback System

Not happy with the result? You have several options:

# Simple reroll (no feedback)
r

# Edit the commit message
e

# 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 again

The edit feature (e) lets you refine the commit message:

  • Default (in-place TUI): Multi-line editing with vi/emacs key bindings — correct typos, adjust wording, restructure
  • With GAC_EDITOR: Opens your preferred editor (code, vim, nano, etc.) — full editor power including find/replace, macros, etc.

GUI editors like VS Code are automatically handled: gac inserts --wait so the process blocks until you close the editor tab. No extra configuration needed.


Configuration

Run uvx gac init to configure your provider interactively, or set environment variables:

Need to change providers or models later without touching language settings? Use uvx gac model for a streamlined flow that skips the language prompts.

See .gac.env.example for all available options, including GAC_ALWAYS_GROUPED to always use grouped commit mode, GAC_ALWAYS_INCLUDE_SCOPE to auto-infer commit scopes, and many others for customization.

Want commit messages in another language? Run uvx 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.


Getting Help


Metadata

Release files for gac 3.43.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gac 3.43.0
File Size Uploaded
gac-3.43.0.tar.gz 182.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gac 3.43.0
File Interpreter ABI Platform
gac-3.43.0-py3-none-any.whl Python 3 none any Details

Total release size: 419.9 kB

Release files / gac-3.43.0.tar.gz

Download URL gac-3.43.0.tar.gz
Size 182.0 kB
Tags Source
SHA-256 checksum
How to use checksums
47a872e4473fb8b5e4f7c349d2ac25ee3fcb78a50a6723ad7206722eb32595d7
BLAKE2b-256 checksum
How to use checksums
12b38b4a631227d10d0de4fcd95987f20163843dcf3610de00480a0e14b0b383
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release files / gac-3.43.0-py3-none-any.whl

Download URL gac-3.43.0-py3-none-any.whl
Size 237.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
04646244a91c943f8e59b41e3e58a6b38590f36db8af4aa46b1053488c2e33ac
BLAKE2b-256 checksum
How to use checksums
2db7c94a94c12854b51382a8dc48c151b7ebf96306ba54af1ef858ad5105e800
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release history Release notifications | RSS feed

This release

3.43.0 This release

2 release files

3.42.0

2 release files

3.41.2

2 release files

3.41.1

2 release files

3.41.0

2 release files

3.40.0

2 release files

3.39.3

2 release files

3.37.5

2 release files

3.37.4

2 release files

3.37.3

2 release files

3.37.2

2 release files

3.37.1

2 release files

3.37.0

2 release files

3.36.0

2 release files

3.35.2

2 release files

3.35.1

2 release files

3.35.0

2 release files

3.34.2

2 release files

3.34.1

2 release files

3.34.0

2 release files

3.33.1

2 release files

3.33.0

2 release files

3.32.4

2 release files

3.32.3

2 release files

3.32.2

2 release files

3.32.1

2 release files

3.32.0

2 release files

3.31.4

2 release files

3.31.3

2 release files

3.31.2

2 release files

3.31.1

2 release files

3.18.0

2 release files

3.17.2

2 release files

3.17.1

2 release files

3.17.0

2 release files

3.16.0

2 release files

3.15.0

2 release files

3.14.4

2 release files

3.14.3

2 release files

3.14.2

2 release files

3.14.1

2 release files

3.14.0

2 release files

3.13.0

2 release files

3.12.1

2 release files

3.11.0

2 release files

3.9.3

2 release files

3.9.2

2 release files

3.9.1

2 release files

3.9.0

2 release files

3.8.2

2 release files

3.8.1

2 release files

3.8.0

2 release files

3.7.1

2 release files

3.7.0

2 release files

3.6.4

2 release files

3.6.3

2 release files

3.6.2

2 release files

3.6.1

2 release files

3.6.0

2 release files

3.5.0

2 release files

3.4.3

2 release files

3.4.2

2 release files

3.4.1

2 release files

3.4.0

2 release files

3.3.0

2 release files

3.2.0

2 release files

3.1.0

2 release files

3.0.0

2 release files

2.7.5

2 release files

2.7.4

2 release files

2.7.3

2 release files

2.7.2

2 release files

2.7.1

2 release files

2.7.0

2 release files

2.6.1

2 release files

2.6.0

2 release files

2.5.2

2 release files

2.5.1

2 release files

2.5.0

2 release files

2.4.1

2 release files

2.4.0

2 release files

2.3.0

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.15.0

2 release files

1.14.0

2 release files

1.13.1

2 release files

1.13.0

2 release files

1.12.1

2 release files

1.12.0

2 release files

1.11.1

2 release files

1.11.0

2 release files

1.10.3

2 release files

1.10.2

2 release files

1.10.1

2 release files

1.10.0

2 release files

1.9.5

2 release files

1.9.4

2 release files

1.9.3

2 release files

1.9.2

2 release files

1.9.1

2 release files

1.9.0

2 release files

1.8.0

2 release files

1.7.0

2 release files

1.6.0

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.6

2 release files

1.2.5

2 release files

1.2.4

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.19.1

2 release files

0.19.0

2 release files

0.18.1

2 release files

0.18.0

2 release files

0.17.7

2 release files

0.17.6

2 release files

0.17.5

2 release files

0.17.4

2 release files

0.17.3

2 release files

0.17.2

2 release files

0.17.1

2 release files

0.16.3

2 release files

0.16.2

2 release files

0.16.1

2 release files

0.15.4

2 release files

0.15.3

2 release files

0.15.2

2 release files

0.15.1

2 release files

0.15.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page