The admin and login links pointed at VITE_API_URL (http://localhost:3000) while the app runs at http://127.0.0.1:5173. Browsers keep cookies for the two apart, so logging in there left the app logged out. In development these links now go through Vite's proxy, as GraphQL requests already did. Logging in through the proxy also failed Django's CSRF origin check, because the proxy rewrote the Host header. Keep the app's Host for the local backend; a remote VITE_DEV_API_PROXY still gets its own. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>