{# SETTINGS · System → CUSTOM PROVIDERS (Task 4). The operator-managed, open-ended set of provider credentials (name + base URL + masked API key), separate from the fixed built-in provider-key fields above. Persisted OUTSIDE the schema under `custom_providers` (app.settings) and preserved across every System save. This whole region is one HTMX swap target (#sys-custom-providers): adding or removing a provider POSTs and swaps the refreshed list back in. The stored API key is NEVER rendered — a configured key shows as the "•••• set" mask, exactly like the built-in secret fields. Context: custom_providers : [{id, name, base_url, has_key, key_display}] (masked) cp_added : name of a just-added provider (success flash) | None cp_removed : truthy if a provider was just removed cp_error : error string (add/remove failure) | None selected_key : current project key (kept on the POST query string) #}