Skip to main content

Settings

Kiro CLI provides extensive customization through settings. You can configure everything from telemetry to chat behavior, key bindings, and feature toggles.

Accessing settings

Manage settings directly from the command line. Settings saved through interactive /settings menus are available through kiro-cli settings as well; both surfaces use the CLI settings stored in ~/.kiro/settings/cli.json.

bash
# List all configured settings kiro-cli settings list # List all available settings with descriptions kiro-cli settings list --all # View a specific setting kiro-cli settings telemetry.enabled # Set a setting kiro-cli settings telemetry.enabled true # Delete a setting kiro-cli settings --delete chat.defaultModel # Open settings file in editor kiro-cli settings open

Settings scopes

Without a scope flag, kiro-cli settings writes or deletes global settings in ~/.kiro/settings/cli.json. Pass --workspace to store a value for the current project instead:

bash
# Set a global default kiro-cli settings --global chat.defaultAgent default # Override it in the current workspace kiro-cli settings --workspace chat.defaultAgent my-project-agent

When both scopes define a workspace-overridable setting, the workspace value takes precedence in that project's terminal UI sessions. Delete the workspace value to reveal the global value again. Some settings are global-only — including chat.agentEngine, chat.uiMode, and chat.terminalTitle — and cannot be overridden per workspace.

In Kiro CLI 3.1.0 or later on macOS and Linux, a root-owned file named by the KIRO_DEFAULT_SETTINGS environment variable supplies defaults below both scopes. Any value in your global or workspace cli.json overrides it. See Environment variables.

Output formats

bash
# Plain text (default) kiro-cli settings list # JSON kiro-cli settings list --format json # Formatted JSON kiro-cli settings list --format json-pretty

Settings reference

Telemetry and privacy

SettingTypeDescriptionExample
telemetry.enabledbooleanEnable/disable telemetry collectionkiro-cli settings telemetry.enabled true
telemetryClientIdstringClient identifier for telemetrykiro-cli settings telemetryClientId "client-123"

Chat interface

SettingTypeDescriptionExample
chat.defaultModelstringDefault AI model for conversationskiro-cli settings chat.defaultModel "claude-sonnet-4.6"
chat.defaultAgentstringDefault agent configurationkiro-cli settings chat.defaultAgent "my-agent"
chat.agentEnginestringAgent harness for kiro-cli and kiro-cli chat: v3, v2, or v1. In Kiro CLI 3.0.0 or later, unset starts V3 for interactive chat on a machine that can run it; v1 selected the retired Classic interface and now opens the Classic upgrade prompt. The --v3, --v2, and --agent-engine flags override it for one run. Global only; a workspace's .kiro/settings/cli.json cannot override it. Does not apply to kiro-cli acp. See Choose an agent harnesskiro-cli settings chat.agentEngine v2
chat.diffToolstringExternal diff tool for viewing code changes (classic only)kiro-cli settings chat.diffTool "delta"
chat.greeting.enabledbooleanShow greeting message on chat startkiro-cli settings chat.greeting.enabled false
chat.editModebooleanEnable Vi edit mode (classic only)kiro-cli settings chat.editMode true
chat.enableNotificationsbooleanEnable desktop notificationskiro-cli settings chat.enableNotifications true
chat.notificationMethodstringNotification method: auto, bel, or osc9kiro-cli settings chat.notificationMethod "osc9"
chat.disableMarkdownRenderingbooleanDisable markdown formatting (classic only)kiro-cli settings chat.disableMarkdownRendering false
chat.disableWrapbooleanEmit chat output without hard line breaks for clean copy-paste; terminal soft-wrap still applies.kiro-cli settings chat.disableWrap true
chat.disableAutoCompactionbooleanDisable automatic conversation summarizationkiro-cli settings chat.disableAutoCompaction true
compaction.excludeMessagesnumberMinimum message pairs to retain during compactionkiro-cli settings compaction.excludeMessages 2
compaction.excludeContextWindowPercentnumberMinimum % of context window to retain during compactionkiro-cli settings compaction.excludeContextWindowPercent 2
chat.enablePromptHintsbooleanShow startup hints with tips and shortcuts (v1.26.0+, default: true)kiro-cli settings chat.enablePromptHints false
chat.enableHistoryHintsbooleanShow conversation history hints (classic only)kiro-cli settings chat.enableHistoryHints true
chat.uiModestringLegacy message-rendering mode: tui (default) renders terminal UI messages; structured shaped Classic output and has no effect in Kiro CLI 3.0.0 or later. This setting does not choose the interface or the harnesskiro-cli settings chat.uiMode "tui"
chat.historyModestringPrompt history scope: session (per-session, default) or global (shared across sessions). Set via /settings history; applies on next sessionkiro-cli settings chat.historyMode global
chat.sessionDashboard.scopestringV3 /sessions directory scope: current lists sessions from the current directory, all lists every workspace (default: current). Kiro updates it when you toggle the current workspace only filterkiro-cli settings chat.sessionDashboard.scope all
chat.sessionDashboard.indexResponsesboolean/sessions search scope: true for Prompts and agent responses, false for Prompts only (default: true). Titles and your prompts are always indexed and tool output never is. Set via /settings → Session searchkiro-cli settings chat.sessionDashboard.indexResponses false
chat.uistringInterface: tui (default) or classic. In Kiro CLI 3.0.0 or later, classic no longer runs for interactive chat; a launch that selects it is offered V3 insteadkiro-cli settings chat.ui "tui"
chat.disableGranularTrustbooleanDisable tiered trust options for tool approvals (terminal UI only)kiro-cli settings chat.disableGranularTrust true
chat.autoExpandToolOutputbooleanAuto-expand tool output instead of collapsed previews. File-write cards otherwise show up to 40 diff rows; press Ctrl+O or enable this setting to reveal the complete diff while it continues updatingkiro-cli settings chat.autoExpandToolOutput true
chat.modelDefaultsobjectPer-model default settings (e.g., effort level) that apply across new sessionsSee Effort
chat.enableContextUsageIndicatorbooleanShow context usage percentage in prompt (classic only)kiro-cli settings chat.enableContextUsageIndicator true

Display and accessibility (terminal UI)

These settings control how the terminal UI renders output. You can toggle animation, ASCII art, icons, screen reader support, and thinking display from within a session with /settings display.

SettingTypeDefaultDescriptionExample
chat.outputStylestringAgent defaultV3 response style selected under /settings display; a workspace value takes precedence over the global valuekiro-cli settings chat.outputStyle concise
chat.allowAnimationsbooleantrueAnimated spinners and shimmers. When false, indicators show static frameskiro-cli settings chat.allowAnimations false
chat.allowAsciiArtbooleantrueUnicode/braille symbols and box-drawing. When false, falls back to plain ASCIIkiro-cli settings chat.allowAsciiArt false
chat.allowIconsbooleantrueStatus indicator icons (●, ○, ⚠). When false, uses text-only labelskiro-cli settings chat.allowIcons false
chat.showThinkingbooleantrueShow the agent's reasoning (thinking) blocks in chat output (v2.5.0+). Startup-onlykiro-cli settings chat.showThinking false
chat.terminalTitlebooleanfalseSet the terminal window title: a name given with /title, else the session's title, else the workspace folder name. In Kiro CLI 2.33 or later, a V3 session shows its session title; before 2.33, a V3 session fell back to the workspace folder name. Global only; also toggled from /settings display → Terminal titlekiro-cli settings chat.terminalTitle true
chat.preserveScrollbackbooleantruePreserve terminal history when the interface redraws. Set to false to restore clear-and-repaint behaviorkiro-cli settings chat.preserveScrollback false
chat.screenReaderstringautoFull terminal UI screen reader support: auto, on, or off. auto turns on only when VoiceOver is detected on a local Mac. Global only. When active, IME input may move. See Screen reader supportkiro-cli settings chat.screenReader on

Busy indicators

The terminal UI shows a busy indicator while Kiro works. Set chat.enableCustomSpinnerVerbs to true to use the verb pool in chat.spinnerVerbs.

SettingTypeDefaultDescription
chat.enableCustomSpinnerVerbsbooleanfalseApply the custom verb pool from chat.spinnerVerbs
chat.spinnerVerbsobjectNot setA verb pool with append or replace mode

Run kiro-cli settings open, then merge these properties into the top-level object in ~/.kiro/settings/cli.json. Do not replace existing settings:

json
{ "chat.enableCustomSpinnerVerbs": true, "chat.spinnerVerbs": { "mode": "append", "verbs": [ "Checking...", "Reading documentation <https://docs.example.com>" ] } }

Use append to add your verbs to Kiro's built-in pool. Use replace to use only your verbs. An empty replace list falls back to the built-in busy indicator. A verb can end with a space and an http or https URL in angle brackets. Kiro shows the verb text and makes it a terminal hyperlink when the terminal supports hyperlinks.

Knowledge base

SettingTypeDescriptionExample
chat.enableKnowledgebooleanEnable knowledge base functionalitykiro-cli settings chat.enableKnowledge true
chat.enableCodeIntelligencebooleanEnable V3 code intelligencekiro-cli settings chat.enableCodeIntelligence true
knowledge.defaultIncludePatternsarrayDefault file patterns to includekiro-cli settings knowledge.defaultIncludePatterns '["*.py", "*.js"]'
knowledge.defaultExcludePatternsarrayDefault file patterns to excludekiro-cli settings knowledge.defaultExcludePatterns '["*.log", "node_modules"]'
knowledge.maxFilesnumberMaximum files for indexingkiro-cli settings knowledge.maxFiles 1000
knowledge.chunkSizenumberText chunk size for processingkiro-cli settings knowledge.chunkSize 512
knowledge.chunkOverlapnumberOverlap between text chunkskiro-cli settings knowledge.chunkOverlap 50
knowledge.indexTypestringType of knowledge indexkiro-cli settings knowledge.indexType "fast"

Key bindings (classic only)

These key bindings apply to the classic interface only and have no effect in the terminal UI.

SettingTypeDescriptionExample
chat.skimCommandKeycharKey for fuzzy search commandkiro-cli settings chat.skimCommandKey "f"
chat.autocompletionKeycharKey for autocompletion hint acceptancekiro-cli settings chat.autocompletionKey "Tab"
chat.tangentModeKeycharKey for tangent mode togglekiro-cli settings chat.tangentModeKey "t"
chat.delegateModeKeycharKey for delegate commandkiro-cli settings chat.delegateModeKey "d"

Key bindings (terminal UI)

Override the terminal UI shortcuts for cancelling a response, closing overlay menus, and quitting the session. Values use ctrl+, shift+, and alt+/meta+ modifiers with a single key (for example ctrl+shift+q, esc). Invalid values fall back to the built-in default.

SettingTypeDefaultDescriptionExample
chat.keybindings.cancelStreamstringescCancel the current agent response while it streamskiro-cli settings chat.keybindings.cancelStream "ctrl+x"
chat.keybindings.closeMenustringescClose overlay panels and pickerskiro-cli settings chat.keybindings.closeMenu "ctrl+["
chat.keybindings.quitstringctrl+cExit the chat sessionkiro-cli settings chat.keybindings.quit "ctrl+shift+q"

V3 loads MCP tools on demand by default. It reads saved toolSearch.* values in interactive runs. Kiro CLI 2.31.1 and later also applies them to non-interactive V3 runs. V2 remains opt-in. See Tool Search for details.

SettingTypeDescriptionExample
toolSearch.enabledbooleanControl Tool Search. V2 default: false. V3 loads tools on demand when no value is savedkiro-cli settings toolSearch.enabled true
toolSearch.minPctnumberActivate when MCP tool specs exceed this context-window percentage. V2 default: 5. V3 reads this only when toolSearch.enabled is also savedkiro-cli settings toolSearch.minPct 0
toolSearch.minTokensnumberActivate when MCP tool specs exceed this token count. V2 default: 50000. V3 reads this only when toolSearch.enabled is also savedkiro-cli settings toolSearch.minTokens 0

Feature toggles

SettingTypeDescriptionExample
chat.enableThinkingbooleanEnable the thinking tool for complex reasoning (distinct from chat.showThinking, which displays the model's own reasoning blocks)kiro-cli settings chat.enableThinking true
chat.enableTangentModebooleanEnable tangent mode feature (classic only)kiro-cli settings chat.enableTangentMode true
introspect.tangentModebooleanAuto-enter tangent mode for introspect (classic only)kiro-cli settings introspect.tangentMode true
chat.enableTodoListbooleanEnable the todo list feature in Classic; V3 does not provide todo_list, so this setting has no effect therekiro-cli settings chat.enableTodoList true
chat.enableCheckpointbooleanEnable checkpoint feature (classic only)kiro-cli settings chat.enableCheckpoint true
chat.enableDelegatebooleanEnable delegate tool (classic only)kiro-cli settings chat.enableDelegate true
chat.enableWorkflowsbooleanEnable declarative Workflows in V3 sessions; restart Kiro CLI after changing itkiro-cli settings chat.enableWorkflows true
chat.workflowLaunchstringChoose when V3 starts Workflows: when-asked (default), large-tasks, or delegate-allkiro-cli settings chat.workflowLaunch large-tasks
chat.enableSessionRecapbooleanShow a session recap above the prompt in a V3 session (Kiro CLI 3.1.0 or later). Off by default; start a new session after changing it. When enabled, Kiro makes one extra billed model call after each completed turn, and the full terminal UI displays the recap after three idle seconds. Lite mode does not display it, but the call still runs. See Session recapkiro-cli settings chat.enableSessionRecap true
chat.enableAutoAgentUpgradebooleanUpgrade V2-format agents in the scanned agent directories to the V3 format when a V3 session starts. In Kiro CLI 2.37 or later, unset means on; an explicit false turns it off, and interactive V3 launches then show a notice while any agents still need upgrading. Global only; a workspace's .kiro/settings/cli.json cannot override itkiro-cli settings chat.enableAutoAgentUpgrade false
app.disableAutoupdatesbooleanDisable background auto-updateskiro-cli settings app.disableAutoupdates true
app.warnOnElevatedPrivilegesbooleanShow a warning when Kiro CLI starts as root (macOS and Linux) or as Administrator (Windows). This setting is on by default and is global; a workspace's .kiro/settings/cli.json cannot override itkiro-cli settings app.warnOnElevatedPrivileges false

API and service

SettingTypeDescriptionExample
api.timeoutnumberOverall timeout in seconds for a streaming response (default 3600). Counts the full duration of the response, so the hour-long default gives long responses room to finish; set a lower value to enforce a shorter limitkiro-cli settings api.timeout 600
api.streamIdleSoftTimeoutnumberSeconds of response-stream silence before a stall warning is shown (default 60)kiro-cli settings api.streamIdleSoftTimeout 120
api.streamIdleHardTimeoutnumberSeconds of response-stream silence before the stalled request is cancelled (default 300)kiro-cli settings api.streamIdleHardTimeout 600
api.subagentTimeoutnumberSeconds a subagent can sit idle before it times out, instead of stalling the parent turn (default 3600)kiro-cli settings api.subagentTimeout 1800

Transient request failures — throttling, 5xx errors, and connection drops (including mid-stream resets) — are retried automatically with backoff; no setting is required.

Model context protocol (MCP)

SettingTypeDescriptionExample
mcp.initTimeoutnumberMCP server initialization timeout in milliseconds (default 5000)kiro-cli settings mcp.initTimeout 10000
mcp.noInteractiveTimeoutnumberMCP initialization timeout in milliseconds for non-interactive runs (default 30000)kiro-cli settings mcp.noInteractiveTimeout 60000
mcp.loadedBeforebooleanTrack previously loaded MCP serverskiro-cli settings mcp.loadedBefore true

Agent Client Protocol (ACP)

SettingTypeDescriptionExample
acp.agentEnginestringAgent harness for kiro-cli acp: v3, v2, or v1 (Kiro CLI 2.36 or later). The --agent-engine flag overrides it. In Kiro CLI 3.0.0 or later, unset starts V3 on a machine that can run it, unless the launch line carries a V2-only flag or Kiro recognizes the client as one that still needs V2. Global only; a workspace's .kiro/settings/cli.json cannot override it. chat.agentEngine does not apply to kiro-cli acp. See ACP clientskiro-cli settings acp.agentEngine v3

Common configuration examples

Basic setup

bash
# Enable telemetry kiro-cli settings telemetry.enabled true # Set default chat model kiro-cli settings chat.defaultModel "claude-sonnet-4.6" # Disable greeting message kiro-cli settings chat.greeting.enabled false

Knowledge base configuration

bash
# Enable knowledge base kiro-cli settings chat.enableKnowledge true # Set file patterns to include kiro-cli settings knowledge.defaultIncludePatterns '["*.py", "*.js", "*.md", "*.txt"]' # Set file patterns to exclude kiro-cli settings knowledge.defaultExcludePatterns '["*.log", "node_modules", ".git", "*.pyc"]' # Set maximum files to index kiro-cli settings knowledge.maxFiles 2000

Enable experimental features

bash
# Enable thinking tool kiro-cli settings chat.enableThinking true # Enable tangent mode kiro-cli settings chat.enableTangentMode true # Enable todo lists kiro-cli settings chat.enableTodoList true # Enable checkpoints kiro-cli settings chat.enableCheckpoint true # Configure key bindings kiro-cli settings chat.tangentModeKey "t" kiro-cli settings chat.delegateModeKey "d"

Performance tuning

bash
# Cap streaming responses at 10 minutes instead of the 60-minute default kiro-cli settings api.timeout 600 # Give slow connections more room before a stall warning kiro-cli settings api.streamIdleSoftTimeout 120 # Adjust knowledge base chunk size kiro-cli settings knowledge.chunkSize 1024 # Disable auto-compaction for long conversations kiro-cli settings chat.disableAutoCompaction true

Troubleshooting settings

Invalid setting values

Boolean values: Use true or false (lowercase)

bash
kiro-cli settings telemetry.enabled true # ✓ Correct kiro-cli settings telemetry.enabled True # ✗ Wrong

Array values: Use JSON format with single quotes

bash
kiro-cli settings knowledge.defaultIncludePatterns '["*.py", "*.js"]' # ✓ Correct

String values: Use quotes for strings with spaces

bash
kiro-cli settings chat.defaultModel "claude-sonnet-4.6" # ✓ Correct

Resetting settings

Delete individual settings:

bash
kiro-cli settings --delete setting.name

Open settings file for manual editing:

bash
kiro-cli settings open

View current settings to identify issues:

bash
kiro-cli settings list --all

Settings file issues

If the settings file becomes corrupted:

  1. Back up current settings:

    bash
    kiro-cli settings list --format json > backup.json
  2. Open the settings file:

    bash
    kiro-cli settings open
  3. Verify JSON syntax or restore from backup

Settings file location

Settings are stored in ~/.kiro/settings/cli.json.

You can edit this file directly, but using kiro-cli settings commands is recommended for validation.

Environment variables

VariableDescription
KIRO_HOMESet an absolute path to keep separate Kiro profiles, such as work and personal. In V3, it overrides the global Kiro directory for configuration, sign-ins, sessions, and agent state. A filesystem root, your home directory, one of its ancestors, or a relative path falls back to ~/.kiro.
KIRO_DEFAULT_SETTINGSAbsolute path to a file of default settings (Kiro CLI 3.1.0 or later, macOS and Linux). The file must be a regular file owned by root, not writable by group or others, 1 MiB or smaller, and contain a JSON object. Its values form the lowest settings layer; ~/.kiro/settings/cli.json and workspace settings override them. kiro-cli settings and /settings name the file as the source of a value that comes from it, and kiro-cli settings cannot set or remove values in it. If the path is relative or the file fails a check, Kiro shows one warning and ignores the file.
KIRO_LOG_NO_COLORSet to 1 to disable colored log output
NO_COLORSet to any value to disable all color output in the terminal UI
KIRO_SCREEN_READERSet to auto, on, or off to override chat.screenReader for one launch
KIRO_CLI_TOOL_SEARCH_MATCHING_THRESHOLDMinimum relevance score for V2 Tool Search keyword results (default: 1.5)

Next steps

Page updated: November 6, 2026