Skip to content

Configuration Reference

skill-reach can be configured via a project-local reach.toml file, environment variables, or CLI arguments.

When you run any reach command, it loads the bundled base configuration, overlays your project-level reach.toml (if present), and applies any environment variables or CLI flags passed at runtime.

To customize settings for your repository, copy the included template to your project root (which is gitignored by default so your local paths and credentials remain private):

cp reach.example.toml reach.toml

The reach.toml Specification

Place a reach.toml file in your repository root, or specify a custom path with --config <path>. All sections and keys are optional—include only the settings you want to override from reach.example.toml:

[general]
default_agent = "antigravity-cli"

[catalog]
# mode = "neighborhood"  # Assembly strategy: all, neighborhood, singleton, sweep
rivals = 10              # Number of competitor skills sampled around the target
scorer = "hybrid"        # Rival selection metric: hybrid, dense, bm25
seed = 0                 # Deterministic seed for reproducible catalog sampling
size = 20                # Total resident skills installed per probe trial

[check]
budget = 50              # Probe limit budget for Stage 2 empirical evaluation
max_misroute = 0.10      # Maximum permitted fraction of misrouted queries
min_accuracy = 0.80      # Minimum overall routing accuracy (0.0 - 1.0)
min_recall = 0.80        # Minimum recall rate for target skills (0.0 - 1.0)
# Optional multi-step trajectory quality thresholds (unset / None by default):
# max_redundancy = 0.25
# min_efficiency = 0.80
# min_entrypoint = 0.80
# min_f1 = 0.85
# min_reachability = 0.90
since = "HEAD~1"         # Default git base reference when running --changed
strict = true            # When true, Stage 1 static lint warnings fail the build

[discovery]
# Supports "." (single skill at root), "skills" (generic project folder), explicit
# paths (e.g. ".agents/skills"), or client profile names ("agents", "antigravity-cli",
# "antigravity-sdk", "claude-code", "codex", "copilot", "cursor", "github", "goose", "pi").
precedence = [
    ".",
    "skills",
    ".agents/skills",
    "claude-code",
    "cursor",
    "github",
    "pi",
    "goose",
]

[lint]
max_description_length = 1024
max_name_length = 64
min_description_length = 20
mutual_handoff_lexical_threshold = 0.35
mutual_handoff_similarity_threshold = 0.75

[lint.rules]
catalog-budget-overflow = "warn"
description-too-short = "warn"
duplicate-capability = "warn"
duplicate-name = "error"
empty-skill-directory = "info"
invalid-name-format = "error"
invalid-yaml = "error"
listing-overflow = "warn"
lockfile-drift = "info"
missing-description = "error"
missing-mutual-handoff = "warn"
missing-name = "error"
name-mismatch = "error"
reserved-name-collision = "warn"
unbounded-attractor = "warn"
unknown-skill-reference = "warn"
unresolved-declared-dependency = "warn"
unresolved-placeholder = "warn"

[plan]
# Mode-dependent default when omitted: 5 (formal eval/check/diff), 3 (quick eval), 1 (sweep/keyword)
# attempts = 5
backoff_s = 5.0
pause_s = 0.0
retries = 2

[runtime]
early_exit = true        # Abort multi-turn execution immediately when target skill is observed
max_turns = 3            # Maximum turns for multi-turn evaluations
timeout_s = 200          # Maximum seconds to wait for an agent probe response

# Bundled Agent Profiles (customizable per agent under [agents.<name>])
[agents.antigravity-cli]
default_model = "gemini-3.8-flash"
models = [
    "gemini-3.8-flash",
    "gemini-3.7-flash",
    "gemini-3.6-flash",
    "gemini-3.5-flash",
    "gemini-3.5-flash-lite",
    "gemini-3.1-pro",
    "gemini-3.1-pro-preview",
    "gemini-2.5-flash",
    "gemini-2.5-pro",
]
skills_dir = ".agents/skills"
user_skills_dir = ".agents/skills"

[agents.antigravity-sdk]
default_model = "gemini-3.8-flash"
models = [
    "gemini-3.8-flash",
    "gemini-3.7-flash",
    "gemini-3.6-flash",
    "gemini-3.5-flash",
    "gemini-3.5-flash-lite",
    "gemini-3.1-pro",
    "gemini-3.1-pro-preview",
    "gemini-2.5-flash",
    "gemini-2.5-pro",
]
skills_dir = ".agents/skills"

[agents.claude-code]
default_model = "claude-sonnet-5"
models = ["claude-sonnet-5", "claude-opus-5", "claude-haiku-4-5"]
skills_dir = ".claude/skills"
user_skills_dir = ".claude/skills"

[agents.goose]
default_model = "gemini-3.8-flash"
models = ["gemini-3.8-flash", "gemini-3.7-flash", "gemini-3.6-flash", "gemini-3.1-flash-lite"]
skills_dir = ".agents/skills"
user_skills_dir = ".agents/skills"

[agents.pi]
default_model = "gemini-3.8-flash"
default_provider = "google"
models = [
    "gemini-3.8-flash",
    "gemini-3.7-flash",
    "gemini-3.6-flash",
    "gemini-3.5-flash",
    "gemini-3.5-flash-lite",
    "gemini-3.1-pro",
    "gemini-3.1-pro-preview",
    "gemini-2.5-flash",
    "gemini-2.5-pro",
]
skills_dir = ".pi/skills"
user_skills_dir = ".pi/agent/skills"

# Model Context Windows & Listing Budgets (dots in model names replaced with hyphens)
[models.gemini-3-8-flash]
effort = "low"

[models.claude-sonnet-5]
chars_per_token = 3.0
completion_window = 200_000
context_window = 1_000_000
effort = "low"

Sections & Options Reference

[agents.<name>]

Configures built-in or custom agent runtime profiles (AgentProfile), including supported model identifiers and project/user skill discovery directories. Note that CLI binary overrides (executable) belong under [runtime.options], not [agents.<name>].

Key Type Default Description
default_model String "" Default model identifier used when probing with this agent runtime.
default_provider String / None None Optional default model provider name (e.g. "google" for pi).
models Sequence[String] () Model identifiers supported by this agent runtime for --model auto-routing.
skills_dir String "" Relative project workspace directory where this agent discovers resident skills.
user_skills_dir String / None None Relative path under ~ where this agent discovers user-global skills when --global is on.

[catalog]

Controls how competing skills are selected and installed into the active catalog during empirical probes.

Key Type Default Description
mode String "neighborhood" Assembly mode: all (install whole catalog), neighborhood (target + nearest rivals), singleton (target alone), or sweep (scaling curves).
size Integer 20 Total number of resident skills in the synthetic catalog.
rivals Integer 10 Number of competing skills selected by vocabulary or semantic proximity.
seed Integer 0 Deterministic random seed for catalog permutation.
scorer String "hybrid" Scoring method for selecting nearest rivals: hybrid, dense, or bm25.

[check]

Default thresholds enforced by reach check in continuous integration.

Key Type Default Description
budget Integer 50 Maximum empirical probes executed during CI evaluations.
max_misroute Float 0.10 Fail gate if queries misroute to competitor skills above this fraction.
max_redundancy Float None Fail gate if skill redundancy exceeds this fraction (excess calls).
min_accuracy Float 0.80 Fail gate if overall routing accuracy drops below this threshold.
min_efficiency Float None Fail gate if observed step efficiency MRR drops below this threshold.
min_entrypoint Float None Fail gate if observed entrypoint accuracy drops below this threshold.
min_f1 Float None Fail gate if observed skill selection F1 score drops below this threshold.
min_reachability Float None Fail gate if observed trajectory reachability drops below this threshold.
min_recall Float 0.80 Fail gate if target skill recall drops below this threshold.
since String "HEAD~1" Default git revision comparison target when --changed is passed.
strict Boolean true When true, Stage 1 static lint warnings cause the check to exit with code 1.

[diff]

Statistical parameters for A/B evaluation diffing and noise floor estimation.

Key Type Default Description
confidence Float 0.95 Two-sided confidence level (\(0 < c < 1\)) for statistical intervals.
power Float 0.80 Statistical power (\(1 - \beta\)) for sample size planning.
noise_inflation Float 1.265 Inflation multiplier applied to standard errors for empirical over-dispersion.

[discovery]

Controls directory and client skill store search precedence for auto-discovering skills. Supports ".", "skills", explicit relative paths, or any of the 10 built-in client profiles ("agents", "antigravity-cli", "antigravity-sdk", "claude-code", "codex", "copilot", "cursor", "github", "goose", "pi").

Key Type Default Description
precedence Array of String [".", "skills", ".agents/skills", "claude-code", "cursor", "github", "pi", "goose"] Ordered search locations when resolving skill corpora.

[general]

Key Type Default Description
default_agent String "antigravity-cli" Default agent driver when --agent is omitted from CLI commands (antigravity-cli, antigravity-sdk, claude-code, goose, pi, keyword).

[lint] & [lint.rules]

Controls static frontmatter and budget thresholds.

Key Type Default Description
max_description_length Integer 1024 Maximum allowable character length for description before triggering listing-overflow.
min_description_length Integer 20 Minimum character length before triggering description-too-short.
max_name_length Integer 64 Maximum character length for skill name.
catalog_budget_chars Integer 30000 Maximum allowable resident listing budget in characters before triggering catalog-budget-overflow.
mutual_handoff_similarity_threshold Float 0.75 Minimum semantic similarity between neighbors before requiring reciprocal handoffs.
mutual_handoff_lexical_threshold Float 0.35 Minimum lexical competition score before requiring reciprocal handoffs.
rules.<rule-name> String (varies) Severity override for any static lint rule: "error", "warn", "info", or "ignore".

Interaction with [catalog] in reach.toml

When a project's reach.toml explicitly includes a [catalog] table (with the default scorer = "hybrid") and omits catalog_budget_chars under [lint], load_config() sets lint.catalog_budget_chars = None unless catalog_budget_chars is explicitly specified in [lint].

[models.<name>]

Configures context window limits, character-to-token ratios, and reasoning effort tiers (ModelProfile). Dots in model names are replaced with hyphens in table headers (e.g., [models.gemini-3-8-flash]).

Key Type Default Description
context_window Integer 1_000_000 Total model context window in tokens.
completion_window Integer 65_536 Maximum output completion window in tokens (200_000 for Claude 4.5/5 models).
chars_per_token Float 4.0 Estimated characters per token used for catalog budget calculations (3.0 for Claude models).
listing_budget_fraction Float 0.01 Fraction of context_window allocated to the resident skill listing table (0 < f \le 1).
budget_fraction_places Integer 4 Decimal rounding precision when formatting listing budget fractions (1–10).
effort String / None None Default reasoning effort level ("minimal", "low", "medium", "high", "max", "xhigh").

[optimize]

Parameters for closed-loop skill description optimization.

Key Type Default Description
adversarial_count Integer 5 Number of adversarial negative near-miss queries to synthesize per round.
auto_queries Boolean true Automatically synthesize positive and adversarial queries when none provided.
budget Integer 30 Maximum empirical probe budget allocated across candidate evaluations.
holdout Float 0.2 Fraction of queries held out for generalization validation (0.0 - 0.9).
iterations Integer 1 Number of iterative hill-climbing refinement rounds (1-10).
positive_count Integer 5 Number of positive in-scope trigger queries to synthesize per round.
review Boolean false Launch interactive browser boundary review for drafted queries before probes.
review_timeout Float 600.0 Maximum timeout in seconds waiting for interactive browser query review.
seed Integer 42 Pseudo-random seed for train/test query splitting and reproducible runs.
temperature Float 0.7 Sampling temperature for candidate rewrite generation.
with_handoff Boolean false Synthesize and stage reciprocal Layer-2 SKILL.md Routing Notes.
workers Integer 4 Number of parallel probe workers (inherits from [plan].workers if unset).

[overlap]

Parameters governing lexical competition and vocabulary rewrite suggestions.

Key Type Default Description
contender_band Float 0.90 Proximity ratio (within 90% of top score) defining close competitor skills.
material_share Float 0.01 Minimum contribution share (1%) for a rival term to be reported as ceded.
claim_limit Integer 8 Maximum number of suggested unclaimed terms extracted from a skill body.
min_claim_length Integer 3 Minimum character length for suggested unclaimed body terms.
min_claim_uses Integer 2 Minimum frequency in the skill body to qualify as a claim candidate.

[plan]

Controls probe replication and network resilience.

Key Type Default Description
attempts Integer 5 Replicate trials per query (5 for formal eval/check/diff, 3 for quick mode, 1 for sweep and deterministic keyword unless explicitly overridden).
retries Integer 2 Number of times to retry a probe if an agent throws a transient API or network error.
backoff_s Float 5.0 Initial backoff time in seconds between retries.
pause_s Float 0.0 Delay between consecutive probes to respect provider rate limits.
workers Integer 1 Number of concurrent worker threads executing probes in parallel.

[query]

Parameters for synthetic query drafting and leakage detection.

Key Type Default Description
count Integer 3 Number of positive queries drafted per target skill.
adversarial_count Integer 1 Number of negative near-miss queries drafted per target skill.
top_rivals Integer 3 Maximum competitor skills injected into synthesis prompts.
distinctive_idf_floor Float 0.693147 Minimum IDF threshold (\(\ln(2)\)) for distinctive terms in leak detection.

[registry]

Parameters for Google Cloud Agent Registry integration. When --skills or [study].skills is set without an explicit --registry or --project CLI flag, local skills take precedence over [registry].project. For antigravity-sdk, [registry].project and [registry].location also provide the default Agent Platform project and location when no Gemini API key is configured.

Key Type Default Description
project String None Default Google Cloud project ID hosting the Agent Registry and Agent Platform fallback.
location String "global" Agent Registry regional endpoint location (global, us, eu).
publisher String None Optional publisher filter (e.g. cloud.google.com).
cache_ttl_seconds Integer 300 Local cache TTL in seconds for remote registry skill metadata before re-validating.

[retrieval]

Parameters for dense embedding models, BM25 lexical scoring, and hybrid reciprocal rank fusion (RRF).

Key Type Default Description
scorer String "hybrid" Rival retrieval algorithm (hybrid, dense, bm25).
model String "minishlab/potion-retrieval-32M" Sentence transformer embedding model for dense similarity ranking.
rrf_k Integer 60 Smoothing constant \(k\) used in Reciprocal Rank Fusion (\(1 / (k + r)\)).
similarity_threshold Float 0.92 Cosine similarity threshold for identifying near-duplicate capabilities.
bm25_k1 Float 1.5 Lucene BM25 term-frequency saturation parameter (\(k_1 > 0\)).
bm25_b Float 0.75 Lucene BM25 document length normalization parameter (\(0 \le b \le 1\)).

[runtime]

Key Type Default Description
timeout_s Integer 200 Process execution timeout in seconds before aborting an unresponsive probe.
max_turns Integer 3 Maximum conversation turns to execute and evaluate per probe.
early_exit Boolean true When true, aborts probe execution immediately when the target skill is invoked.
blocked_env_vars Sequence[String] None Explicit list of ambient environment variables to strip from child agent processes. When omitted, Reach's default sensitive credentials are stripped (with automatic exemption of GOOGLE_APPLICATION_CREDENTIALS when Google Cloud Model Garden, Agent Platform, or Antigravity ADC mode is active; runner configuration variables such as AGY_ADC_AUTH, GOOGLE_GENAI_USE_ENTERPRISE, CLAUDE_CODE_USE_VERTEX, ANTHROPIC_VERTEX_PROJECT_ID, and CLOUD_ML_REGION are preserved).

Agent-specific driver options are configured under [runtime.options]. See Driver Options ([runtime.options]) and the Sandboxing Guide for full driver configuration details.

[study]

Controls default file paths for benchmark queries, skill roots, workspaces, and evaluation artifacts.

Key Type Default Description
anchor Integer / Sequence[String] / String None Anchor skills cohort evaluated across all scales (count, skill names list, or "all").
auto_queries Boolean true Automatically synthesize benchmark queries on cold start or for explicitly requested unqueried skills; existing non-empty query sets in sweeps are used as-is.
bootstrap_iterations Integer 200 Number of bootstrap replicates for curve confidence intervals (min: 10).
bootstrap_seed Integer / None 42 Random seed for reproducible bootstrap resamples and curve perturbation.
catalog String "auto" Target catalog scope: "auto" (derives from dataset/target), "all", "neighborhood:<skill>", or "singleton:<skill>".
catalog_replicates Integer 1 Number of independent distractor catalog permutations to probe per scale step (1–20) for replicate collision detection.
out Path None Destination file path for recorded evaluation artifacts (.jsonl paths stream per-probe records in reach eval while reach sweep uses .reach/sweep.json).
partial Boolean false Allow query sets that evaluate only a subset of resident skills.
queries Path None Path to labeled evaluation queries JSON benchmark file.
rescope Boolean false Permit evaluation against a catalog differing from the one labeled in.
scales Sequence[Integer] None Pre-configured catalog sizes for scaling sweeps (e.g. [10, 25, 50, 100]).
skills Path None Explicit path override to local skills directory (bypasses [discovery].precedence if set).
tag String "" Semantic run tracking label (e.g. "v1-baseline").
trusted Boolean false When true, trusts resident skills and bypasses interactive safety confirmation prompts.
workdir Path None Custom persistent workspace path (defaults to isolated ephemeral temp directory).

Risk of Bypassing Safety Confirmation

Setting trusted = true bypasses interactive safety confirmation prompts across all commands that launch live agent probes, and agent runtimes execute with the host permissions of the running user. Only enable trusted = true in private repositories where all skill manifests have been reviewed; when evaluating untrusted third-party skills, run Reach inside an isolated container or VM (see the Sandboxing & Safety Guide).


Driver Options ([runtime.options])

Driver-specific settings can be passed in reach.toml under [runtime.options] or via --opt KEY=VALUE on the CLI. All agent drivers inherit the base AgentOptions fields, CLI drivers add CliOptions, and Vertex-enabled drivers add VertexOptions.

Common Runtime Options (AgentOptions, CliOptions, VertexOptions)

Key Base Class Type Default Description
model AgentOptions String Driver default Model identifier to evaluate.
effort AgentOptions String / None None Reasoning effort level ("low", "medium", "high").
provider AgentOptions String / None None Model provider override (e.g., "google", "anthropic", "vertex").
max_turns AgentOptions Integer >= 1 3 Maximum number of conversation turns permitted per probe.
early_exit AgentOptions Boolean true Terminate the session immediately once the target skill is invoked.
allowed_tools AgentOptions Sequence[String] / None None Explicit allowlist of runtime tools exposed during probes.
blocked_env_vars AgentOptions Sequence[String] / None None Environment variable names stripped from agent subprocesses (overrides defaults).
api_key AgentOptions String / None None Explicit API key override for direct provider authentication.
use_symlinks AgentOptions Boolean true (false*) Symlink skill directories into isolated workspaces (false by default on antigravity-* runtimes).
isolate_config_dir AgentOptions Boolean true Isolate the agent's home/config directory inside the ephemeral probe workspace.
auto_clean AgentOptions Boolean false Automatically delete isolated session artifacts after each probe completes.
json_schema AgentOptions String / None None Optional JSON schema string or object constraining structured agent output.
executable CliOptions String Driver binary Path or command name for the CLI agent binary (antigravity-cli, claude-code, goose, pi).
extra_args CliOptions Sequence[String] () Extra command-line arguments appended to every CLI subprocess invocation.
vertex VertexOptions Boolean / None None Explicitly enable (true) or disable (false) Google Cloud Vertex AI / ADC authentication.
project VertexOptions String / None Inferred Google Cloud project ID for Vertex AI / Agent Platform requests.
location VertexOptions String / None "global" / None Google Cloud region or "global" endpoint location for Vertex AI / Agent Platform requests.

Google Antigravity CLI (antigravity-cli)

Key Type Default Description
executable String "agy" Path or command name for the Antigravity CLI binary.
model String "gemini-3.8-flash" Model identifier to evaluate.
vertex Boolean None Explicitly enable (true) or disable (false) Vertex AI / Agent Platform ADC authentication (AGY_ADC_AUTH).
project String Inferred Google Cloud project ID hosting the target Agent Platform endpoints or Agent Registry.
location String "global" Google Cloud region or "global" endpoint location for Agent Platform requests.
use_symlinks Boolean false Copy skill directories by default so Antigravity's workspace file watcher indexes resident SKILL.md manifests.

Google Antigravity SDK (antigravity-sdk)

Key Type Default Description
model String "gemini-3.8-flash" Model identifier to evaluate.
vertex Boolean None Explicitly enable (true) or disable (false) Vertex AI / Agent Platform ADC authentication (vertexai).
project String Inferred Google Cloud project ID hosting the target Agent Platform endpoints or Agent Registry.
location String "global" Google Cloud region or "global" endpoint location for Agent Platform requests.
use_symlinks Boolean false Copy skill directories by default so Antigravity's workspace file indexer discovers resident SKILL.md manifests.

Claude Code (claude-code)

Key Type Default Description
executable String "claude" Path or command name for the Claude Code CLI binary.
model String "claude-sonnet-5" Model identifier to evaluate.
vertex Boolean None Explicitly enable (true) or disable (false) Google Cloud Model Garden / Vertex AI mode (CLAUDE_CODE_USE_VERTEX).
project String None Google Cloud project ID injected as ANTHROPIC_VERTEX_PROJECT_ID.
location String None Google Cloud region injected as CLOUD_ML_REGION.
disable_bundled_skills Boolean true When true, disables default runtime-bundled skills, built-in plugin mods, and ambient instruction files (CLAUDE.md).
skill_overrides Mapping[String, String] Built-in skills disabled Explicit skill activation overrides passed to Claude Code to suppress bundled skills.
enabled_plugins Mapping[String, Boolean] Built-in mods disabled Explicit plugin activation states to suppress default runtime mods.
skill_listing_budget_fraction Float None Fraction of total model context window allocated to the resident skill listing table (e.g. 0.05 for 5%).
skill_listing_max_desc_chars Integer None Maximum character length for each individual skill description before description truncation.
setting_sources String "project" Setting sources passed via --setting-sources ("project", "user", etc.).

Goose (goose)

Key Type Default Description
executable String "goose" Path or command name for the Goose CLI binary.
model String "gemini-3.8-flash" Model identifier to evaluate.
provider String Inferred Model provider identifier (e.g. "google", "anthropic", "openai").
no_profile Boolean true When true, bypasses user developer profiles and ambient configurations.
with_builtin String "skills" Built-in extensions to enable (restricted to "skills" for isolated evaluation).

Pi (pi)

Key Type Default Description
executable String "pi" Path or command name for the Pi CLI binary.
model String "gemini-3.8-flash" Model identifier to evaluate.
provider String "google" Model provider identifier.

Keyword (keyword)

The deterministic keyword baseline driver scores resident skills by word-boundary lexical matching and BM25 without external subprocesses or model APIs:

Key Type Default Description
model String "keyword" Baseline lexical scorer identifier recorded in evaluation provenance.
scope String "user" Skill scope label applied when staging resident skills ("user", "local").

Configuration Precedence

Settings resolve in the following order (highest precedence wins):

  1. Explicit CLI flags (e.g. --min-recall 0.90)
  2. Project-local reach.toml (in the current working directory, or specified by --config)
  3. Bundled default reach.toml

Path fields in [study] (skills, queries, workdir, out) and entries in [discovery].precedence also interpolate environment variables dynamically using ${VAR} or $VAR syntax (e.g. skills = "${REACH_SKILL_ROOT}").


Environment Variables

Variable Description
REACH_NO_BROWSER Set to "1", "true", or "yes" to bypass interactive browser review for drafted queries.
REACH_YES Set to "1", "true", or "yes" to bypass interactive safety confirmation prompts in CI/CD and scripts.
AGY_ADC_AUTH Set to "true" or "1" to enable Google Cloud ADC / Vertex AI authentication for antigravity-cli.
GOOGLE_GENAI_USE_ENTERPRISE Set to "true" or "1" to enable Google Cloud Agent Platform ADC authentication for antigravity-sdk.
GOOGLE_GENAI_USE_VERTEXAI Set to "true" or "1" to enable Vertex AI authentication for google-genai and Antigravity runtimes.
GOOGLE_CLOUD_PROJECT Default Google Cloud project ID for Agent Platform, Vertex AI, and Agent Registry operations.
GOOGLE_CLOUD_QUOTA_PROJECT Fallback Google Cloud project ID checked when GOOGLE_CLOUD_PROJECT is unset.
GOOGLE_CLOUD_LOCATION Default Google Cloud location (e.g. "global") for Agent Platform and Vertex AI requests.
CLAUDE_CODE_USE_VERTEX Set to "1" or "true" to route claude-code through Google Cloud Model Garden on Vertex AI.
ANTHROPIC_VERTEX_PROJECT_ID Google Cloud project ID used by claude-code when Vertex AI mode is enabled (falls back to GOOGLE_CLOUD_PROJECT).
CLOUD_ML_REGION Google Cloud region used by claude-code when Vertex AI mode is enabled (defaults to "global").
GITHUB_STEP_SUMMARY When set (in GitHub Actions), reach check automatically appends markdown gate summaries to this file.
NO_MKDOCS_2_WARNING Set to "1" to suppress upstream MkDocs 2.0 console notices during documentation builds.

Provider API Keys & Authentication

Reach automatically routes model API keys and ADC settings to the corresponding environment variables expected by each runtime agent:

Provider Credentials / Injected Environment Variables Support Tier
google / gemini GEMINI_API_KEY, GOOGLE_API_KEY Tested (Primary reference)
google-cloud Application Default Credentials (ADC), AGY_ADC_AUTH, GOOGLE_GENAI_USE_ENTERPRISE, GOOGLE_CLOUD_PROJECT Tested (Agent Platform)
anthropic ANTHROPIC_API_KEY (or Vertex AI Model Garden via CLAUDE_CODE_USE_VERTEX=1, ANTHROPIC_VERTEX_PROJECT_ID, CLOUD_ML_REGION) Supported
openai OPENAI_API_KEY Supported (CLI pass-through)

Provider Support Status

Google Gemini (via Developer API keys) and Google Cloud Agent Platform / Model Garden (via Application Default Credentials) are the primary benchmarked authentication paths for Reach. For antigravity-cli and antigravity-sdk, set vertex = true under [runtime.options] or export AGY_ADC_AUTH=true / GOOGLE_GENAI_USE_ENTERPRISE=true. For Claude Code, configure Google Cloud Model Garden on Vertex AI (CLAUDE_CODE_USE_VERTEX=1 or vertex = true) or set ANTHROPIC_API_KEY.

If an unrecognized provider name is specified via options, Reach raises an error rather than mapping credentials to an unintended provider. For custom, local, or self-hosted model engines (such as Ollama, vLLM, or Mistral), set the provider's expected environment variables directly in your shell or CI workflow.