English | 简体中文
WTF Commit ✨

Links: GitHub · VS Marketplace · Open VSX · Website
One shortcut. Your commit message is written, committed, and pushed — in seconds.
WTF Commit reads your git diff, writes a clear Conventional Commit (e.g. feat: add dark mode), fills the Source Control box, and commits in the same keystroke — push too, once you enable Auto Push. No pausing to phrase a message, no boilerplate.
Flow: git diff → ✨ shortcut → message → commit → (optional) push
|
|
| ⚡ ~1 min setup |
Paste your own API key once (DeepSeek by default) |
| 🎁 OpenCode Go (optional) |
Same Flash model — subscribe via our link for +$5 Go credit; commits draw from your Go quota |
| 🔑 No lock-in |
DeepSeek / OpenAI / Gemini / OpenRouter, or any OpenAI-compatible endpoint (Ollama, proxies). No subscription required |
| 🚀 One-keystroke pipeline |
Auto Commit on by default; enable Auto Push for generate → commit → push in one shot |
| 🖥️ Works everywhere |
VS Code (Marketplace auto-update), Cursor, VSCodium, other Open VSX editors. MIT, free, actively maintained |
Already installed? Skip ahead: ① Configure AI (~1 min) → ② Daily use.
Install
| Editor |
How to install |
Updates |
| VS Code |
Extensions → search WTF Commit → Install (Marketplace page) |
Auto-update from Microsoft Marketplace |
| Cursor / VSCodium |
Extensions → search WTF Commit → Install (Open VSX) |
Auto-update from Open VSX |
VSIX (optional / offline): download from GitHub Releases or the marketplaces above, then Extensions → ⋯ → Install from VSIX…, or drag the .vsix onto the Installed list. Manual VSIX installs do not auto-update — prefer the marketplace install when you can.
Defaults are enough: Provider = DeepSeek. You only need a key.
- Install — search
WTF Commit in your editor’s Extensions view (VS Code or Cursor).
- Set API Key — Command Palette →
WTF Commit: Set API Key, then:
- The first entry is your current provider (it shows whether a key is already stored); pick Choose another provider… to switch.
- First-time setup shows a small wizard: press Enter on Paste API Key now, or pick Open {provider} key page — the wizard stays open while the browser opens, so you can come back and paste once you have a key.
- Pasting is masked with live paste-error checks; on success the status bar echoes the masked key (e.g.
sk-ab••••wxyz) so you can verify what was stored.
- A key saved for another provider asks whether to Switch Provider.
- Need a key? DeepSeek API keys (linked from the extension too).
Want another provider later? In Set API Key choose Choose another provider…, or change Provider in Settings. Leave Model empty for built-in defaults.
② Daily use (every commit)
What the shortcut does: prefers staged changes → if nothing is staged and Auto Commit is on, stages your working tree → generates a Conventional Commit → commits (default) → does not push (Auto Push off).
- Make your code changes (stage when you can).
- Press the generate shortcut — the message streams in, then commits by default.
- Push yourself when ready — Auto Push is off by default.
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 a zero-dialog generate → commit → push flow.
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.19.2)
- Pricing & docs update: Refreshed pricing structures, peak/off-peak rates, OpenCode Go credit quotas, and per-commit cost estimates across DeepSeek, OpenCode Go, and OpenAI.
See CHANGELOG for full history.
🚀 Features
- Conventional Commits —
feat / fix / docs / … with optional local format fix + automatic AI repair.
- Smart diffing — Prefers staged changes; with Auto Commit, stages the working tree when nothing is staged.
- 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 a push confirmation.
- 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. Settings are split into WTF Commit (basics) and WTF Commit › Advanced.
Basics — what most people need:
| Setting |
Description |
| Commit Message Language |
Language for generated commit messages. |
| Provider |
AI backend (default DeepSeek). |
| 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. |
| Confirm Before Push |
Default on — ask before auto-push. Power users can disable it for a fully hands-off shortcut. |
Advanced — Custom Base URL/Model, Provider Overrides, ignore paths, status bar toggle.
Extension UI language follows VS Code (vscode.env.language): zh* → 中文, otherwise English. Power-user overrides live in settings.json only: wtfCommit.prompt, and when Commit Message Language is Custom, wtfCommit.customCommitMessageLanguage.
2. Custom Model & Endpoints
You can use any OpenAI-compatible model (like local models via Ollama):
- In Settings, set Provider to
Custom.
- Under WTF Commit › Advanced, enter the Base URL (e.g.,
http://localhost:11434/v1).
- Enter the Model name (e.g.,
llama3).
To override a built-in provider's endpoint/model, use Provider Overrides (not the global Base URL / Model fields).
3. Custom Commit Language
If you want the AI to use a specific language (e.g., French, Cantonese, or Emoji-only):
- Set Commit Message Language to
Custom.
- In
settings.json, set the target language, for example:
{
"wtfCommit.commitMessageLanguage": "Custom",
"wtfCommit.customCommitMessageLanguage": "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 when that provider is selected and no Provider Overrides (or Custom Base URL/Model) are set. |
| Our recommendation |
Our picks for commit-message generation (see Choosing a model) — DeepSeek and OpenCode Go are both recommended; this is not the same as the extension default provider. |
Provider defaults — when Base URL and Model are left empty:
| Provider |
Default Model |
Default Base URL |
| DeepSeek |
deepseek-v4-flash |
https://api.deepseek.com |
| OpenCode Go |
deepseek-v4-flash |
https://opencode.ai/zen/go/v1 |
| Gemini |
gemini-3.5-flash-lite |
https://generativelanguage.googleapis.com/v1beta |
| OpenAI |
gpt-5.6-luna |
https://api.openai.com/v1 |
| OpenRouter |
openrouter/free |
https://openrouter.ai/api/v1 |
| Custom |
- |
- |
Get API Keys
Other OpenAI-compatible APIs (MiMo, GLM, Z.AI, NVIDIA NIM, proxies): set Provider to Custom and fill Base URL + Model under Advanced — or route through OpenRouter.
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.
Recommended providers:
- DeepSeek (
deepseek-v4-flash) — Default Provider; leave Model empty. Fast, high quality, pay-as-you-go. Thinking mode is disabled automatically.
- OpenCode Go (
deepseek-v4-flash) — Recommended if you already have (or want) an OpenCode Go subscription (that link adds an extra $5 toward Go quota): set Provider to OpenCode Go, paste the Go API key. Same model via OpenCode’s endpoint; commits draw from your Go quota (no separate DeepSeek top-up).
- Gemini 3.5 Flash Lite — optional alternative with a free tier; set Provider to Gemini.
- OpenAI / OpenRouter / Custom — use these if you already have keys or a proxy endpoint.
DeepSeek vs OpenCode Go (same model): list rates for deepseek-v4-flash match DeepSeek’s official API (off-peak: $0.22 input / $0.66 output; peak: $0.44 input / $1.32 output per 1M tokens). Go is not cheaper on sticker price — its advantage is the subscription: $5 first month, then $10/mo, with a $30/mo Flash usage credit included (~3× value, about 37.8k agent-style requests per month by their published estimate). For light, commit-only use, official DeepSeek pay-as-you-go stays cheapest; if you already pay for Go, prefer OpenCode Go so commit messages are covered by that quota.
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 |
| DeepSeek |
deepseek-v4-flash |
$0.22 / $0.44* |
$0.66 / $1.32* |
~$0.0012 / ~$0.0024* |
Default — pay-as-you-go; 50% off during off-peak |
| OpenCode Go |
deepseek-v4-flash |
$0.22‡ / $0.44*‡ |
$0.66‡ / $1.32*‡ |
~$0.0012‡ / ~$0 in quota |
Recommended with Go sub — same list rates; $10/mo ≈ $30 Flash credit (~3×) |
| OpenAI |
gpt-5.6-luna |
$0.20 |
$1.20 |
~$0.0012 |
OpenAI provider default |
| Gemini |
gemini-3.5-flash-lite |
$0.30 |
$2.50 |
~$0.0019 |
Alternative; generous free tier |
- DeepSeek & OpenCode Go peak rates apply 01:00–04:00 and 06:00–10:00 UTC (Mon–Fri); all other times are off-peak (50% discount).
† Rough estimate for ~5K input + 150 output tokens (typical diff + commit message), no prompt cache. Actual cost depends on diff size and model verbosity.
‡ OpenCode Go publishes the same Flash list rates as DeepSeek to meter subscription quota (Go pricing); within the included credit, marginal cost for commits is effectively ~$0 until you hit Go limits.
Official pricing pages: DeepSeek · OpenCode Go · Gemini · OpenAI · OpenRouter
OpenRouter provider default is openrouter/free.
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.
Upgrading from an older build that used MiMo / GLM / Z.AI / NVIDIA NIM: the extension migrates that Provider setting to Custom and fills Base URL / Model automatically.
[!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.