Monitor credentials and secrets
Monitor secret storage, controlled disclosure, and encryption keys.
Monitor configuration can contain secrets: credentials embedded in HTTP and WebSocket URLs, HTTP query-parameter and header values, HTTP request bodies, UDP payloads, API-sequence secret variables, proxy credentials, and custom certificate bundles. This page explains how Status stores and reveals them, and how the deployment administrator manages the encryption keys.
How secrets behave in the console
Status encrypts stored request credentials. The monitor editor and API return
the fixed •••••• marker instead of stored values:
- Saving an edited monitor with the marker in place preserves the existing value.
- A new monitor or template must provide the real value.
- The marker covers full-credential fields such as proxy URLs and custom certificate bundles; leaving it in place during an edit keeps the bundle while allowing other settings to change.
Secret values are revealed only where a workflow creates or rotates them:
- a heartbeat push URL, shown once when the monitor is created or rotated;
- heartbeat URLs created by an import or template batch, shown and downloadable once;
- the shared or private worker credentials, shown once at generation;
- exported monitor packages, which intentionally contain request credentials so they can be restored elsewhere.
Treat export files and copied tokens like credentials: store them in access-controlled locations.
Workers receive decrypted settings only after worker authentication. Monitor failures are scrubbed of credential values before their messages are displayed or stored, so secrets do not appear in the console or diagnostics.
Manage the encryption keys
The deployment administrator controls the key ring that protects stored
credentials. Set MONITOR_ENCRYPTION_KEYS to a current-first, comma-separated
list:
MONITOR_ENCRYPTION_KEYS=2026-07:<base64-32-byte-key>,2026-01:<base64-32-byte-key>Key IDs may contain letters, numbers, ., _, and -. Every key must decode
to exactly 32 bytes, and IDs must be unique. Generate a key with:
openssl rand -base64 32When MONITOR_ENCRYPTION_KEYS is absent, the application derives a
backward-compatible key from NEXTAUTH_SECRET. Production installations should
configure a dedicated key ring: changing NEXTAUTH_SECRET otherwise also
changes the derived credential key.
Retain keys used by stored credentials
Keep every key referenced by stored credentials in the key ring, including keys needed by backups. Adding a key does not re-encrypt existing credentials. Losing every key named by a stored credential prevents those request credentials from being decrypted; they must be re-entered.