Skip to content

Strip Error Catalog

Strip Error Catalog

Surface-level errors operators and end users see most often. Strip is mostly a translation layer to sirloin, so most failures are either auth/authz or upstream gRPC. Codes are HTTP unless noted.

#SymptomWhere it firesLikely causeFirst action
1Boot panic: port cannot be emptyconfig.ValidateConfig (ErrEmptyPort)STRIP_PORT unset and default warning was treated as fatal in callerSet STRIP_PORT=:8080, redeploy.
2Boot panic: sirloin gRPC host cannot be emptyconfig.ValidateConfig (ErrEmptySirloinHost)STRIP_SIRLOIN_GRPC_HOST unsetSet host (e.g. sirloin:50051).
3Boot panic: clerk secret key required …ValidateConfig (ErrClerkSecretRequired)Non-dev stage missing STRIP_CLERK_SECRET_KEYInject Clerk secret from secret store.
4Boot panic: invalid stage "..."ValidateConfig (ErrInvalidStage)Bad STRIP_STAGE valueUse production/staging/sandbox/development.
5302 redirect to /login on every pageAuthMiddleware.RequireAuthMissing/expired Clerk session cookie __sessionRe-authenticate; check Clerk domain cookie scope.
6401 “invalid session” / loop on /sso-callbackClerk verification failureWrong STRIP_CLERK_DOMAIN / publishable key mismatchVerify Clerk env, ensure STRIP_STAGE matches Clerk environment.
7403 forbidden Templ pageAuthorizationMiddleware.RequirePermissionUser lacks RBAC perm (view:audit_logs, manage:roles, etc.)Confirm role assignment in sirloin / Clerk metadata.
8403 JSON {"error":"permission_denied"} with HX-Reswap: noneSame middleware, HTMX branchSame as above for HTMX requestsSame. UI shows toast instead of redirect.
9429 “Too many requests, please try again later”Global limiter.New keyed on real client IPCaller exceeded globalRateLimitMax per globalRateLimitWindowThrottle caller; check getRealClientIP correctness behind proxies.
10429 on /login onlyauthLimiter chainLogin brute-force or refresh stormRate-limit upstream; investigate X-Forwarded-For.
11500 “Failed to fetch popular examples” / “Failed to fetch shop VIs” / “Failed to fetch user details”sirloin gRPC Strip* RPC erroredsirloin down, network blip, or upstream panicCheck sirloin health, gRPC keepalive logs.
12500 with empty bodyrecover.New middleware caught panicNil deref / template render errorCheck stack trace in logs (EnableStackTrace: true).
13400 “User ID is required”HandleUserDetails and friendsMissing :id in path/formCaller bug; verify HTMX target URL.
14”SECURITY WARNING: Authentication bypassed via UUID” logRequireAuth bypass branchX-Auth-Bypass or ?auth= matched STRIP_AUTH_BYPASS_UUIDExpected only in dev; investigate immediately if logged in prod.
15”SECURITY WARNING: Skipping authentication - development mode without Clerk” logRequireAuth dev fallbackStage==development and clerkService==nilLocal dev only; treat as blocker outside dev.
16Browser shows “Forbidden” full pagerenderForbiddenPageSame as #7 for non-HTMX navSame triage as #7.
17Connection refused / “transport: connection error” in logsgRPC dial to sirloin failssirloin not reachable, DNS, mTLS offVerify STRIP_SIRLOIN_GRPC_HOST, network, sirloin readiness.
18Slow gRPC, timeouts every 30–40sgRPC keepalive (30s/10s) tearing dead connsNetwork instability, sirloin GC pauseCheck sirloin metrics; tune keepalive only as last resort.
19Static asset 404 under /assets/...Asset bundler output missingmake build-ui skipped or asset version staleRe-run make build-ui, redeploy.
20CSP/MIME warnings in browser consolehelmetMiddlewareForStage policyInline script / unbundled font violating production CSPBundle asset properly; do not relax CSP.
21”Image CGI URL not set” warning at bootconfig.NewConfigSTRIP_IMAGE_CGI_URL emptySet CGI URL; thumbnails will be broken otherwise.
22Ask Strip chat returns generic error / disabledSTRIP_OPENROUTER_API_KEY emptyOpenRouter not configuredProvision key, redeploy.
23Shop-VI links missing on listingSTRIP_BRISKET_BASE_URL empty (warned at boot)brisket URL unsetSet STRIP_BRISKET_BASE_URL.
24/api/auth/mcp-token returns wrong server URLHandleMCPToken derives the (legacy) flank MCP URL by suffix swapSTRIP_MCP_SERVER_URL doesn’t end in /foxy360/mcpSet canonical MCP URL ending in /foxy360/mcp. The derived flank MCP surface is legacy/being retired (workflow tooling moved to brain).
25Cookie not set on dashboard after login__session cookie has Secure: true outside devBrowser blocks insecure cookie over plain HTTPRun staging/prod over HTTPS only.

Triage flow

flowchart TD
A[User report] --> B{Boot vs Runtime?}
B -- Boot --> C[Check ErrEmpty* / ErrInvalidStage / ErrClerkSecretRequired]
B -- Runtime --> D{HTTP code?}
D -- 4xx --> E[Auth/Authz first: cookie + perm]
D -- 5xx --> F[Check sirloin gRPC health]
E --> G[Check SECURITY WARNING logs]
F --> H[recover stack trace in logs]