Last updated: 5 September 2026
**/*.md by default, capped at 200 files). node_modules, build output, and vendor directories are always excluded, and anything in your .gitignore is skipped too. Trivial files are dropped.vscode.lm API, meaning your own Copilot subscription or a local model. When both pairwise checks are enabled, duplication and contradiction are assessed in a single combined call per pair; open-question checks run only on documents that show open-question signals (TODO/TBD, placeholders, unanswered questions). Assessments run four at a time.git log) and shows it to you in a modal. Only after you click Create issue does it post, using VS Code's built-in GitHub sign-in, labelled docgrity / docgrity:<type>.The docgrity.mode setting controls what the extension is allowed to do:
report-and-issue (default) — scan, review findings, and raise GitHub issues, each previewed and human-approved before posting.report-only — scan and review only. The Raise GitHub issue action is hidden from menus and blocked at the command level, so the extension is guaranteed to never post anywhere. Useful for client repositories, compliance-sensitive environments, or exploratory reading.Because it's a normal VS Code setting, you can set report-only globally in user
settings and override to report-and-issue per-workspace (in
.vscode/settings.json) only in repos where you want to act.
Each check is an independent toggle — run any combination, with any model, in either mode:
docgrity.checks.duplicates — pairwise duplicate detection (default on)docgrity.checks.contradictions — pairwise contradiction detection (default on)docgrity.checks.openQuestions — per-document unresolved-question detection (default on)Disabling checks also speeds up scans: pair selection is skipped entirely when both pairwise checks are off, and only enabled checks cost model calls.
Docgrity suggests who might fix a finding by looking at the last git author of each involved file. This is always labelled potential — inferred, never asserted. It never assigns issues automatically.
Docgrity talks to whatever model VS Code's language-model API (vscode.lm) exposes.
The easiest way to switch: run Docgrity: Select AI model from the command
palette — it lists every available model and saves your choice. Manual settings:
docgrity.model.vendor (default copilot) and
docgrity.model.family (e.g. gpt-4o, claude-sonnet-4.5,
llama3.1; empty = first available).
Options, in order of simplicity:
docgrity.model.family.ollama pull llama3.1), then in Copilot Chat → Manage models → add the Ollama model. It registers under the copilot vendor; select it with Select AI model. With a local model, no document content leaves your machine at all.cloudflared tunnel --url http://localhost:11434and point Copilot's Manage models → Ollama endpoint at the generated
https://….trycloudflare.com URL.
cloudflared tunnel create docgrity-llm + a DNS route), and protect it with Cloudflare Access or an auth proxy — an unauthenticated LLM endpoint on the public internet can be abused by anyone who finds it.docgrity.model.vendor to that provider's vendor id, or empty for "any available model".Copilot models are only available inside VS Code (there is no Copilot API key for terminals or CI). The CLI and Action use direct providers instead:
ollama (CLI default) — local or tunnelled, no key, fully private.anthropic / openai / gemini — bring your own API key
(defaults: claude-3-5-haiku-latest, gpt-4o-mini, gemini-flash). These are the
vendors' direct APIs — a separate key from your Copilot subscription. In the Action, pass it as
api_key: ${{ secrets.DOCGRITY_API_KEY }}.github-models — being retired by GitHub. If your Action runs fail with
HTTP 410 (github_models_retirement), switch provider to one of the options above.Summary: Copilot (keyless) in the editor · Ollama (keyless) everywhere · BYO key for hosted models in CI and the CLI.
Every surface can also scan with pure algorithms — no model, no Copilot, no keys,
fully offline. Extension: set docgrity.engine to no-agent. CLI:
docgrity scan --provider none. Action: provider: none.
TODO, TBD,
FIXME, ???, "open question"…). Deterministic, so confidence is high.Evidence stays verbatim (extracted directly from the docs), owners still come from git history,
and findings are marked method: heuristic so you always know how they were produced.
Model quality note: Docgrity's prompts demand strict JSON with verbatim evidence.
Hosted frontier models handle this reliably; small local models (<8B) fail validation more often.
Failed responses are rejected safely — you get fewer findings, never corrupted ones.
Recommended local minimum: an 8B+ instruct model (e.g. llama3.1:8b); 70B-class or hosted
models give noticeably better contradiction detection.
docgrity.maxFiles, docgrity.maxPairs) keep a scan to a bounded number of model calls, and disabling checks you don't need (docgrity.checks.*) cuts calls further.git log, git remote get-url), executed without a shell.docgrity.model.vendor/family for a local model.docgrity.thresholds.*, or check the corpus caps.node_modules, build output, and git-ignored files are always excluded (v0.1.2+); add extra patterns with docgrity.exclude.