Skip to content

Authentication health

Engine health answers more than whether a CLI executable exists. ChannelGate checks the configured engine, resolved authentication, and runtime availability so operators can distinguish missing tools from expired login or provider failure.

Use Settings → System, the runtime status in Settings → Access & security, or the chat /status command. An authenticated /api/health response includes registered engine health and enablement. See engine authentication for supported login sources and precedence.

A container uses the gateway’s configured credential relay; it does not inherit the operator’s whole login store merely because the CLI is installed. The current turn’s resolved authentication and mount facts are the useful evidence.

An hourly watch checks the resolved Claude login. While it is missing or within the expiry warning window, it can DM administrators. Alerts are limited to once per UTC day per message class, with durable markers that survive restarts. A healthy login resets the alert class.

The first watch is delayed until after boot so the chat connection can establish. The alert contains the kind, expiry, location context, and remedy, never token material. Repair requires the operator’s appropriate host-side login or configured credential; the next turn can pick up the repaired login without a daemon restart.

If a task unexpectedly switches engines, inspect the original engine’s health before changing models. Restore the relevant account, confirm the next small turn, then check whether failover has returned according to the configured recovery policy.

The proactive expiry watch described here is for Claude. Do not infer identical Codex expiry alerts. An enabled engine can still be temporarily unavailable, and a healthy local login does not prove a particular model is entitled to the account.

A successful cross-engine failover can leave the existing thread on the engine that answered it. Repairing the original login does not automatically switch that thread back; use the model/engine control deliberately when you want to change it.