commit-msg

commit-msg is a command-line tool that generates commit messages using LLM (Large Language Models). It is designed to help developers create clear and concise commit messages for their Git repositories automatically by analyzing your staged changes.
Screenshot
Below is a sample execution of commit-msg:

Before running the application, set LLM and API Key using "commit llm setup"
π Hacktoberfest 2025
This project is participating in Hacktoberfest 2025! We welcome contributions from developers of all skill levels.
Looking to contribute? Check out:
Features
β¨ AI-Powered Commit Messages - Automatically generate meaningful commit messages
π Multiple LLM Support - Choose between Google Gemini, Grok, Claude, ChatGPT, or Ollama (local)
π§ͺ Dry Run Mode - Preview prompts without making API calls
π Context-Aware - Analyzes staged and unstaged changes
π Auto-Copy to Clipboard - Generated messages are automatically copied for instant use
ποΈ Interactive Review Flow - Accept, regenerate with new styles, or open the message in your editor before committing
π File Statistics Display - Visual preview of changed files and line counts
π‘ Smart Security Scrubbing - Automatically removes API keys, passwords, and sensitive data from diffs
πΎ Intelligent Caching - Reduces API costs by caching generated messages for similar changes
π Easy to Use - Simple CLI interface with beautiful terminal UI
β‘οΈ Fast - Quick generation of commit messages
Supported LLM Providers
You can use Google Gemini, Grok, Claude, ChatGPT, or Ollama (local) as the LLM to generate commit messages:
π Security & Privacy
commit-msg automatically scrubs sensitive data from your code before sending it to LLM providers:
- API Keys & Tokens - OpenAI, Gemini, Claude, GitHub, Slack, AWS credentials
- Passwords & Secrets - Database passwords, JWT tokens, private keys
- Personal Data - Email addresses, credit card numbers
- Environment Variables - Automatic detection and redaction of sensitive
.env files
All scrubbing happens locally before any data leaves your machine, ensuring your secrets stay secure.
πΎ Intelligent Caching
commit-msg includes a smart caching system that reduces API costs and improves performance:
- Automatic Cache Management - Similar code changes generate the same commit message without API calls
- Cost Savings - Avoid redundant API requests for identical or similar changes
- Performance Boost - Instant retrieval of cached messages for repeated patterns
- Cache Statistics - Track hit rates, total savings, and cache performance
- Secure Storage - Cache files are stored with restricted permissions (600) for security
- Automatic Cleanup - Old cache entries are automatically removed based on age and usage
Cache Management Commands
# View cache statistics
commit cache stats
# Clear all cached messages
commit cache clear
# Remove old cached messages
commit cache cleanup
The cache intelligently identifies similar changes by analyzing:
- File modifications and additions
- Code structure and patterns
- Commit context and style preferences
- LLM provider and generation options
π¦ Installation
Option 1: Download Pre-built Binary (Recommended)
-
Download the latest release from the GitHub Releases page
-
Extract the executable to a directory
-
Add the directory to your system PATH:
Windows:
setx PATH "%PATH%;C:\path\to\commit-msg"
Linux/macOS:
export PATH=$PATH:/path/to/commit-msg
echo 'export PATH=$PATH:/path/to/commit-msg' >> ~/.bashrc # or ~/.zshrc
Option 2: Build from Source
Requirements: Go 1.23.4 or higher
# Clone the repository
git clone https://github.com/dfanso/commit-msg.git
cd commit-msg
# Install dependencies
go mod download
# Build the executable
go build -o commit cmd/commit-msg/main.go
# (Optional) Install to GOPATH
go install
π Usage
Basic Usage
Navigate to any Git repository and run:
commit .
Or if running from source:
go run cmd/commit-msg/main.go .
Preview Mode (Dry Run)
Preview what would be sent to the LLM without making an API call:
commit . --dry-run
This displays:
- The LLM provider that would be used
- The exact prompt that would be sent
- File statistics and change summary
- Estimated token count
- All without consuming API credits or sharing data
Perfect for:
- π Debugging - See exactly what prompt is being sent
- π° Cost Control - Review before consuming API credits
- π Privacy - Verify what data would be shared with external APIs
- π§ͺ Development - Test prompt changes without API calls
Auto Commit Mode
Automatically commit with the generated message without manual confirmation:
commit . --auto
This will:
- Generate the commit message using your configured LLM
- Automatically execute
git commit with the generated message
- Skip the interactive review and manual confirmation step
Note: The --auto flag cannot be combined with --dry-run. Dry run mode takes precedence and will only preview without committing.
Platform Support: Works on Linux, macOS, and Windows.
Combining Flags
# Preview only (no commit, no API call)
commit . --dry-run
# Generate and auto-commit
commit . --auto
# Generate with interactive review (default behavior)
commit .
Setup LLM and API Key
commit llm setup
Update LLM
commit llm update
Example Workflow
# Make changes to your code
echo "console.log('Hello World')" > app.js
# Stage your changes
git add .
# Generate commit message
commit .
# The tool will display:
# - File statistics (staged, unstaged, untracked)
# - Generated commit message in a styled box
# - Automatically copy to clipboard
# Output: "feat: add hello world console log to app.js"
# You can now paste it with Ctrl+V (or Cmd+V on macOS)
Interactive Commit Workflow
Once the commit message is generated, the CLI now offers a quick review loop:
- Accept & copy β use the message as-is (it still lands on your clipboard automatically)
- Regenerate β pick from presets like detailed summaries, casual tone, bug-fix emphasis, or provide custom instructions for the LLM
- Edit in your editor β open the message in
$GIT_EDITOR, $VISUAL, $EDITOR, or a sensible fallback (notepad on Windows, nano elsewhere)
- Exit β leave without copying anything if the message isn't ready yet
This makes it easy to tweak the tone, iterate on suggestions, or fine-tune the final wording before you commit.
Use Cases
- π Generate commit messages for staged changes
- π Analyze both staged and unstaged changes
- π Get context from recent commits and file statistics
- β
Create conventional commit messages
- π Auto-copy to clipboard for immediate use
- π¨ Beautiful terminal UI with file statistics and previews
- πΎ Reduce API costs with intelligent caching for similar changes
- β‘οΈ Get instant results for repeated code patterns
π§ Configuration
Set LLM and API Keys
commit llm setup
Update LLM
commit llm update
Set LLM as default
Select: Set Default
Change API Key
Select: Change API Key
Delete LLM
Select: Delete
Cache Management
# View cache statistics and performance
commit cache stats
# Clear all cached messages
commit cache clear
# Remove old cached messages (based on age and usage)
commit cache cleanup
Getting API Keys
Google Gemini:
- Visit Google AI Studio
- Create a new API key
Grok (X.AI):
- Visit X.AI Console
- Generate an API key
Groq:
- Sign up at Groq Cloud
- Create an API key
Claude (Anthropic):
- Visit the Anthropic Console
- Create a new API key
OpenAI (ChatGPT):
- Visit OpenAI Platform
- Create a new API key
Ollama (Local LLM):
- Install Ollama: Visit Ollama.ai and follow installation instructions
- Start Ollama:
ollama serve
- Pull a model:
ollama pull llama3.1
- Set environment variables:
export COMMIT_LLM=ollama
export OLLAMA_MODEL=llama3.1 # llama3.1 by default
π€ Contributing
We welcome contributions! Please see our Contributing Guidelines for details.
Quick Start for Contributors
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Make your changes
- Commit your changes:
git commit -m 'feat: add amazing feature'
- Push to the branch:
git push origin feature/amazing-feature
- Open a Pull Request
Areas Where We Need Help
- π Bug fixes
- β¨ New LLM provider integrations (OpenAI, Claude, etc.)
- π Documentation improvements
- π§ͺ Test coverage
- π Internationalization
- β‘ Performance optimizations
π License
This project is licensed under the MIT License - see the LICENSE file for details.
π Acknowledgments
- Thanks to all contributors
- Google Gemini and X.AI Grok for providing LLM APIs
- The open-source community
π Support
Made with β€οΈ for Hacktoberfest 2025