BerriAI/litellm · error · ValueError
Custom secret manager client must be an instance of CustomSe
Error message
Custom secret manager client must be an instance of CustomSecretManager, got {type(client).__name__} What it means
Type guard in the CUSTOM key-manager branch: the configured client object is not an instance of CustomSecretManager, so it lacks the sync_read_secret interface the handler expects. The actual type name is reported.
Source
Thrown at litellm/secret_managers/secret_manager_handler.py:155
if secret is None:
raise ValueError(f"No secret found in CyberArk Secret Manager for {secret_name}")
except Exception as e:
print_verbose(f"An error occurred - {e}")
raise e
elif key_manager == KeyManagementSystem.CUSTOM.value:
# Check if client is a CustomSecretManager instance
from litellm.integrations.custom_secret_manager import CustomSecretManager
if isinstance(client, CustomSecretManager):
secret = client.sync_read_secret(
secret_name=secret_name,
optional_params=(key_management_settings.model_dump() if key_management_settings else None),
)
if secret is None:
raise ValueError(f"No secret found in Custom Secret Manager for {secret_name}")
else:
raise ValueError(
f"Custom secret manager client must be an instance of CustomSecretManager, got {type(client).__name__}"
)
elif key_manager == "local":
secret = os.getenv(secret_name)
else: # assume the default is infisicial client
secret = client.get_secret(secret_name).secret_value
return secret
View on GitHub (pinned to 77b7c6c40c)
Solutions
- Return an instance of a CustomSecretManager subclass from your loader, not {type(client).__name__}.
Defensive patterns
Strategy: type-guard
When it happens
Trigger: Thrown at litellm/secret_managers/secret_manager_handler.py:155 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of BerriAI/litellm@77b7c6c40c (2026-08-18).
Data as JSON: /api/errors/046521d04b1294ac.
Report an issue: GitHub.