The secrets endpoint was flattening nested maps (e.g., cloudflare.apiToken) to a single "********" string. The UI checks for nested keys to determine if credentials are configured, so the structure must be preserved. Now redactSecrets() recursively walks the map and only redacts leaf values. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>