Skip to content

config.toml reference

~/.yachiyo/config.toml holds everything except channel credentials, which live in channels.toml.

Edit it through the app, through yachiyo config set, or by hand. The file is rewritten in a deterministic section order whenever the app saves, so hand edits survive but may be reordered.

enabledTools = ["read", "write", "edit", "bash", "grep", "glob", "webSearch"]

The tool whitelist a run starts from, written by the app. It is not a settings switch — the run mode you pick in the composer is what decides a turn’s tool list. skillsRead and reviewThings are runtime-managed and never appear here. See the tool list.

runMode = "auto"

Default run mode: auto, explore, plan, chat, or custom. Defaults to auto. See run modes.

KeyTypeDefaultDescription
sidebarVisibility"expanded" | "collapsed"expandedSidebar state
language"auto" | "en" | "zh-CN"autoUI language; auto follows the system
sidebarPreviewbooleantrueMessage previews in the sidebar
workSummarybooleantrueCollapse tool activity into a work summary
themeIdstringmizuOne of mizu, sumi, ume, aoba, mint, fuji, yamabuki, gobyou, murasaki
themeAppearance"system" | "light" | "dark"systemLight/dark mode
uiFontSizenumberUI font size
chatFontSizenumberChat font size
chatPanelOpacitynumberChat panel opacity
updateChannel"stable" | "beta"Which release channel to update from
demoModebooleanfalseDemo/screenshot mode
preventSystemSleepbooleanfalseKeep the machine awake during runs
notifyRunCompletedbooleantrueNotify when a run finishes
notifyCodingTaskStartedbooleantrueNotify when a delegated task starts
notifyCodingTaskFinishedbooleantrueNotify when a delegated task finishes
translatorShortcutstringCommandOrControl+Shift+TGlobal translator hotkey
jotdownShortcutstringCommandOrControl+Shift+JGlobal jot-down hotkey
KeyTypeDefaultDescription
mode"off" | "simple" | "full"simpleHow much foreground-app activity to record
accessibilityDeniedbooleanSet when you have explicitly denied accessibility for full mode
ocr.enabledbooleanfalseCapture window text via OCR
ocr.excludedAppsstring[][]Apps never OCR’d
KeyTypeDefaultDescription
activeRunEnterBehavior"enter-steers" | "enter-queues-follow-up"enter-steersWhat Enter does while a run is streaming
stripCompactbooleantrueCompact long thread history
stripCompactThresholdTokensnumberToken count that triggers compaction
autoMemoryDistillationbooleantrueDistill memory after runs
inputBufferEnabledbooleanfalseBuffer typing before sending
recapEnabledbooleantrueRecap context on resume
imageToTextModelobject{ providerName, model }; falls back to the tool model
KeyTypeDescription
savedPathsstring[]Registered workspace directories
pathLabelstablePath → label. Labels for paths no longer saved are pruned on write.
editorAppstringApp used to open files
terminalAppstringApp used to open a terminal
markdownAppstringApp used to open Markdown
KeyTypeDescription
syncDirstringSync folder path. Empty disables sync on this device.
KeyTypeDescription
enabledstring[]Active skill names
disabledstring[]Explicitly disabled skill names
KeyTypeDefaultDescription
mode"default" | "custom" | "disabled"defaultdefault reuses the chat model; disabled skips auxiliary generation
providerIdstring""Provider UUID when mode = "custom"
providerNamestring""Provider display name
modelstring""Model name
KeyTypeDescription
providerNamestringProvider for new chats
modelstringModel for new chats

Prefer yachiyo provider set-default over editing this directly.

KeyTypeDefaultDescription
enabledbooleantrueMaster switch for memory
autoRecallbooleantruePull recalled memory into runs
KeyTypeDefaultDescription
defaultProvider"google-browser" | "duckduckgo-browser" | "exa"google-browserSearch backend
browserSession.sourceBrowserstringBrowser the session was imported from
browserSession.sourceProfileNamestring""Profile it came from
browserSession.importedAtstring""Import timestamp
browserSession.lastImportErrorstring""Last import error, if any
exa.apiKeystring""Exa API key
exa.baseUrlstring""Custom Exa endpoint

An array of tables, one per provider.

KeyTypeDescription
idstringStable UUID
presetKeystringLinks to a built-in preset (e.g. openai, google-vertex)
namestringDisplay name
typestringopenai, openai-responses, openai-codex, anthropic, gemini, vertex, or vercel-gateway
apiKeystringAPI key. Redacted in all CLI output.
baseUrlstringAPI base URL
thinkingEnabledbooleanWhether reasoning is on by default
reasoningtableEffort defaults and per-model reasoning config
codexSessionPathstringPath to Codex auth.json, for openai-codex
project, locationstringVertex only
serviceAccountEmail, serviceAccountPrivateKeystringVertex only
modelList.enabledstring[]Models shown in the picker
modelList.disabledstring[]Known but hidden models
modelList.imageIncapablestring[]Models that cannot accept images
KeyTypeDescription
keycodestringTrigger code; must start with a letter
textstringText it expands to

External ACP agent profiles. Deprecated — see subagents.

KeyTypeDescription
idstringStable identifier
namestringDisplay name
enabledbooleanWhether the profile is offered
descriptionstringShown in the UI
commandstringExecutable
argsstring[]Arguments
envtableExtra environment variables
KeyTypeDefaultDescription
mode"worker" | "acp"workerSubagent runtime backend
enabledNamedAgentsstring[]all fourAny of explore, plan, review, general
preferredModelstablePer-agent { providerName, model } overrides

Preset thread launchers.

KeyTypeDescription
idstringStable identifier
iconstringEmoji or image reference
iconType"emoji" | "image"How to interpret icon
labelstringDisplay label
workspacePathstringWorkspace the thread starts in
privacyModebooleanStart the thread in privacy mode
modelOverridetable{ providerName, model }
ordernumberSort position