JuliusBrussee/caveman · error
cachebench: unsupported replay provider
Error message
cachebench: unsupported replay provider
What it means
authorize's provider switch fell through to its default case, meaning the provider string matched none of openai/anthropic/gemini/bedrock. Because Send validates the provider with validBoundedText (not against the known set) before calling authorize, this fires when the bounded string names an unknown provider that endpoint() happened to accept via a configured baseURL — a defensive backstop against replaying to an unauthenticated provider.
Solutions
- Fix the provider string before it reaches authorize
- Ensure the provider allowlist in endpoint() and authorize() stays in sync
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at cacheengine/cachebench/replay_http.go:249 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of JuliusBrussee/caveman@766dce6b13 (2026-08-18).
Data as JSON: /api/errors/d4995405f5329aac.
Report an issue: GitHub.
Appendix: source
Thrown at cacheengine/cachebench/replay_http.go:249
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
}
func validateReplayBaseURL(raw string, allowInsecureLoopback bool) (*url.URL, error) {
parsed, err := url.Parse(strings.TrimSpace(raw))
if err != nil || parsed.Host == "" || parsed.User != nil || parsed.RawQuery != "" || parsed.Fragment != "" {
return nil, errors.New("invalid absolute base URL")
}
if parsed.Scheme == "https" {
return parsed, nil
}
if parsed.Scheme == "http" && allowInsecureLoopback && isLoopbackHost(parsed.Hostname()) {
return parsed, nil
}
return nil, errors.New("HTTPS required; HTTP is test-only on explicit loopback")
}
View on GitHub (pinned to 766dce6b13)