Skip to content

Troubleshooting

This page lists the most common deployment issues and how to resolve them. For runtime diagnostics, GET /health?deep=true reports database, disk, gcloud, and security-posture status, and every error response carries an X-Correlation-ID you can quote to support.

IssueCauseResolution
Backend exits with “production startup blocked — N security config errors”A fail-fast condition tripped (missing HMAC_KEY/API_KEY/ENCRYPTION_KEY, STORAGE_MODE=compat, dev mode on, a tenant-bypass flag, a weak secret, or the DB unreachable)Fix the reported setting (see Configuration). Emergency only: SECURITY_PERMIT_INSECURE_BOOT=true (audited, unsafe)
python main.py doesn’t start the web servermain.py is a legacy CLI IAM scanner, not the backendStart python -m uvicorn api.app:app --host 0.0.0.0 --port 9900
ModuleNotFoundError for extension...extension/ not on PYTHONPATHRun from the repo root, or use the provided launchers / containers which set PYTHONPATH
Backend fails to import with odd errorsStray stub files at the project root shadowing real packagesRemove/quarantine any stray fastapi.py, boto3/, google/ stubs at the root
IssueCauseResolution
Scans rejected before they start / slow timeoutsGCP Application Default Credentials expiredgcloud auth application-default login, or set GOOGLE_APPLICATION_CREDENTIALS
AWS scan raises an import error immediatelyboto3 / botocore not installedpip install boto3 botocore (already in requirements.txt)
Azure scan completes but inventory is emptyAzure SDKs missing → graceful empty resultInstall the Azure SDK dependencies, then re-scan
Scan completes but no findingsRead permissions missing or wrong scopeRun the Pre-scan Permission Check; widen scope or grant read roles
IssueCauseResolution
Port already in use (9900 / 8200 / 7700)A previous process is still listeningstart-servers.bat / stop-servers.sh free the ports; or change PORT / LICENSE_PORT / DB_PORT
Vite dev server fails to start on 8200The frontend dev port is fixed (strictPort)Free port 8200 — it will not auto-increment
CORS errors in productionFRONTEND_ORIGINS unset → falls back to dev originsSet FRONTEND_ORIGINS=https://your-host (CSV). In local dev the Vite proxy avoids CORS
IssueCauseResolution
Everything returns a license error (403/423)License invalid or lockedActivate a valid license; check the license server is reachable over HTTPS
License validation silently disabledREDCLOUD_LICENSE_SECRET unsetSet the same secret on the backend and the license server
IssueCauseResolution
Scheduled scans don’t fireScheduler auto-start failed at bootCall POST /scheduler/start, or check the logs for the scheduler warning
Need a deep health checkGET /health?deep=true for component diagnostics; GET /metrics for Prometheus

When you contact support, include the scan ID and the X-Correlation-ID from the error — they let the team trace the exact request in the audit log. See Support.