Type something to search...
Browse documentation

Troubleshooting

Find your symptom, go to the page that fixes it. Every entry below links to the page that has the detail.

The stack itself

SymptomLikely causeWhere it is fixed
A container exits immediately at startupA required value is missing, or a setting is outside its accepted rangerequired values
The API never becomes healthy and ProCursor crash-loopsProCursor has no shared key, and the API waits for itrunning without ProCursor
The first start fails on a database migrationThe vector extension is not enabled on the databaseprerequisites
A variable you set in .env had no effectThe compose file does not forward it, or the value could not be parseddoes the example stack forward it?
/healthz reports degraded or unhealthyOne dependency is down; which one is in the response bodywhat the health checks mean

Signing in and reaching the UI

SymptomLikely causeWhere it is fixed
Nobody can sign in, though the stack startedNo JWT signing secret is configuredrequired values
Sign-in is refused after repeated attemptsThe per-account lockout or the per-IP limiter has trippedsign-in and sessions
Sessions end sooner than expectedThe idle timeout or the absolute lifetime was reachedsign-in and sessions
A tenant sign-in asks to sign in to an existing account or to continue with a new oneAn account with the same email address exists, and no link of the identity appliestenant users and the identity providers of a tenant
A tenant sign-in through Microsoft Entra ID is refused although the provider accepted the personThe issuer in the discovery document of the provider is not its configured authoritytenant users and the identity providers of a tenant
A sign-in through an identity provider ends with an invalid or expired requestThe callback ran in another browser, more than 15 minutes after the start, or a second timetenant users and the identity providers of a tenant
The sign-in page shows no password formThe installation turns off the password sign-ininstallation sign-in policy
The sign-in page of a tenant offers no identity providerThe installation turns off the identity providers of tenants, or the license does not grant sso-authenticationinstallation sign-in policy
The API does not start, and the error message contains MEISTER_LOCAL_SIGN_IN_ENABLEDThe password sign-in is off, and the identity provider for platform administrators is not configured or not licensedinstallation sign-in policy
Starting a sign-in through an identity provider answers 400 with return_url_not_allowedThe user interface runs on an origin that is neither the public base URL’s nor in CORS_ORIGINSthe return address of a sign-in
Browser calls from your own origin are blockedThe origin is neither the public base URL’s nor in the allowed listdeployment topology
A feature is refused with a license messageThe capability needs a commercial licenseeditions
A licensed feature stays refused after the term was correctedThe host clock ran far ahead and that instant was recordedlicensing time

Connecting to an SCM host

SymptomLikely causeWhere it is fixed
A provider family is missing from the connection, trigger or webhook formsThe family is not enabled for the installationenabling a provider family
Saving a connection is refused with HTTP 400The field combination is not valid for that family and authentication kindHTTP 400 when saving a connection
An Azure DevOps Server connection will not verifyScheme, certificate trust, or an authentication mode that server does not acceptAzure DevOps
The connection verifies but reviewer identity will not resolveA missing scope, an inactive connection, or an identity that was looked up but never savedreviewer identity resolution

Webhooks and triggering

SymptomLikely causeWhere it is fixed
The provider fires but no review appearsThe delivery never arrived, or was rejected or ignored on purposewebhook troubleshooting
A delivery is rejected with 401, 400 or 404Secret mismatch, an event that family does not classify, or a pull request outside the configured filterswebhook troubleshooting
A delivery is accepted but no review is queuedThe pull request’s reviewer is not the configured trigger identitywebhook troubleshooting
The listener URL names an internal hostThe public base URL is unset, so the URL was built from the request hostdeployment topology

Reviews

If you have not had a successful review yet, start from first review.

SymptomLikely causeWhere it is fixed
The review stays pending while another review runsOnly one review at a time without a licenseeditions
The review stays pending with nothing else runningThe review worker is not runningwhat the health checks mean
The review fails immediatelyA purpose the review needs resolves to no modelpurposes
An AI connection will not verifyCredentials, endpoint reachability, or the wrong family for that endpointverification failures
No comments on the pull request, or fewer than the summary suggestsComment posting is off for the client, or the gate and the minimum severity to post filtered themwhy a finding did not get posted
A finding you expected never appearedExclusion patterns, the context budget, or the gate - all of which the protocol recordswhat happens during a review

Cost and spend figures

SymptomLikely causeWhere it is fixed
Reviews cost more than expectedNo prompt caching on the route you chose, list prices instead of yours, or effort and pass settingscontrol cost
A model shows no context window or no priceIts id matched no catalog entrya model is missing its context window or price
A job is held before it startsA budget cap was already reached; a held job needs an operator to restart itwhat you can tune
A job ends as Not started and the pull request carries a notice instead of a reviewThe pull request is larger than a review limit the client sets; the notice names the measured value and the boundwhat you can tune
A job sits in Waiting and no comment appearsThe pull request has already started its hourly number of reviews; it starts by itself at the time on the jobwhat you can tune

Licensing time and the installation identifier

ProPR records the latest time it has seen. It compares a license term against the host clock or that recorded time, whichever is later, so setting the host clock back does not revive an expired license. The recorded time never decreases.

If the host clock ran far ahead and ProPR recorded that time, correct it: set the observed_at column of the installation_observed_time row to the right time and restart the installation. The restart is needed because a running process keeps the recorded time in memory.

A host clock reading more than five minutes behind the recorded value is reported in the log once per replica, naming both instants. Correct the clock or its time synchronisation; nothing about the license needs to change.

The installation identifier is on the Administration → Licensing page. When the UI is not reachable, read it from a shell with dotnet MeisterDev.ProPR.Api.dll --print-licensing-identity. The command writes the identifier to stdout; on failure it writes one line to stderr and exits non-zero. It applies no migrations and runs no startup seeding, so the API must have started against the database at least once. If the licensing tables are missing, the command says so. If the installation has no identifier yet, the command creates one and writes nothing else. ProPR also logs the identifier once per replica at startup. To report as a different installation, delete the licensing_identity row. The next read creates a new identifier, and the license on file is unaffected.

When you need to ask for help

Capture the review’s protocol, or the webhook delivery row with its failure reason, and the response of GET /healthz. Those three answer most questions without access to your logs, and none of them contains a secret. See review diagnostics.