# At least one LLM key required OPENAI_API_KEY= ANTHROPIC_API_KEY= GOOGLE_API_KEY= DEFAULT_LLM_PROVIDER=anthropic # openai | anthropic | google # Pin a dated snapshot (e.g. an "...-2025-xx-xx" id) rather than a moving alias # so model upgrades don't silently change review output over time. DEFAULT_LLM_MODEL=claude-sonnet-4-5 DEFAULT_LLM_TEMPERATURE=0.0 # Best-effort reproducible sampling on OpenAI (ignored by Anthropic/Google). # Set to `none` to disable (blank is treated as unset and keeps the default). # Note: reasoning models (e.g. gpt-5*) still vary some. DEFAULT_LLM_SEED=7 # When false, the LLM may only reword scanner findings — it can't invent new # `*:llm-` findings, so the finding set is stable run-to-run. Set true for more # coverage at the cost of consistency. ENABLE_LLM_FINDINGS=false SQLITE_PATH=./data/state.sqlite # GitHub access (for reading PRs and posting the sticky comment) GITHUB_TOKEN= GITHUB_REPOSITORY= GITHUB_PR_NUMBER= # Infracost (cost agent). Set the key to enable cost review; leave it empty to # skip the cost agent entirely. INFRACOST_API_KEY= # Optional pre-built baseline JSON (base-ref breakdown). Leave empty to have the # agent generate it from the workspace's git history automatically. INFRACOST_BASELINE_PATH= # CI gating: critical | high | medium | low | info | none # "none" always exits 0; otherwise the run exits non-zero when a finding's # severity meets or exceeds this floor (the comment is still posted first). FAIL_ON_SEVERITY=none # Where the PR head is checked out (scanners run here); defaults to the CWD WORKSPACE_DIR=. # Optional observability LANGSMITH_API_KEY= LANGSMITH_TRACING=false LANGSMITH_PROJECT=terraform-review-agent LOG_LEVEL=INFO ENVIRONMENT=development # development | staging | production