English | 简体中文
WTF Commit ✨

Links: GitHub | Open VSX | Website
One shortcut to generate your commit message. WTF Commit reads your git diff and fills the Source Control box with a clear Conventional Commit — with your own API key, not a locked-in vendor.
Works in Cursor, VSCodium, and other Open VSX–compatible editors (and VS Code when the extension is installed from Open VSX / VSIX). Actively maintained (MIT, free).
|
|
| Default provider |
DeepSeek (deepseek-v4-flash) — fast and cheap for commit messages |
| Setup once |
Paste an API key for your provider (~1 minute) |
| Default flow |
Generate → auto commit (no extra confirm). Auto Push stays off until you enable it |
| Power users |
Turn on Auto Push (+ optionally turn off Confirm Before Push) for generate → commit → push in one shortcut |
Onboarding is intentionally two phases. You only configure AI once; after that it should feel like a muscle-memory shortcut.
You need a provider and a key. Everything else can stay on defaults.
- Install — Extensions → search
WTF Commit (Open VSX) → Install.
- Set API Key — Command Palette →
WTF Commit: Set API Key.
- Choose a provider in the picker — the extension default is DeepSeek (also great: Gemini). Leave Model empty for the built-in default.
- Paste the key. If you picked someone other than DeepSeek, choose Switch Provider when prompted so the active provider matches the key.
Need a key? DeepSeek · Gemini · more in Supported providers.
You can also set Provider under Settings → WTF Commit, then run Set API Key for that provider. Same result.
② Daily use (every commit)
- Make your code changes (stage when you can; with Auto Commit + Smart Stage, unstaged work can be staged for you).
- Press the generate shortcut — the message streams in, then commits by default (no extra “confirm commit” dialog).
- Push yourself when ready — Auto Push is off by default so new users never surprise-push.
Default shortcut: Cmd+Alt+G (Mac) / Ctrl+Alt+G (Windows/Linux).
Make it yours — the binding is fully customizable. A popular Cursor-style habit is a double press of Cmd+G / Ctrl+G (chord):
- Open Keyboard Shortcuts (
Cmd+K Cmd+S / Ctrl+K Ctrl+S).
- Search
WTF Commit: Generate.
- Double-click the keybinding → press
Cmd+G twice (or Ctrl+G twice on Windows/Linux) → Enter.
One-keystroke power flow (optional): Settings → enable Auto Push. Leave Confirm Before Push on until you trust it; turn that confirm off only when you want generate → commit → push with zero dialogs.
Other triggers: ✨ on the Source Control title bar, or Command Palette → WTF Commit: Generate.
Prefer review-only? Turn Auto Commit off — the message stays in Source Control for you to edit and commit manually.
🆕 Latest (v1.13.0)
- Default provider: DeepSeek — first install uses
deepseek-v4-flash (fast, low-cost commit messages).
- Smoother defaults: Auto Commit on, no confirm-before-commit dialog; Auto Push stays off; Confirm Before Push stays on for safety.
- Clearer onboarding docs: configure AI once, then daily shortcut (including rebinding tips like double
Cmd+G).
See CHANGELOG for earlier releases.
🚀 Features
- Conventional Commits —
feat / fix / docs / … with optional local format fix + AI Repair.
- Smart diffing — Prefers staged changes; confirms mixed or working-tree-only cases so the message matches what you intend to commit.
- Intent-aware — Text already in the SCM input is used as a generation hint (no extra prompt UI).
- Streaming preview — Watch the message appear live while the model runs.
- Auto Commit & Push — Optional one-keystroke pipeline with confirmations.
- Multi-language messages — English, 简体/繁体中文, Japanese, Classical Chinese, or Custom.
- Bring your own endpoint — Built-in providers plus Custom (Ollama, proxies, etc.).
- Keyboard shortcut — Default
Cmd+Alt+G / Ctrl+Alt+G; rebind freely (e.g. double Cmd+G).
🛠️ Advanced Tutorial
1. Plugin Settings
Open VS Code Settings (Cmd+,) and search for WTF Commit to customize the behavior:
| Setting |
Description |
| UI Language |
Language for the extension's own UI (en / zh), independent of the commit-message language. |
| Show Status Bar Item |
Show the compact WTF Commit icon in the status bar. |
| Changelog Popup |
Show a notification after the extension is updated (off by default). |
| Auto Commit |
Default on — commit after generate. Off = message only in Source Control. |
| Auto Push |
Default off — enable for push after commit. Requires Auto Commit. |
| Smart Stage |
With Auto Commit, stage current changes before generation when nothing is staged. |
| Confirm Before Commit |
Default off — no modal before auto-commit. Turn on for a final check. |
| Confirm Before Push |
Default on — ask before auto-push. Power users can disable for a full hands-off shortcut. |
| Warn On Truncated Diff |
Warn when the diff is large and only a partial diff is sent to the AI (off by default). |
| Prompt |
Customize the AI's persona and generation rules. |
2. Custom Model & Endpoints
You can use any OpenAI-compatible model (like local models via Ollama) by changing the Provider or Model/Base URL:
- In Settings, set Provider to
Custom.
- Enter the Base URL (e.g.,
http://localhost:11434/v1).
- Enter the Model name (e.g.,
llama3).
3. Custom Commit Language
If you want the AI to use a specific language (e.g., French, Cantonese, or Emoji-only):
- Set Language to
Custom.
- Enter your target language in Custom Language (e.g.,
Emoji only).
ℹ️ Supported Providers & Models
How defaults work (three separate concepts):
| Term |
Meaning |
| Default Provider |
DeepSeek — used on first install until you change Provider in settings. |
| Provider default |
Each built-in provider has its own default Model and Base URL (table below). Applies only when that provider is selected and Model / Base URL are left empty. |
| Our recommendation |
Editorial picks for commit messages (see Choosing a model) — not the extension default provider. |
Provider defaults — when Base URL and Model are left empty:
| Provider |
Default Model |
Default Base URL |
| OpenAI |
gpt-5-nano |
https://api.openai.com/v1 |
| DeepSeek |
deepseek-v4-flash |
https://api.deepseek.com |
| MiMo |
mimo-v2.5 |
https://api.xiaomimimo.com/v1 |
| GLM |
glm-4.7-flashx |
https://open.bigmodel.cn/api/paas/v4 |
| Z.AI |
glm-4.7-flashx |
https://api.z.ai/api/paas/v4 |
| Gemini |
gemini-3.1-flash-lite |
https://generativelanguage.googleapis.com/v1beta |
| OpenRouter |
openrouter/free |
https://openrouter.ai/api/v1 |
| NVIDIA NIM |
nvidia/nemotron-3-super-120b-a12b |
https://integrate.api.nvidia.com/v1 |
| Custom |
- |
- |
Get API Keys
GLM and Z.AI keys are not interchangeable — create a key on the platform that matches your provider.
Choosing a model for commit messages
Generating a commit message is a lightweight task — you don't need a frontier model. Pick based on cost, latency, and whether you already have an API key.
The list below is our recommendation — change Provider in settings to use a different service (e.g. set Provider to DeepSeek and leave Model empty for deepseek-v4-flash).
Pricing comparison (USD per 1M tokens, cache-miss input; sources linked below):
| Provider |
Model |
Input |
Output |
~Cost / generation† |
Notes |
| OpenRouter |
openrouter/free |
$0 |
$0 |
~$0 |
Zero-cost trials; quality/latency vary |
| OpenAI |
gpt-5-nano |
$0.05 |
$0.40 |
~$0.0003 |
OpenAI provider default |
| Z.AI |
glm-4.7-flashx |
$0.07 |
$0.40 |
~$0.0004 |
Z.AI provider default; often slower |
| GLM |
glm-4.7-flashx |
¥0.5 (~$0.07) |
¥3 (~$0.42) |
~$0.0004 |
GLM provider default; often slower |
| DeepSeek |
deepseek-v4-flash |
$0.14 |
$0.28 |
~$0.0007 |
Default Provider — fast, cheap, great quality |
| MiMo |
mimo-v2.5 |
$0.14 |
$0.28 |
~$0.0007 |
Same price tier as DeepSeek; OpenAI-compatible |
| Gemini |
gemini-3.1-flash-lite |
$0.25 |
$1.50 |
~$0.0015 |
Recommended — fast; generous free tier |
| NVIDIA NIM |
nvidia/nemotron-3-super-120b-a12b |
$0 |
$0 |
~$0 |
Free development endpoint; rate limits and availability vary |
† Rough estimate for ~5K input + 150 output tokens (typical diff + commit message), no prompt cache. GLM CNY prices converted at ~¥7.2/$ for comparison. Actual cost depends on diff size and model verbosity.
GLM vs Z.AI: Same model family, different platforms — GLM uses the China endpoint (open.bigmodel.cn); Z.AI uses the international endpoint (api.z.ai). API keys are not interchangeable. Each uses glm-4.7-flashx as its provider default (paid). The free glm-4.7-flash tier is heavily rate-limited and not recommended.
Our recommendation (speed + value) — set Provider in settings to match your pick:
- DeepSeek V4 Flash — Default Provider; leave Model empty →
deepseek-v4-flash. Best overall: fast, cheap, high quality. Thinking mode is disabled automatically.
- Gemini 3.1 Flash Lite — set Provider to Gemini; leave Model empty →
gemini-3.1-flash-lite. Also excellent: fast with a generous free tier; uses thinking_level: minimal.
- MiMo V2.5 — set Provider to MiMo; leave Model empty →
mimo-v2.5. Same USD price band as DeepSeek.
- GLM / Z.AI — set Provider to GLM (China) or Z.AI (international); leave Model empty →
glm-4.7-flashx. Works reliably but is often slower than DeepSeek or Gemini Flash Lite. Requires a paid balance.
openrouter/free — set Provider to OpenRouter; fine for experimenting.
- NVIDIA NIM — set Provider to NVIDIA NIM; leave Model empty →
nvidia/nemotron-3-super-120b-a12b. Good for free development testing across NVIDIA's hosted model catalog; expect lower rate limits and no production SLA.
Official pricing pages: DeepSeek · MiMo · Gemini · OpenAI · Zhipu GLM · Z.AI · OpenRouter · NVIDIA NIM
OpenRouter provider default is openrouter/free.
NVIDIA NIM provider default is nvidia/nemotron-3-super-120b-a12b. NVIDIA NIM is best treated as a free development/testing endpoint, not a guaranteed production backend.
Gemini uses Google's native Interactions REST API (/v1beta/interactions), authenticates with the x-goog-api-key header, and uses the minimal thinking level to reduce latency for commit-message generation.
[!IMPORTANT]
Claude Support: Native Claude format is not supported yet. Please use a proxy service that provides an OpenAI-compatible endpoint.
🕹️ Other entry points
- Source Control title bar ✨ · Command Palette
WTF Commit: Generate · rebindable shortcut (see Daily use).
- Rotate keys anytime with
WTF Commit: Set API Key.
💬 Feedback
Using WTF Commit and finding it useful? A GitHub star, an Open VSX review, or a short issue (bugs or ideas) all help more people discover it — and help us keep improving.
📄 License
MIT License.