tirth8205/code-review-graph · error · ValueError

VOYAGE_API_KEY environment variable is required for the Voya

Error message

VOYAGE_API_KEY environment variable is required for the Voyage embedding provider.

What it means

The voyage provider requires VOYAGE_API_KEY. Optional knobs (CRG_VOYAGE_BASE_URL, etc.) have defaults, but the key does not.

Source

Thrown at code_review_graph/embeddings.py:965

            model=resolved_model,
            dimension=dimension,
            batch_size=batch_size,
        )

    if name == "minimax":
        api_key = os.environ.get("MINIMAX_API_KEY")
        if not api_key:
            raise ValueError(
                "MINIMAX_API_KEY environment variable is required for "
                "the MiniMax embedding provider."
            )
        _warn_cloud_egress("minimax")
        return MiniMaxEmbeddingProvider(api_key=api_key)

    if name == "voyage":
        api_key = os.environ.get("VOYAGE_API_KEY")
        if not api_key:
            raise ValueError(
                "VOYAGE_API_KEY environment variable is required for "
                "the Voyage embedding provider."
            )
        base_url = (
            os.environ.get("CRG_VOYAGE_BASE_URL")
            or VoyageEmbeddingProvider._DEFAULT_BASE_URL
        )
        resolved_model = (
            model
            or os.environ.get("CRG_VOYAGE_MODEL")
            or VoyageEmbeddingProvider._DEFAULT_MODEL
        )
        dim_env = os.environ.get("CRG_VOYAGE_OUTPUT_DIMENSION")
        output_dimension = int(dim_env) if dim_env else VoyageEmbeddingProvider._DEFAULT_DIMENSION
        output_dtype = (
            os.environ.get("CRG_VOYAGE_OUTPUT_DTYPE")
            or VoyageEmbeddingProvider._DEFAULT_OUTPUT_DTYPE
        )

View on GitHub (pinned to b58668751a)

Solutions

  1. export VOYAGE_API_KEY=<your key>
  2. Check you used the unprefixed name, not CRG_VOYAGE_API_KEY
  3. Verify the var reaches the process: printenv VOYAGE_API_KEY

Example fix

# before
export CRG_VOYAGE_API_KEY=pa-...
# after
export VOYAGE_API_KEY=pa-...
Defensive patterns

Strategy: validation

Validate before calling

if not os.environ.get("VOYAGE_API_KEY"):
    raise RuntimeError("VOYAGE_API_KEY not set; cannot use voyage provider")

Try / catch

try:
    provider = get_provider("voyage")
except ValueError as e:
    if "VOYAGE_API_KEY" in str(e):
        provider = get_provider("local")
    else:
        raise

Prevention

When it happens

Trigger: Passing provider='voyage' to get_provider() with VOYAGE_API_KEY unset or empty.

Common situations: Same as other missing-key cases: unsourced rc files, missing secret in CI/containers, or setting CRG_VOYAGE_API_KEY instead of VOYAGE_API_KEY (the unprefixed name is required).

Understand the failure class

Background: "environment variable is not set" and "Missing keys in environment" errors: what missing required env var messages mean and how to fix them — this error's family across 28 libraries.

Related errors


AI-assisted analysis of tirth8205/code-review-graph@b58668751a (2026-08-28). Data as JSON: /api/errors/fc2bdeaf2cad3d6f. Report an issue: GitHub.