Tencent/WeKnora · error
failed to generate state: %w
Error message
failed to generate state: %w
What it means
Returned by StartAuthorization when transport.GenerateState fails to produce the OAuth CSRF state token (typically entropy/source failure in the OAuth library). Without a state token the authorization-code flow cannot start securely, so the flow aborts before building the auth URL.
Source
Thrown at internal/mcp/oauth_manager.go:129
}
if err := m.repo.SaveClient(ctx, &types.MCPOAuthClient{
TenantID: tenantID,
ServiceID: service.ID,
ClientID: clientID,
RedirectURI: redirectURI,
}); err != nil {
logger.GetLogger(ctx).Warnf("failed to persist MCP oauth client: %v", err)
}
}
verifier, err := transport.GenerateCodeVerifier()
if err != nil {
return "", "", fmt.Errorf("failed to generate PKCE verifier: %w", err)
}
challenge := transport.GenerateCodeChallenge(verifier)
state, err := transport.GenerateState()
if err != nil {
return "", "", fmt.Errorf("failed to generate state: %w", err)
}
authURL, err := h.GetAuthorizationURL(ctx, state, challenge)
if err != nil {
return "", "", fmt.Errorf("failed to build authorization URL: %w", err)
}
if err := m.states.Put(ctx, state, OAuthState{
TenantID: tenantID,
UserID: principal.StorageID(),
Principal: principal,
ServiceID: service.ID,
CodeVerifier: verifier,
ClientID: h.GetClientID(),
RedirectURI: redirectURI,
FrontendRedirect: frontendRedirect,
}); err != nil {
return "", "", fmt.Errorf("failed to persist authorization state: %w", err)View on GitHub (pinned to 988cbb0330)
Solutions
- Check the system's cryptographic entropy source (crypto/rand availability)
- Retry the authorization start; the failure is usually transient
- Inspect the OAuth transport library version for known issues
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at internal/mcp/oauth_manager.go:129 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of Tencent/WeKnora@988cbb0330 (2026-09-02).
Data as JSON: /api/errors/eb74047aa8c6c105.
Report an issue: GitHub.