SEC-005critical SeverityHardcoded Secrets & Credential Exposure
Supabase Service Role Key Excluded from Client Code
AI tools mix up the public anon key with the full-access service_role key, pasting the service key into client Supabase clients.
1-Click Fix Prompt for Cursor & Claude Code
Review my codebase for "Supabase Service Role Key Excluded from Client Code" (SEC-005). Issue: AI tools mix up the public anon key with the full-access service_role key, pasting the service key into client Supabase clients. Remediation required: Use only NEXT_PUBLIC_SUPABASE_ANON_KEY on the client. Restrict SUPABASE_SERVICE_ROLE_KEY to protected server API routes. Please: 1. Locate any occurrences of this issue across my repository. 2. Refactor the code to follow production standards without breaking existing functionality. 3. Provide a clear command or step to test and verify the fix.
Why AI Assistants Write This Bug
AI tools mix up the public anon key with the full-access service_role key, pasting the service key into client Supabase clients.
AI code generation prioritizes immediate syntax execution over production edge cases. When an assistant hits an undefined variable or strict type error, it frequently takes the path of least resistance rather than implementing standard pre-launch security patterns.
Code Comparison
Common AI Code PatternVulnerable
// Vulnerable AI-generated pattern for: Supabase Service Role Key Excluded from Client Code
// Leaking sensitive key in client-callable code
export const STRIPE_KEY = "sk_live_51OzRealProductionKey12345";
export async function checkout() {
// Client bundle exposes secret key to Chrome DevTools
}Launch-Ready Fix
// Production-ready fix for: Supabase Service Role Key Excluded from Client Code
// Stored strictly in server-side environment variable
const stripeSecretKey = process.env.STRIPE_SECRET_KEY;
if (!stripeSecretKey) {
throw new Error("Missing STRIPE_SECRET_KEY in server environment");
}
// Invoked strictly inside server route or Server Action
export const stripe = new Stripe(stripeSecretKey);Remediation & Verification Checklist
Remediation: Use only NEXT_PUBLIC_SUPABASE_ANON_KEY on the client. Restrict SUPABASE_SERVICE_ROLE_KEY to protected server API routes.
- Search your codebase for pattern matching "Supabase Service Role Key Excluded from Client Code".
- Apply the recommended remediation: Use only NEXT_PUBLIC_SUPABASE_ANON_KEY on the client. Restrict SUPABASE_SERVICE_ROLE_KEY to protected server API routes.
- Run local build and test commands to ensure no regressions.
- Verify in your browser or with curl that the issue is resolved.
Audit All 108 Checks in One Click
Checking items one by one takes hours. Let us do it in 2 minutes.
With the Founder Pass ($15 one-time), we automatically scan your repository for this issue, plus all other 107 launch checks across secrets, Stripe webhooks, Supabase RLS, and security headers.