Commit Quill
Generate reviewed Git commit messages in VS Code with your own OpenAI, Anthropic, or Gemini API key. The extension never commits without showing an editable commit subject and receiving your confirmation. Requirements
Setup
Selecting a provider always shows its model list. When that provider already has a stored key, setup ends after model selection. Otherwise, it immediately asks for the key. Model names are stored in VS Code global settings. Keys are stored separately per provider in VS Code Secret Storage and are never written to workspace settings. Commit behaviorWhen staged changes exist, the extension sends only the staged diff, staged file list, and recent commit subjects to the selected provider. The generated subject is written into the Source Control input box, where you review it beside your diff and commit with the button you already use. Text already in the box is kept and the subject is appended after it. Set Diffs are truncated at Lockfiles and generated project files are replaced by a line count before any of this, because they are usually the largest and least informative part of a diff. In one measured commit a Each provider call shows a cancellable progress notification. Cancelling aborts the in-flight request and ends the command without creating a commit. It follows a detected stable local commit convention. Anything you put in When no stable convention exists, it asks for a Conventional Commit subject. The generated subject is always editable before Git commits it. When no files are staged but the working tree has changes, the extension asks the provider to propose independent file groups. Grouping files by why they changed is a harder task than summarising one staged diff, and it does not degrade gracefully — it comes apart in distinct pieces as the model gets smaller. Measured across two repositories:
Every model grouped the files correctly; what varied was the labelling. Point Set It shows the proposal and stages and commits each group only after approval. When the working tree is clean, the command exits before reading an API key or calling a provider. Supported providers
Other providers are intentionally out of scope until requested. Safety
Development
|
