Indusagi uses JSON settings files with project settings overriding global settings.
| Location |
Scope |
~/.indusagi/agent/settings.json |
Global (all projects) |
.indusagi/settings.json |
Project (current directory) |
Edit directly or use /settings for common options.
All Settings
Model & Thinking
| Setting |
Type |
Default |
Description |
defaultProvider |
string |
- |
Default provider (e.g., "anthropic", "openai") |
defaultModel |
string |
- |
Default model ID |
defaultThinkingLevel |
string |
- |
"off", "minimal", "low", "medium", "high", "xhigh" |
hideThinkingBlock |
boolean |
false |
Hide thinking blocks in output |
thinkingBudgets |
object |
- |
Custom token budgets per thinking level |
thinkingBudgets
{
"thinkingBudgets": {
"minimal": 1024,
"low": 4096,
"medium": 10240,
"high": 32768
}
}
UI & Display
| Setting |
Type |
Default |
Description |
theme |
string |
"dark" |
Theme name ("dark", "light", or custom) |
quietStartup |
boolean |
false |
Hide startup header |
collapseChangelog |
boolean |
false |
Show condensed changelog after updates |
doubleEscapeAction |
string |
"tree" |
Action for double-escape: "tree" or "fork" |
editorPaddingX |
number |
0 |
Horizontal padding for input editor (0-3) |
showHardwareCursor |
boolean |
false |
Show terminal cursor |
Compaction
| Setting |
Type |
Default |
Description |
compaction.enabled |
boolean |
true |
Enable auto-compaction |
compaction.reserveTokens |
number |
16384 |
Tokens reserved for LLM response |
compaction.keepRecentTokens |
number |
20000 |
Recent tokens to keep (not summarized) |
{
"compaction": {
"enabled": true,
"reserveTokens": 16384,
"keepRecentTokens": 20000
}
}
Branch Summary
| Setting |
Type |
Default |
Description |
branchSummary.reserveTokens |
number |
16384 |
Tokens reserved for branch summarization |
Retry
| Setting |
Type |
Default |
Description |
retry.enabled |
boolean |
true |
Enable automatic retry on transient errors |
retry.maxRetries |
number |
3 |
Maximum retry attempts |
retry.baseDelayMs |
number |
2000 |
Base delay for exponential backoff (2s, 4s, 8s) |
{
"retry": {
"enabled": true,
"maxRetries": 3,
"baseDelayMs": 2000
}
}
Message Delivery
| Setting |
Type |
Default |
Description |
steeringMode |
string |
"one-at-a-time" |
How steering messages are sent: "all" or "one-at-a-time" |
followUpMode |
string |
"one-at-a-time" |
How follow-up messages are sent: "all" or "one-at-a-time" |
Terminal & Images
| Setting |
Type |
Default |
Description |
terminal.showImages |
boolean |
true |
Show images in terminal (if supported) |
terminal.startupImage |
string |
- |
Path to an image displayed at startup (interactive mode only) |
images.autoResize |
boolean |
true |
Resize images to 2000x2000 max |
images.blockImages |
boolean |
false |
Block all images from being sent to LLM |
Paths in terminal.startupImage follow the same resolution rules as other settings: global settings resolve relative to ~/.indusagi/agent, project settings resolve relative to .indusagi (absolute paths and ~ are supported).
Shell
| Setting |
Type |
Default |
Description |
shellPath |
string |
- |
Custom shell path (e.g., for Cygwin on Windows) |
shellCommandPrefix |
string |
- |
Prefix for every bash command (e.g., "shopt -s expand_aliases") |
Model Cycling
| Setting |
Type |
Default |
Description |
enabledModels |
string[] |
- |
Model patterns for Ctrl+P cycling (same format as --models CLI flag) |
{
"enabledModels": ["claude-*", "gpt-4o", "gemini-2*"]
}
Markdown
| Setting |
Type |
Default |
Description |
markdown.codeBlockIndent |
string |
" " |
Indentation for code blocks |
Resources
These settings define where to load extensions, skills, prompts, and themes from.
Paths in ~/.indusagi/agent/settings.json resolve relative to ~/.indusagi/agent. Paths in .indusagi/settings.json resolve relative to .indusagi. Absolute paths and ~ are supported.
| Setting |
Type |
Default |
Description |
packages |
array |
[] |
npm/git packages to load resources from |
extensions |
string[] |
[] |
Local extension file paths or directories |
skills |
string[] |
[] |
Local skill file paths or directories |
prompts |
string[] |
[] |
Local prompt template paths or directories |
themes |
string[] |
[] |
Local theme file paths or directories |
enableSkillCommands |
boolean |
true |
Register skills as /skill:name commands |
Arrays support glob patterns and exclusions. Use !pattern to exclude. Use +path to force-include an exact path and -path to force-exclude an exact path.
packages
String form loads all resources from a package:
{
"packages": ["indusagi-skills", "@org/my-extension"]
}
Object form filters which resources to load:
{
"packages": [
{
"source": "indusagi-skills",
"skills": ["brave-search", "transcribe"],
"extensions": []
}
]
}
See packages.md for package management details.
Example
{
"defaultProvider": "anthropic",
"defaultModel": "claude-sonnet-4-20250514",
"defaultThinkingLevel": "medium",
"theme": "dark",
"compaction": {
"enabled": true,
"reserveTokens": 16384,
"keepRecentTokens": 20000
},
"retry": {
"enabled": true,
"maxRetries": 3
},
"enabledModels": ["claude-*", "gpt-4o"],
"packages": ["indusagi-skills"]
}
Project Overrides
Project settings (.indusagi/settings.json) override global settings. Nested objects are merged:
// ~/.indusagi/agent/settings.json (global)
{
"theme": "dark",
"compaction": { "enabled": true, "reserveTokens": 16384 }
}
// .indusagi/settings.json (project)
{
"compaction": { "reserveTokens": 8192 }
}
// Result
{
"theme": "dark",
"compaction": { "enabled": true, "reserveTokens": 8192 }
}