Troubleshooting
Fix install, login, gate, and connector issues from the symptom.
Most issues come from a wrong OIDC redirect URI, missing gate token, connector scope mismatch, stale evidence, or a pipeline running local mode when server mode is required.
Invalid parameter: redirect_uri
Add the exact callback URL to the OIDC client: https://release-passport.example.com/releasepassport/v1/auth/callback.
Gate returns HOLD with missing evidence
Check connector scope, service name, namespace, source SHA, image digest, and rendered manifest path.
Console redirects to portal on releasepassport.com
Expected for the public commercial host. Install the self-hosted runtime and open the customer-owned console domain.
Customer console redirects to login
Expected when unauthenticated on the self-hosted runtime. Sign in with the configured OIDC provider and verify workspace membership.
Connector says not configured
Add a scoped token or service account in Settings/Helm values and restart connector sync.
Pipeline feels useless in local mode
Use --api-url server mode. Local mode is only a developer smoke path.
Report export missing data
Reports only include evidence that the API has ingested and sanitized. Re-run gate or connector sync.
Detailed troubleshooting table
| Symptom | Likely cause | Fix | Verification |
|---|---|---|---|
| Login shows invalid parameter: redirect_uri | OIDC app does not include the exact callback URL. | Add https://release-passport.example.com/releasepassport/v1/auth/callback to authorized redirect URIs. | Open the customer runtime /login again and confirm provider redirects back to /console. |
| Google says OAuth client not found | Wrong client ID deployed or placeholder value still active. | Update the OIDC client ID secret/config and restart the API deployment. | Provider login URL should contain the real client ID. |
| Customer console loops back to login | Session cookie domain, allowed group, issuer, or callback mismatch. | Check API logs, cookie domain, OIDC group mapping, and user membership. | Authenticated user reaches /console and /settings on the customer domain without another redirect. |
| Gate returns 401 or 403 | Missing token, wrong token, wrong workspace, or wrong token scope. | Rotate token, update CI secret, and confirm service/environment scope. | releasepassport gate prints a passport ID instead of auth error. |
| Gate always HOLD | Required evidence is missing, stale, or scoped to another service name/namespace. | Match service name, namespace, release ID, source SHA, artifact digest, and connector scope. | Passport detail shows complete evidence and no missing requirement. |
| Gate blocks unexpectedly | Policy is enforce or --fail-on threshold is stricter than rollout maturity. | Start shadow, review policy result, then move advisory/enforce deliberately. | CI exit code matches chosen mode and fail threshold. |
| Connector health stale | Worker cannot authenticate, query is not allowlisted, or provider URL is wrong. | Fix secret, scope, provider base URL, query allowlist, and restart worker sync. | Integrations page shows fresh last sync and latest evidence. |
| Prometheus evidence missing | Labels do not match the service/environment or query returns no series. | Test the allowlisted query in Prometheus and align service labels. | Passport evidence timeline includes current p95/error-rate facts. |
| Kubernetes readiness missing | Namespace, label selector, or service account RBAC is wrong. | Grant read-only scoped RBAC and confirm labels match workload. | Connector detail shows rollout status and ready replicas. |
| GitOps status unavailable | App name, project scope, or token permission mismatch. | Limit token to the correct Argo CD/Flux app and configure app name. | Connector detail shows health, sync, revision, and previous revision. |
| Checkout stays pending | Payment webhook not received or signature invalid. | Check provider secret, webhook URL, provider status, and API logs. | GET /billing/status shows active after a valid successful payment event. |
| Production feature not unlocked | Entitlement not active for the workspace. | Confirm checkout workspaceId, webhook success, license status, and runtime restart if required. | GET /license/status shows production entitlement and feature flags. |
| Docs or console overflows on mobile | A table/code block or long identifier is not constrained. | Use responsive wrappers and avoid unbroken public copy. | Check 390x844 viewport has no horizontal overflow. |
