Skip to content

Settings

Selesai stores settings as JSON in two files: ~/.selesai/agent/settings.json (global, applies to every project) and .selesai/settings.json (project, overrides global for the current directory). Edit the files directly, or run /settings inside a session to change common options interactively.

This page covers the settings most people actually touch. The exhaustive reference lives in docs/settings.md on GitHub, and per-extension options are on the Customization page.

Model

SettingTypeDefaultWhat it does
defaultProviderstringDefault provider, e.g. "anthropic" or "openai".
defaultModelstringDefault model ID used for new sessions.
defaultThinkingLevelstringHow much the agent thinks before answering: "off", "minimal", "low", "medium", "high", or "xhigh".
enabledModelsstring[]Model patterns for Ctrl+P cycling, e.g. ["claude-*"].

Tools

SettingTypeDefaultWhat it does
defaultToolsstring[]Initial built-in tool selection for new sessions. When set, new sessions start with only these tools enabled (useful alongside the SDK); when omitted, the default read, bash, edit, write are used.

Appearance

SettingTypeDefaultWhat it does
themestring"dark""dark", "light", or a custom theme name. You can also set an initial theme for a single run with --use-theme <name>.
quietStartupbooleanfalseHide the keybinding help and loaded-resources listing for a calmer launch. The brand banner always appears and dismisses on your first message.
tuiModestring"fullscreen""fullscreen" (default dock layout) or "regular" (classic Pi layout).
fullscreenExitOutputstring"transcript"What happens on exit from fullscreen: print the transcript ("transcript") or only a session resume hint ("resume-hint").
fullscreenCopyOnSelectbooleantrueAutomatically copy selected text in fullscreen mode; disable to copy selections with Ctrl+X.

Context

SettingTypeDefaultWhat it does
compaction.enabledbooleantrueAuto-compact old context when a conversation grows large.
compaction.reserveTokensnumber16384Tokens kept free for the model’s reply.
compaction.keepRecentTokensnumber20000Recent tokens that are never summarized.

Trust and safety

SettingTypeDefaultWhat it does
defaultProjectTruststring"ask"Fallback for trusting a project in non-interactive runs: "ask", "always", or "never". Global setting only.

Images & vision

When the active model can’t see images (e.g. a text-only DeepSeek model), you can route images to a vision model that describes them as text. Set the caption model and its context budget in /settings (“Vision caption model” / “Vision context tokens”) or via these settings:

SettingTypeDefaultWhat it does
images.imageCaptionModelstringunsetVision model (provider/model) used to describe images when the main model can’t accept them, e.g. "tokenin/gemma-4". Unset (or "off") disables captioning.
images.imageCaptionContextTokensnumber16384Max token budget (approx) for the recent-conversation context sent to the vision model. Messages are kept whole (cut at message boundaries only); the user’s current prompt is always included. 0 sends no prior conversation.
images.autoResizebooleantrueResize images to 2000×2000 max for model compatibility.
images.blockImagesbooleanfalsePrevent images from being sent to any LLM.
terminal.imagesstring"auto"Terminal image protocol: "kitty", "iterm2", "auto", or false to disable inline images.
terminal.trueColorboolean/string"auto"Pin true-color support (true/false) or keep "auto" detection.
terminal.hyperlinksboolean/string"auto"Pin hyperlink support (true/false) or keep "auto" detection.

Extensibility

SettingTypeDefaultWhat it does
packagesarray[]npm/git packages that load extensions, skills, prompts, and themes.
extensionsstring[][]Local extension files or directories to load.
skillsstring[][]Additional skill files or directories, or explicit +/- patterns. Normal discovery automatically loads skills from ~/.selesai/agent/skills/, ~/.agents/skills/, .selesai/skills/, and project/ancestor .agents/skills/ directories, so this setting is not required for ordinary skills.

Where things live

LocationScope
~/.selesai/agent/settings.jsonGlobal — applies to every project.
.selesai/settings.jsonProject — overrides global values for the current directory.

Nested objects are merged, so a project file only needs to override the keys it cares about.

Factory reset

To restore your global settings to the bundled factory defaults, run /settings-factory-reset inside a session. It warns before replacing ~/.selesai/agent/settings.json, saves a .bak backup next to the file, and leaves credentials (auth.json), sessions, extensions, skills, and themes untouched.

One combined example

{
"defaultProvider": "anthropic",
"defaultModel": "claude-sonnet-4-20250514",
"defaultThinkingLevel": "medium",
"theme": "dark",
"quietStartup": false,
"tuiMode": "fullscreen",
"fullscreenExitOutput": "transcript",
"fullscreenCopyOnSelect": true,
"defaultTools": ["read", "bash", "edit", "write"],
"compaction": {
"enabled": true,
"reserveTokens": 16384,
"keepRecentTokens": 20000
},
"defaultProjectTrust": "ask",
"images": {
"imageCaptionModel": "tokenin/gemma-4",
"imageCaptionContextTokens": 16384
},
"packages": ["pi-skills"]
}

For the full list of every setting, see docs/settings.md. For extension-level configuration, see the Customization page.