{"record":{"id":"fc2bdeaf2cad3d6f","repo":"tirth8205/code-review-graph","slug":"voyage-api-key-environment-variable-is-required-fo","errorCode":null,"errorMessage":"VOYAGE_API_KEY environment variable is required for the Voyage embedding provider.","messagePattern":"VOYAGE_API_KEY environment variable is required for the Voyage embedding provider\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"code_review_graph/embeddings.py","lineNumber":965,"sourceCode":"            model=resolved_model,\n            dimension=dimension,\n            batch_size=batch_size,\n        )\n\n    if name == \"minimax\":\n        api_key = os.environ.get(\"MINIMAX_API_KEY\")\n        if not api_key:\n            raise ValueError(\n                \"MINIMAX_API_KEY environment variable is required for \"\n                \"the MiniMax embedding provider.\"\n            )\n        _warn_cloud_egress(\"minimax\")\n        return MiniMaxEmbeddingProvider(api_key=api_key)\n\n    if name == \"voyage\":\n        api_key = os.environ.get(\"VOYAGE_API_KEY\")\n        if not api_key:\n            raise ValueError(\n                \"VOYAGE_API_KEY environment variable is required for \"\n                \"the Voyage embedding provider.\"\n            )\n        base_url = (\n            os.environ.get(\"CRG_VOYAGE_BASE_URL\")\n            or VoyageEmbeddingProvider._DEFAULT_BASE_URL\n        )\n        resolved_model = (\n            model\n            or os.environ.get(\"CRG_VOYAGE_MODEL\")\n            or VoyageEmbeddingProvider._DEFAULT_MODEL\n        )\n        dim_env = os.environ.get(\"CRG_VOYAGE_OUTPUT_DIMENSION\")\n        output_dimension = int(dim_env) if dim_env else VoyageEmbeddingProvider._DEFAULT_DIMENSION\n        output_dtype = (\n            os.environ.get(\"CRG_VOYAGE_OUTPUT_DTYPE\")\n            or VoyageEmbeddingProvider._DEFAULT_OUTPUT_DTYPE\n        )","sourceCodeStart":947,"sourceCodeEnd":983,"githubUrl":"https://github.com/tirth8205/code-review-graph/blob/b58668751ab0c7670c078cf7cbd4d1f5b8e54f81/code_review_graph/embeddings.py#L947-L983","documentation":"The voyage provider requires VOYAGE_API_KEY. Optional knobs (CRG_VOYAGE_BASE_URL, etc.) have defaults, but the key does not.","triggerScenarios":"Passing provider='voyage' to get_provider() with VOYAGE_API_KEY unset or empty.","commonSituations":"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).","solutions":["export VOYAGE_API_KEY=<your key>","Check you used the unprefixed name, not CRG_VOYAGE_API_KEY","Verify the var reaches the process: printenv VOYAGE_API_KEY"],"exampleFix":"# before\nexport CRG_VOYAGE_API_KEY=pa-...\n# after\nexport VOYAGE_API_KEY=pa-...","handlingStrategy":"validation","validationCode":"if not os.environ.get(\"VOYAGE_API_KEY\"):\n    raise RuntimeError(\"VOYAGE_API_KEY not set; cannot use voyage provider\")","typeGuard":null,"tryCatchPattern":"try:\n    provider = get_provider(\"voyage\")\nexcept ValueError as e:\n    if \"VOYAGE_API_KEY\" in str(e):\n        provider = get_provider(\"local\")\n    else:\n        raise","preventionTips":["Set VOYAGE_API_KEY (unprefixed) in all shells/CI jobs that embed","Preflight-check the key before long embedding runs","Don't confuse it with CRG_VOYAGE_* optional knobs"],"tags":["voyage","embeddings","env-var","config"],"backgroundTag":"missing-env-var","analyzedSha":"b58668751ab0c7670c078cf7cbd4d1f5b8e54f81","analyzedAt":"2026-08-28T13:19:08.966Z","schemaVersion":2},"datasetVersion":"2026-08-28T16:17:29.566Z"}