{"record":{"id":"919d7cd7c6b8cad5","repo":"BerriAI/litellm","slug":"google-secret-manager-requires-an-enterprise-licen","errorCode":null,"errorMessage":"Google Secret Manager requires an Enterprise License {CommonProxyErrors.not_premium_user.value}","messagePattern":"Google Secret Manager requires an Enterprise License (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"litellm/secret_managers/google_secret_manager.py","lineNumber":28,"sourceCode":"from litellm.llms.custom_httpx.http_handler import _get_httpx_client\nfrom litellm.proxy._types import CommonProxyErrors, KeyManagementSystem\n\n\nclass GoogleSecretManager(GCSBucketBase):\n    def __init__(\n        self,\n        refresh_interval: int | None = SECRET_MANAGER_REFRESH_INTERVAL,\n        always_read_secret_manager: bool | None = False,\n    ) -> None:\n        \"\"\"\n        Args:\n            refresh_interval (int, optional): The refresh interval in seconds. Defaults to 86400. (24 hours)\n            always_read_secret_manager (bool, optional): Whether to always read from the secret manager. Defaults to False. Since we do want to cache values\n        \"\"\"\n        from litellm.proxy.proxy_server import premium_user\n\n        if premium_user is not True:\n            raise ValueError(\n                f\"Google Secret Manager requires an Enterprise License {CommonProxyErrors.not_premium_user.value}\"\n            )\n        super().__init__()\n        self.PROJECT_ID = os.environ.get(\"GOOGLE_SECRET_MANAGER_PROJECT_ID\", None)\n        if self.PROJECT_ID is None:\n            raise ValueError(\n                \"Google Secret Manager requires a project ID, please set 'GOOGLE_SECRET_MANAGER_PROJECT_ID' in your .env\"\n            )\n        self.sync_httpx_client = _get_httpx_client()\n        litellm.secret_manager_client = self\n        litellm._key_management_system = KeyManagementSystem.GOOGLE_SECRET_MANAGER\n        _refresh_interval = os.environ.get(\"GOOGLE_SECRET_MANAGER_REFRESH_INTERVAL\", refresh_interval)\n        _refresh_interval = int(_refresh_interval) if _refresh_interval else refresh_interval\n        self.cache = InMemoryCache(default_ttl=_refresh_interval)  # store in memory for 1 day\n\n        _always_read_secret_manager: Final = os.environ.get(\n            \"GOOGLE_SECRET_MANAGER_ALWAYS_READ_SECRET_MANAGER\",\n        )","sourceCodeStart":10,"sourceCodeEnd":46,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/secret_managers/google_secret_manager.py#L10-L46","documentation":"Constructor licensing gate for GoogleSecretManager: it imports premium_user from the proxy server and, if it is not True, refuses to construct the manager because Google Secret Manager is gated behind an Enterprise License. Not an authentication or Google-side failure.","triggerScenarios":"Thrown at litellm/secret_managers/google_secret_manager.py:28 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set a valid LITELLM_LICENSE (Enterprise) to enable Google Secret Manager.","Otherwise choose a non-enterprise secret manager backend."],"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-14T00:17:10.932Z"}