Skip to content
Documentation

Troubleshooting

Fixes for sign-in handoffs, locked Pro features, undetected local models, refused cloud reviews, and more.

Common problems, and what to do about them.

#macOS refuses to open the app

DiffGuardian is signed and notarized by Apple, so Gatekeeper should open it without complaint. If macOS blocks the first launch anyway, the download was most likely damaged in transit or the quarantine attribute was applied oddly.

  1. Delete the copy in Applications and re-download it from the homepage.
  2. Open it from Applications rather than from the disk image.
  3. If macOS still refuses, open System Settings → Privacy & Security, scroll to the Security section, and choose Open Anyway for DiffGuardian.

#The browser signs me in but the app stays on Signing in

The sign-in handoff passes a token back to the app through a diffguardian:// link. If your operating system did not route that link to the app, the app never receives it.

  • On the browser tab that says "Returning to DiffGuardian…", use the click here to continue link. That triggers the handoff manually.
  • If your operating system asks for permission to open DiffGuardian, allow it.
  • The token expires after five minutes and can only be used once. If you left the tab open for longer, start the sign-in again from the app rather than reloading the tab.
  • If a different browser is set as your default and you signed in somewhere else, sign in again in the browser the app actually opened.

#A feature opens an upgrade prompt instead of running

That is the Pro gate, working as intended. Pro features are deliberately left visible and clickable on Basic rather than hidden or greyed out, so activating one explains what it is and what plan it needs instead of doing nothing. See Plans for the full list.

#I have run out of AI reviews this month

Basic includes 5 AI reviews per calendar month. The count resets on the first of the month. Everything else — the diff viewer, your existing reviews and their results, comments, diagrams — keeps working in the meantime. Upgrade for unlimited reviews.

#I cannot add a second repository, or a private one

Basic connects one repository and it must be public. Both limits are lifted by Pro. If a repository you believe is public is refused, check its visibility on your code host and that your access token can see it.

#Pro features are still locked after upgrading

The app refreshes your plan in the background rather than on every keystroke.

  1. Give it a few seconds after checkout completes.
  2. If it has not picked up, quit and reopen DiffGuardian to force a refresh.
  3. Confirm the payment actually completed in the billing portal. A checkout you abandoned on Stripe's page does not create a subscription.

If you expected Pro from a team seat, confirm you are a member of the organisation that bought the seats and that its subscription is active — see Teams and seats.

#Checkout says I have tried too many times

Checkout is rate limited per account to protect against runaway retries. Nothing has been charged. Wait for the window to pass and try again, or open the billing portal instead if you already have a subscription.

#I cannot buy seats for my organisation

Only an organisation admin can purchase or manage seats. If the billing controls are missing from the team page, you are a member rather than an admin — ask an admin to set up billing.

If you can see the controls but the purchase is refused, check that you are inviting within your purchased seat count. Your seat count is also the organisation's member cap: buy more seats first, then invite.

#A local model is not detected

  • Confirm Ollama or LM Studio is actually running and has a model loaded — DiffGuardian connects to the local HTTP endpoint they expose, which only exists while the app is up.
  • Confirm the endpoint address in DiffGuardian's AI settings matches the port the tool is listening on.
  • If you changed models, reselect the model in DiffGuardian so it picks up the new name.

#Cloud reviews are refused

The app checks your plan and your own AI settings before every cloud call.

  • On Basic: cloud providers require Pro — a key saved on Basic will not be used. Use a local model, or upgrade.
  • On Pro: check that the provider is toggled on, that its key is valid, and that the feature you are using is actually routed to that provider in Settings → Model routing.
  • A provider-side error — an expired key, no credit, a rate limit — comes from Anthropic, OpenAI, Gemini or Kimi rather than from DiffGuardian. Check your account with them.

#An MCP server is configured but the AI never uses it

Adding a server does not by itself allow tool calls. Turn on MCP tool calls in Settings → Features, and confirm the server shows as enabled and connected — Test runs a local connection check. Tool calls run during an AI review on Anthropic and OpenAI models; other backends skip the loop. See Knowledge bases and MCP servers.

#Dictation does not start

Voice input needs microphone permission. On macOS, grant it under System Settings → Privacy & Security → Microphone, then try again. Also confirm Input voice is on in Settings → Voice — it is off by default. See Voice.

#Answers cite files that no longer exist

The knowledge graph is built from your checkout. After pulling a large branch, let the index catch up before asking about it, and re-index if the repository has changed substantially.

#The app keeps asking me to update

Updates are mandatory by design: publishing a release is how a bad build is pulled out of circulation. Install the update to continue. There is no way to stay on an older version.

#Something else

Send feedback from inside the app — it carries optional diagnostics that make a report far easier to act on — or email support@diffguardian.ai.

If the app reports a server error, it will show an error ID. Include it: it points straight at the specific failure in our logs.

Current service incidents are published in the app and at GET /api/v1/incidents.