Settings
Settings, defaults and configuration precedence.
Documentation · CLI · Providers
Put deliberate user choices in ~/.octet/config.toml, for example:
model = "claude-sonnet-4-6"
reasoning = "high"
effect_policy = "controlled_bash_approval"
allow_external_paths = falseThese are example choices, not a claim that this model is configured or that all values are defaults. Provider credentials belong in the provider setup, not this file.
Precedence#
The supplied reference orders layers from least to most explicit:
- Built-in defaults.
~/.octet/config.toml.- Trusted project
.octet/config.toml, only with--workspace-trusted. - Environment variables.
- CLI flags.
- Resumed-session model/reasoning, unless explicitly overridden by CLI.
A trusted project can tighten user authority floors, not relax them. If an absolute user home cannot be resolved, global config/resources are disabled with a diagnostic; octet never substitutes the invocation directory.
System-prompt precedence follows the same order: global configuration, trusted project configuration, environment, then CLI. An explicit empty CLI value overrides all lower layers.
Settings#
Only explicitly stated defaults below are defaults. Other numeric/string values preserve the supplied reference's example configuration, not newly verified runtime defaults.
| Setting | Meaning and documented value |
|---|---|
model |
Model ID; examples include claude-sonnet-4-6 and legacy custom/Qwen3 Coder Next. Prefer provider-qualified custom IDs for new registry entries. |
reasoning |
Model-supported choice, example "high"; "off" is an explicit preference. Unset uses model-aware defaults, after session restoration. Levels and budgets. |
system_prompt |
Replace all composed system instructions, including with ""; example "You are a careful and concise reviewer.". AGENTS/context/skill instructions are ignored while set. |
cache_retention |
Provider prompt-cache retention selection; example "short". |
theme |
Built-in "auto", "light", or "dark". Auto adapts to the terminal background; light/dark override detection. |
color |
Terminal color selection; example "auto", with terminal-capability fallbacks. |
mouse |
Default "auto"; auto, terminal, and off preserve native selection/history; app selects the captured semantic viewport. |
plain |
Chronological frontend; example false. |
show_images |
Default false; true opts in to bounded inline tool-result images on compatible interactive terminals. This controls display, not upload or explicit input-attachment consent. Equivalent flag: --show-images. Display limits. |
models |
Optional user-level ordered model scope written by /scoped-models as one comma-separated pattern string (e.g. "openai/*:high,custom/alpha-model"). Interactive Ctrl+P cycling only: headless modes ignore it, --models wins when both are present, and a trusted project layer can never override it. |
effect_policy |
Default "unsafe_host"; alternatives "controlled", "controlled_bash_approval". Authority profiles. |
allow_external_paths |
Default true in full-access CLI launches. Set false for workspace-local built-in file admission; safe mode forces false. This does not contain shell commands or extension processes. |
allow_edit, allow_write |
Independent mutation capabilities; example true for both. --no-edit removes both tools. |
allow_process, allow_shell |
Independent process/shell gates; example true for both. Enabling does not override an effect denial. |
allow_remote_read |
Default false; opt-in HTTPS image/audio reads, always disabled by --offline. |
shell_path |
Optional explicit Bash-compatible shell; selection order. |
bash_timeout_secs |
Command timeout; example 120 seconds. |
max_output_bytes |
Command output capture bound; example 1048576 bytes. |
context_files |
Include instruction/context files; example true, project inputs still require trust. |
offline |
Example false; true skips optional model discovery and remote reads, not inference. |
strict_config |
Default behavior warns about unknown keys; true makes them errors, as does --strict-config. |
reload |
Default true: the interactive prompt silently arms the live-reload supervisor and applies reloads only at the idle prompt. /reload --dry-run shows watch counts, timing, and host re-exec policy; incomplete watch coverage still warns. false disables sampling for good. User level only; a trusted project layer may not arm it. |
reload_poll_ms |
Default 1000; interval between filesystem samples, clamped to 50..=300000. Sampling covers the skill/prompt/theme/context/extension roots in use plus the resolved executable. |
reload_debounce_ms |
Default 200; save-burst debounce, clamped to 2000 maximum so a burst always flushes. |
reload_max_files |
Default 512; metadata inspections per poll, clamped to 1..=4096. Directory enumeration shares a separate allowance of the same size, plus at most one overflow entry; entries are bounded before collection/sorting. Partially scanned layers are reported as capped, never as changes or removals. |
session_dir |
Session-storage root; equivalent CLI option --session-dir PATH. Storage and recovery. |
max_turns |
Bound model turns; equivalent CLI option --max-turns N. |
max_cost_microdollars |
Optional session cost guardrail; example 500000, integer microdollars. |
cost_warning_microdollars |
Optional cost warning; example 50000, integer microdollars. |
telemetry |
Optional explicit JSONL output path; disabled unless set. Example "./artifacts/octet-telemetry.jsonl". |
[compaction] |
mode = "local", threshold_fraction = 1.0, optional max_active_tokens (zero/unset uses model limit), keep_recent_tokens = 20000, optional compact_model = "provider/model". Exact budgeting and caveats. |
enabled_extensions |
Default []: installed executable extensions stay disabled until explicitly enabled. Full access does not change activation. |
trusted_extensions |
Default []: optional persistent source-bound grants. Full access implicitly trusts selected extensions without adding grants; safe mode removes implicit trust and blocks executable startup even with explicit grants. Resource rules. |
Reload cap reports show at least the known skipped paths, not an exact total: unread directory contents are unknown. Failed directory entries also consume the enumeration allowance. Fully scanned directories retain deterministic ordering; capped layers neither replace their baseline nor infer changes from an arbitrary filesystem-order prefix. The first complete scan establishes that layer's baseline. Executable sampling remains independent of these resource-tree limits.
Environment variables#
| Variable | Corresponding control |
|---|---|
OCTET_MODEL, OCTET_REASONING |
Model and effort. |
OCTET_EFFECT_POLICY |
Effect profile. |
OCTET_SYSTEM_PROMPT |
System-instruction replacement; see precedence. |
OCTET_CACHE_RETENTION |
Cache retention. |
OCTET_COLOR, OCTET_MOUSE, OCTET_THEME, OCTET_COLOR_SCHEME |
Terminal presentation; OCTET_THEME accepts auto, light, or dark, while OCTET_COLOR_SCHEME remains a background-detection override. |
OCTET_SHOW_IMAGES |
1 opts in to inline tool-result display, not media upload. |
OCTET_WORKSPACE, OCTET_SESSION_DIR |
Workspace and session-storage roots. |
OCTET_MAX_TURNS |
Turn bound. |
OCTET_COMPACTION_MODE, OCTET_COMPACTION_THRESHOLD_FRACTION, OCTET_COMPACTION_MAX_ACTIVE_TOKENS |
Compaction mode and thresholds. |
OCTET_SHELL_PATH, OCTET_BASH_TIMEOUT_SECS, OCTET_MAX_OUTPUT_BYTES |
Shell and command limits. |
OCTET_OFFLINE |
Skip optional discovery; not network isolation. |
OCTET_TELEMETRY |
Opt-in telemetry path. |
OCTET_ALLOW_* |
Mirrored capability controls; specifically OCTET_ALLOW_REMOTE_READ=true grants remote media reads unless offline. |
OCTET_PACKAGE_DIR, OCTET_DATA_DIR |
Override the self-documentation asset root. |
OCTET_TUI_WRITE_LOG |
Opt-in sensitive raw terminal capture, below. |
Diagnostics and telemetry#
--telemetry PATH writes owner-only octet.telemetry.v1 JSONL, separately from
durable sessions. It records run boundaries, model latency/TTFT, disjoint
input/cache/output usage, retries, tool timings/repetition signals, compaction
outcomes, terminal status, and secret-safe effect admission. Decisions contain
effect, stable denial code, effective policy values, and each configuration
source layer. Shell identity is only a non-correlating resolution branch, never
a path/digest. Prompt identity and tool arguments are hashed: raw prompts,
arguments, results, and provider payloads are not logged. See the
telemetry schema and measurement methodology.
OCTET_TUI_WRITE_LOG=/path/to/ansi.log captures the interactive frontend's raw
ANSI stream. An existing directory instead gets a unique
tui-<timestamp>-<pid>.log. Disabled by default; captured prompts/tool output
make these logs sensitive even when telemetry is secret-safe.
Compatibility inputs#
OCTET_EXEC_TIMEOUT_SECSremains a fallback for the previous timeout name.[compaction] enabled = trueandOCTET_AUTO_COMPACT=trueselectlocal.reasoning_mode = "pro",OCTET_REASONING_MODE=pro, and--reasoning-mode proonly load legacy config/sessions. They migrate toreasoning = "ultra"only with complete current Ultra/V2 support; otherwise octet removes the obsolete mode, retains independently selected supported effort, and warns. New config usesreasoningalone.--safeis a hidden alias of--safe-mode;--yoloand its config/environment forms are rejected.--theme-dirand arbitrary theme names remain compatibility inputs and never load filesystem themes. The built-inthemechoices are documented in Theme status.
Compatibility inputs do not imply Ygg command aliases, old-root discovery, or an automatic first-party migration.
Moved sections
These earlier section links now continue in the references below.