Reference
Settings
Settings files, every core key, extension namespaces and project trust.
Two layers, both JSON:
| File | Scope |
|---|---|
~/.oino/settings.json |
global |
<project>/.oino/settings.json |
project, read only for trusted projects, wins over global |
Writes are atomic and locked; old keys are migrated on load. Extension settings never hold secrets: keys entered in extension settings pages go to ~/.oino/secrets.json (mode 0600).
Core keys#
| Key | Meaning |
|---|---|
defaultProvider, defaultModel, defaultThinkingLevel |
startup model and thinking level (updated when you pick a model) |
modelThinkingLevels |
per-model thinking memory ("provider/id": "high") |
enabledModels |
the scoped model list (--models) |
thinkingBudgets |
token budgets per thinking level |
steeringMode, followUpMode |
all or one-at-a-time queue delivery |
compaction.enabled, compaction.reserveTokens, compaction.keepRecentTokens |
automatic compaction |
branchSummary.reserveTokens, branchSummary.skipPrompt |
summaries when navigating the tree |
retry.enabled, retry.maxRetries, retry.baseDelayMs, retry.maxAgentDelayMs |
retry of transient provider errors |
transport, httpIdleTimeoutMs, cacheWarming, showCacheMissNotices |
provider transport and prompt cache behaviour |
images.autoResize, images.blockImages |
image handling |
shellPath, shellCommandPrefix |
the bash tool's shell |
enableSkillCommands |
skills as /skill:<name> commands |
sessionDir |
where sessions are stored |
defaultProjectTrust |
default answer for untrusted projects |
packages |
extension package sources |
quietStartup, hideThinking, theme, doubleEscapeAction, treeFilter, tuiMode |
UI preferences |
Extension-related keys#
| Key | Meaning |
|---|---|
extensionSettings.<namespace> |
settings of one extension namespace, deep-merged global to project |
disabledExtensions |
extension ids that are not loaded |
ui.density |
frontend density hint |
serve.* |
reserved for oino serve (not implemented yet) |
How editing works#
/settings in the TUI edits the core keys and lists extension namespaces; booleans and enums toggle in place, text and number rows open an inline editor, json fields open $EDITOR. A stored value that no longer matches its field (type, enum, range, pattern) is ignored in favour of the layer below and reported as a diagnostic. Writing a value equal to the layer below deletes the key rather than storing it.
Project trust#
Project-local files (.oino/settings.json, .oino/extensions, .oino/skills, ...) are used only once the project is trusted. -a/--approve trusts for one run, -na/--no-approve ignores project files for one run, and decisions persist in ~/.oino/trust.json.