Skip to content

Configuration Reference

Use environment variables only when the documented default does not fit. Host-native commands remain the primary interface; these settings tune a feature or arm an explicitly opt-in surface.

Set a variable in the environment that launches your host, then start a fresh session. On PowerShell, use $env:NAME = "value" for the current process. On POSIX shells, use export NAME=value. Persist values with your operating system or shell profile only after a temporary session behaves as expected.

Do not commit secrets or machine-specific paths. Unknown values generally fall back or fail soft, but safety-sensitive settings can refuse a run. The tables below cover supported operator-facing settings; test seams and internal state-path overrides are intentionally excluded.

This catalog is typed and deterministic, but its defaults and explanations are maintainer-reviewed rather than extracted from executable code. A contract test requires every documented variable name to exist in shipped implementation code; follow the linked feature guide and current source when a default is release-critical.

VariableDefaultAccepted valuesEffect
CODEARBITER_DEVoff1 to armAllows the logged maintainer dev-mode command to suspend orchestration. This does nothing until the dev command is invoked; every entry and exit is audited.
NO_COLORunsetany present valueRemoves ANSI color from terminal output while preserving content and layout.
CODEARBITER_BASE_BRANCHmainlocal branch nameSets the branch used as the SessionStart comparison base when the repository uses a different default. This changes startup reporting only; it does not retarget a pull request or authorize a merge.
VariableDefaultAccepted valuesEffect
CODEARBITER_THEMEvioletviolet, blue, green, amber, mono, or customSelects the Claude Code statusline palette.
CODEARBITER_THEME_FILE~/.codearbiter/statusline-theme.jsonlocal JSON file pathOverrides the custom-theme file used when CODEARBITER_THEME=custom.
CODEARBITER_STATUSLINEonoff disablesDisables the Claude Code statusline without uninstalling its settings entry.
CODEARBITER_WIDTHterminal widthinteger, clamped to 70–160Overrides the rendered statusline width; otherwise COLUMNS and terminal probes apply.
CODEARBITER_COMPACToff1, true, on, or yesUses the lean statusline layout and drops subagent rows.
CODEARBITER_COMPACT_AT92context percentageSets the context-usage threshold presented as compaction pressure.
VariableDefaultAccepted valuesEffect
CODEARBITER_BABYSIToffon, true, or 1Auto-attaches the server-side PR watcher after the PR command opens a pull request. It applies only in opted-in repositories and never enables itself or auto-merges.
CODEARBITER_BABYSIT_ONREDproposepropose or branchChooses whether a red watcher only diagnoses and proposes, or also creates an unmergeable spike branch. Unknown values fail closed to propose; the branch result can never be merged or opened as a PR.
VariableDefaultAccepted valuesEffect
CODEARBITER_PRUNEoffoff, dry, or onControls the preview transcript-pruning service; dry records candidates without pruning. Enable it yourself only after reviewing dry-run output; codeArbiter never opts you in.
CODEARBITER_PRUNE_TIERgentledocumented pruning tierSelects the pruning strategy preset.
CODEARBITER_PRUNE_STRATEGIEStier defaultscomma-separated strategy namesOverrides the strategy set selected by the pruning tier.
CODEARBITER_PRUNE_KEEP_RECENT10non-negative integerKeeps this many recent eligible items untouched.
CODEARBITER_PRUNE_MAXBYTES8192positive byte countCaps replacement sidecar content retained for one pruned item.
CODEARBITER_PRUNE_MIN_SIZE1048576positive byte countRequires this transcript size before the service considers pruning.
CODEARBITER_PRUNE_MIN_GROWTH262144positive byte countRequires this much growth since the previous pass before reconsidering the transcript.
CODEARBITER_PRUNE_BACKUPS3non-negative integerRetains this many rotating transcript backups before older backups are removed.
CODEARBITER_PRUNE_LIVE_SECS90non-negative secondsTreats a transcript as live for this long after its latest update and avoids compacting it.
CODEARBITER_PRUNE_METRICS~/.codearbiter/metrics/prune-dry.jsonllocal JSONL file pathOverrides the append-only destination for dry-run pruning measurements.
CODEARBITER_PRUNE_NUDGEoffon to armEnables the preview cold-miss nudge when pruning is also on.
CODEARBITER_PRUNE_NUDGE_IDLE_SECS240positive secondsSets the minimum idle period before a cold-miss nudge can appear.
CODEARBITER_PRUNE_NUDGE_MIN_TOKENS80000positive estimated token countSets the minimum model-context size before a cold-miss nudge can appear.
VariableDefaultAccepted valuesEffect
FARM_API_KEYrequired for --farmprovider API keyAuthenticates the preview OpenAI-compatible farm backend. Keep it in the shell environment or the documented local tools .env; never commit it.
FARM_API_BASE_URLhttps://opencode.ai/zen/v1HTTPS OpenAI-compatible endpointSelects the farm provider endpoint.
FARM_MODELautomatic selectionprovider model idSkips canary and cached model selection and pins one model.
FARM_CANDIDATE_MODELSunsetcomma-separated provider model idsSupplies the model set for a canary comparison.
FARM_CONCURRENCY4integer of at least 1Caps total in-flight worker calls, including best-of-N samples.
FARM_BASE_BRANCHmainlocal branch nameSets the branch from which the farm integration branch is created.
FARM_INTEGRATION_BRANCHfarm/integrationnew or existing local branch nameNames the farm’s integration branch. Concurrent farm runs need distinct integration branches.
FARM_SAMPLES1integer of at least 1Draws this many isolated candidates per task attempt; the first gate-passing candidate wins. Values above 1 can multiply provider token use even though concurrency remains capped.
FARM_TEMPERATURE0provider-supported numberControls worker sampling; when samples exceed 1 and this is unset, the dispatcher uses 0.7.
FARM_MAX_TOKENSprovider defaultnon-negative integerCaps completion tokens per worker call; 0 leaves the provider default.
FARM_MAX_RETRIES2non-negative integerLimits gate retries for one task before escalation.
FARM_REQUEST_TIMEOUT_MS120000positive millisecondsBounds one provider request, including its response body.
FARM_API_MAX_RETRIES3non-negative integerLimits transport retries for rate limits and server errors; provider Retry-After is honored.
FARM_ENTITLEMENT_PROBE_TIMEOUT_MS35000positive millisecondsBounds each model-entitlement probe during canary selection.
FARM_GATE_TIMEOUT_MS300000milliseconds of at least 1000Bounds each non-git setup, gate, and mutation child command.
FARM_ABORT_ESCALATION_RATE0.5number from 0 to 1Trips the dispatch circuit breaker when the settled-task escalation rate exceeds this fraction.
FARM_ABORT_MIN_TASKS3positive integerRequires this many settled tasks before the escalation-rate circuit breaker can abort a run.
FARM_ENRICH_MAX_BYTES131072positive byte countCaps test and in-scope source context injected into a worker prompt.
FARM_WORKTREE_ROOT.farm/worktreesrepository-contained directorySets the scratch worktree root used by farm tasks and samples. An external root is refused unless FARM_ALLOW_EXTERNAL_WORKTREE_ROOT=1 is set explicitly.
FARM_ALLOW_EXTERNAL_WORKTREE_ROOToff1 to armAllows FARM_WORKTREE_ROOT to resolve outside the repository. This is a destructive-scope override: farm cleanup recursively removes task worktrees under that root.
FARM_REPORT_DIR.farmdirectory pathSets the root for run-scoped farm receipts and reports.
FARM_RUN_IDfresh random id1–64 characters from A-Z, a-z, 0-9, ., _, or -Pins the run receipt directory name for reproducibility. Reusing an id publishes over that run’s existing receipt directory; use a fresh id per run.
FARM_MUTATIONonoff disablesDisables the farm mutation guard for a run.
FARM_MUTATION_SAMPLE15positive integerCaps the number of built-in mutation candidates evaluated per task.
FARM_MUTATION_BUDGET_MS30000non-negative millisecondsTime-boxes mutation testing for one task.
FARM_MUTATION_WARN_BELOW0.5number from 0 to 1Attaches a review warning when the mutation score falls below this value.
FARM_MUTATION_ESCALATE_BELOW0.1number from 0 to 1Hard-escalates a sufficiently sampled task at or below this mutation score.
FARM_MUTATION_CMDbuilt-in text mutatorlocal executable commandReplaces the built-in mutator with a language-specific mutation framework. The command runs inside the task worktree; verify it independently before trusting its score.

After changing a statusline setting, run the statusline status command and trigger a new render. After changing pruning, run the prune status command and begin with dry. Farm settings are recorded in the run report; inspect that receipt before trusting the result.

To undo a setting, remove it from the launch environment and start a fresh host session. Removing FARM_API_KEY makes --farm stop at preflight; it does not affect the premium path.