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
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.