Dashboard Authentication
Protect the CCS dashboard with optional username/password authentication. Authentication is still disabled by default, but the remote-access behavior is now much clearer than older CCS releases.CCS does not ship a default dashboard username or password.
Enable dashboard auth whenever the bind is reachable from another device,
including when you run
ccs config --host 0.0.0.0.Access Modes
When auth is disabled, remote users can still inspect read-only dashboard
surfaces, but write-capable routes stay locked to localhost until the host owner
runs
ccs config auth setup.
Quick Setup
Recommended Path
- prompts for username and password
- hashes the password with bcrypt before saving
- writes the result into
~/.ccs/config.yaml - preserves credentials if you later disable auth and want to re-enable it
Manual Configuration
- config.yaml
- Environment Variables
config.yaml.
Login Flow
When authentication is enabled:- Open the dashboard URL printed by
ccs config - If auth is configured correctly, CCS redirects you to the login page
- Enter username and password
- On success, CCS returns you to the original destination
- The session persists for the configured timeout (24 hours by default)
Remote Read-Only Fallback
When auth is disabled and the dashboard is reachable beyond localhost:- remote users can still open read-only dashboard views
- sensitive management routes stay localhost-only
- AI Provider management, CLIProxy auth/status helpers, and other write-capable endpoints reject non-loopback requests
Configuration Reference
Environment Variables
Security Notes
- CCS uses HTTP-only session cookies instead of
localStorage - Login attempts are rate-limited
- Passwords are stored as bcrypt hashes
- Remote write access fails closed when auth is disabled
Troubleshooting
Remote users see setup guidance instead of a login form
That means auth is enabled or intended, but the host has not finished configuration. Run:Remote dashboard is visible but read-only
That is expected when dashboard auth is disabled. Either:- keep it read-only for lightweight remote inspection, or
- run
ccs config auth setupon the host to unlock remote changes
”Too many login attempts”
Rate limiting triggered. Wait 15 minutes or restart the dashboard.Session expires unexpectedly
Increasesession_timeout_hours or check that the session secret is stable
between restarts.