~/.neuralcleave/config.toml.
Secret resolution
Instead of hard-coding an API key:ENV: variable resolves to an empty string, not an error. An unresolvable op:// reference raises a clear error naming the missing op CLI or the failed lookup.
Full reference
[agent]
[models]
[memory]
[voice]
[gateway]
[security]
Controls the exec-approval gate consulted by the shell and browser
tools. Off by default — a command runs immediately with no prompt unless
you opt in.
require_shell_approval— whentrue, everyshellandbrowsertool call is queued and blocks until approved. When a pending request is queued, NeuralCleave also sends a notification into the channel that triggered it (Slack, Telegram, Discord, …) — replyapprove <id-prefix>ordeny <id-prefix>right there, or useneuralcleave approvals approve/deny.security_mode—"deny"denies every gated command outright;"allowlist"auto-approves commands matching a stored allowlist entry (seeneuralcleave approvals allowlist add/list/remove) and falls through toask_modefor the rest;"full"disables the gate entirely (auto-approves everything, equivalent torequire_shell_approval = false).ask_mode— only consulted whensecurity_mode = "allowlist":"off"never prompts (an unmatched command is denied silently),"on-miss"prompts only when no allowlist entry matches (the default),"always"prompts even on an allowlist match.
[ui]
[channels.<name>]
Configure each channel adapter under its own key, e.g.:
ENV:/op:// mechanism as [models].
Hot-reload
The gateway watchesconfig.toml for changes, but only [security] (require_shell_approval, security_mode, ask_mode) is actually applied live — the same mutation POST /api/v1/approvals/policy does. Model/API-key settings and channel connections are not hot-reloaded despite being watched — restart the gateway (or use neuralcleave channels remove/add for channel config) after changing those.