router-for-me/CLIProxyAPI · error

invalid_request

invalid_request

Error message

failed to read Realtime client secret request: %w

What it means

Error "failed to read Realtime client secret request: %w" thrown in router-for-me/CLIProxyAPI.

Source

Thrown at internal/client/codex/live/client_secret.go:166

	}
	return time.Now()
}

func (s *clientSecretStore) removeExpiredLocked(now time.Time) {
	for token, entry := range s.entries {
		if !entry.expiresAt.After(now) {
			delete(s.entries, token)
		}
	}
}

func readClientSecretBody(body io.Reader) ([]byte, error) {
	if body == nil {
		return nil, nil
	}
	payload, errRead := io.ReadAll(io.LimitReader(body, clientSecretMaxBodySize+1))
	if errRead != nil {
		return nil, fmt.Errorf("failed to read Realtime client secret request: %w", errRead)
	}
	if len(payload) > clientSecretMaxBodySize {
		return nil, errBodyTooLarge
	}
	return payload, nil
}

func randomRealtimeID(prefix string, size int) (string, error) {
	payload := make([]byte, size)
	if _, errRead := rand.Read(payload); errRead != nil {
		return "", fmt.Errorf("generate Realtime identifier: %w", errRead)
	}
	return prefix + base64.RawURLEncoding.EncodeToString(payload), nil
}

// AuthenticateClientSecret validates a local ephemeral key when the request carries one.
func (h *Handler) AuthenticateClientSecret(request *http.Request) (ClientSecretAuthorization, bool, error) {
	token := bearerToken(request)

View on GitHub (pinned to 78f0c4079e)

Solutions

  1. Verify the request body is readable and within the allowed size limit.
  2. Check the wrapped error for body read failures (truncated or aborted request).

When it happens

Trigger: Thrown at internal/client/codex/live/client_secret.go:166 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of router-for-me/CLIProxyAPI@78f0c4079e (2026-08-15). Data as JSON: /api/errors/105881a25ea197a3. Report an issue: GitHub.