JuliusBrussee/caveman · error

cachebench: Gemini API key unavailable

Error message

cachebench: Gemini API key unavailable

What it means

Error "cachebench: Gemini API key unavailable" thrown in JuliusBrussee/caveman.

Source

Thrown at cacheengine/cachebench/replay_http.go:233

	return &resolved, nil
}

func (transport *HTTPReplayTransport) authorize(provider, region string, request *http.Request, body []byte) error {
	switch provider {
	case "openai":
		if !validReplaySecret(transport.credentials.OpenAIAPIKey) {
			return errors.New("cachebench: OpenAI API key unavailable")
		}
		request.Header.Set("authorization", "Bearer "+transport.credentials.OpenAIAPIKey)
	case "anthropic":
		if !validReplaySecret(transport.credentials.AnthropicAPIKey) {
			return errors.New("cachebench: Anthropic API key unavailable")
		}
		request.Header.Set("x-api-key", transport.credentials.AnthropicAPIKey)
		request.Header.Set("anthropic-version", "2023-06-01")
	case "gemini":
		if !validReplaySecret(transport.credentials.GeminiAPIKey) {
			return errors.New("cachebench: Gemini API key unavailable")
		}
		request.Header.Set("x-goog-api-key", transport.credentials.GeminiAPIKey)
	case "bedrock":
		if validReplaySecret(transport.credentials.BedrockAPIKey) {
			request.Header.Set("authorization", "Bearer "+transport.credentials.BedrockAPIKey)
			return nil
		}
		if !validAWSRegion(region) || !transport.credentials.AWS.Valid() || !validReplaySecret(transport.credentials.AWS.AccessKeyID) || !validReplaySecret(transport.credentials.AWS.SecretAccessKey) || transport.credentials.AWS.SessionToken != "" && !validReplaySecret(transport.credentials.AWS.SessionToken) {
			return errors.New("cachebench: Bedrock credentials unavailable")
		}
		signer := awssig.Signer{Region: region, Service: "bedrock"}
		if err := signer.Sign(request, transport.credentials.AWS, awssig.HashPayload(body), time.Now().UTC()); err != nil {
			return errors.New("cachebench: Bedrock request signing failed")
		}
	default:
		return errors.New("cachebench: unsupported replay provider")
	}
	return nil

View on GitHub (pinned to 27d5a3981a)

Solutions

  1. Set GEMINI_API_KEY for the replay.

When it happens

Trigger: Thrown at cacheengine/cachebench/replay_http.go:233 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of JuliusBrussee/caveman@27d5a3981a (2026-08-15). Data as JSON: /api/errors/d32f20216c78189b. Report an issue: GitHub.