{"record":{"id":"1bed3e918dbe84e9","repo":"BerriAI/litellm","slug":"no-secret-found-in-custom-secret-manager-for-secr","errorCode":null,"errorMessage":"No secret found in Custom Secret Manager for {secret_name}","messagePattern":"No secret found in Custom Secret Manager for (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"litellm/secret_managers/secret_manager_handler.py","lineNumber":153,"sourceCode":"        try:\n            secret = client.sync_read_secret(secret_name=secret_name)\n            if secret is None:\n                raise ValueError(f\"No secret found in CyberArk Secret Manager for {secret_name}\")\n        except Exception as e:\n            print_verbose(f\"An error occurred - {e}\")\n            raise e\n\n    elif key_manager == KeyManagementSystem.CUSTOM.value:\n        # Check if client is a CustomSecretManager instance\n        from litellm.integrations.custom_secret_manager import CustomSecretManager\n\n        if isinstance(client, CustomSecretManager):\n            secret = client.sync_read_secret(\n                secret_name=secret_name,\n                optional_params=(key_management_settings.model_dump() if key_management_settings else None),\n            )\n            if secret is None:\n                raise ValueError(f\"No secret found in Custom Secret Manager for {secret_name}\")\n        else:\n            raise ValueError(\n                f\"Custom secret manager client must be an instance of CustomSecretManager, got {type(client).__name__}\"\n            )\n\n    elif key_manager == \"local\":\n        secret = os.getenv(secret_name)\n\n    else:  # assume the default is infisicial client\n        secret = client.get_secret(secret_name).secret_value\n\n    return secret\n","sourceCodeStart":135,"sourceCodeEnd":166,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/secret_managers/secret_manager_handler.py#L135-L166","documentation":"Post-fetch check in the CUSTOM secret-manager branch of get_secret: the user-supplied CustomSecretManager returned None for secret_name. LiteLLM treats a custom manager's None as 'not found' and raises rather than silently passing empty credentials.","triggerScenarios":"Thrown at litellm/secret_managers/secret_manager_handler.py:153 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Confirm {secret_name} is present in your custom secret store and that the CustomSecretManager read method returns a value."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8","analyzedAt":"2026-08-18T11:44:31.656Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}