AI Commit Messages
Generate commit messages from your staged diff, and configure the AI provider
GitBor can write the Subject of a commit from the changes you staged. The same provider and settings power all the other AI helpers.
Generate a commit message
- Stage at least one change.
- Click the AI button next to the Subject field.
- After generation, GitBor inserts the cleaned final text into the field. Edit it before you Commit.
- Click the same button again to stop generation.
The button is disabled when there's nothing to send (no staged changes) or when AI is turned off in settings.
AI Settings
Open Repository → AI Settings…, or click the small gear next to the AI button on hover. The dialog has six sections on the left.
Connection
Choose which model you talk to. GitBor talks to AI providers through an OpenAI-compatible API. Presets are grouped:
| Group | Examples | Notes |
|---|---|---|
| Local | Ollama (default), LM Studio, llama.cpp | Runs on your machine — nothing leaves it. |
| Corporate | Custom OpenAI-compatible gateway, Qwen Corporate (vLLM / DashScope) | Internal endpoints and air-gapped networks. |
| Available without VPN | DeepSeek, Qwen API | Reachable without a VPN. |
| Russian | YandexGPT (Yandex Cloud) | |
| Foreign | OpenAI, Anthropic, Groq | Blocked by default — see Privacy. |
For each preset you fill in:
- Base URL — usually ends with
/v1. - Model — the model identifier your server accepts.
- API Key — leave empty for local servers. Stored encrypted on this device (Windows DPAPI, macOS Keychain, Linux libsecret), never in a plain file.
- Test — a short probe to confirm the key and URL work.
If AI agents, external AI services or AI key storage are not allowed on the workstation, use GitBor No AI. In that build, the AI interface is hidden, providers are disabled, keys are not requested, and no AI requests are made.
Prompts
The instruction text sent to the model for each feature. Defaults are in English on purpose — LLMs (including local Qwen and YandexGPT) reason better in English; the reply is translated separately via the response-language setting. Every prompt has Reset to default. Placeholders like {subject}, {body}, {diff} are filled in before sending.
Features
Per-feature on/off toggles, plus an optional model override per feature. Trust your default model for everything except, say, the Conflict Helper? Put a more capable model id in that feature's override. A disabled feature hides its UI button entirely.
Behavior
- AI response language — Auto (UI language) / English / Russian. Controls the language the reply is translated into; applies to every feature, including AI stash names.
- Gateway compatibility — for finicky corporate gateways: send the system prompt as a user message (some gateways drop the system role), disable Qwen "thinking" mode, and strip
<think>…</think>from responses.
Privacy
Two switches:
- AI enabled — the global kill-switch. When off, every AI button is disabled regardless of feature toggles.
- Allow sending code to foreign providers — off by default (import-substitution policy). Local, Corporate, no-VPN and Russian providers are always allowed; foreign ones (OpenAI, Anthropic, Groq) stay blocked until you flip this on. Clicking an AI button on a blocked provider shows a tooltip explaining why and linking here.
There is no separate telemetry channel that bypasses this — every AI request goes to the provider you chose.
Debug
Shows the last request/response and a short error log, optionally writing ai-debug.log. Useful when a custom endpoint misbehaves. Nothing is uploaded — it just mirrors what GitBor itself saw.
Where the configuration lives
Stored next to GitBor's other settings, with secrets in the OS keychain:
- Windows:
%APPDATA%\GitBor\ai-config.json(DPAPI) - macOS:
~/Library/Application Support/GitBor/ai-config.json(Keychain) - Linux:
~/.config/GitBor/ai-config.json(libsecret)
Older settings are upgraded automatically on first launch — no action required.