# Symptom
A recently added page or API route is accessible without signing in, while older routes are protected.

# Confirm the cause
1. Read your middleware. If it says `if (isProtectedRoute(req)) { await auth.protect() }` with a list of protected paths, you have an allowlist. New routes are born unprotected.
2. Audit: pick three routes you believe are protected and request them with no session. Any 200 on a page that should require auth confirms it.

# Fix
- Invert the check: list only public routes, protect everything else.
  ```ts
  const isPublicRoute = createRouteMatcher(['/sign-in(.*)', '/sign-up(.*)', '/'])
  export default clerkMiddleware(async (auth, req) => {
    if (!isPublicRoute(req)) { await auth.protect() }
  })
  ```
- After inverting, re-audit the same three routes plus every route added in the last month.
- Keep server-side `auth()` checks inside route handlers and server components as a second layer; the middleware is not the only gate.

# Verify
Request every route in your sitemap signed-out. Protected pages redirect to sign-in; only the public list returns 200.