BerriAI/litellm · error · ValueError

Failed to verify new secret {new_secret_name}

Error message

Failed to verify new secret {new_secret_name}

What it means

Raised after async_read_secret returns None for a just-written rotated secret, meaning the write path reported success but the new secret cannot be read back from the backend. Fires when the provider eventually-consistent store has not exposed the new secret yet, or the create call silently failed.

Source

Thrown at litellm/secret_managers/base_secret_manager.py:167

            # Create new secret with new name and value
            create_response: Final = await self.async_write_secret(
                secret_name=new_secret_name,
                secret_value=new_secret_value,
                description=f"Rotated from {current_secret_name}",
                optional_params=optional_params,
                timeout=timeout,
            )

            # Verify new secret was created successfully
            new_secret: Final = await self.async_read_secret(
                secret_name=new_secret_name,
                optional_params=optional_params,
                timeout=timeout,
            )

            if new_secret is None:
                raise ValueError(f"Failed to verify new secret {new_secret_name}")

            # If everything is successful, delete the old secret
            await self.async_delete_secret(
                secret_name=current_secret_name,
                recovery_window_in_days=7,  # Keep for recovery if needed
                optional_params=optional_params,
                timeout=timeout,
            )

            return create_response

        except httpx.HTTPStatusError as err:
            verbose_logger.exception(
                "Error rotating secret in AWS Secrets Manager: %s",
                str(err.response.text),
            )
            raise ValueError(f"HTTP error occurred: {err.response.text}")
        except httpx.TimeoutException:

View on GitHub (pinned to 77b7c6c40c)

Solutions

  1. Read back {new_secret_name} after writing and confirm the stored value matches what was written.
  2. Check write permissions and backend errors during the verify step; retry the write-then-verify cycle.
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at litellm/secret_managers/base_secret_manager.py:167 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/d94993937f4cef00. Report an issue: GitHub.