Most configuration is managed from Settings in the dashboard. The Gateway watches config.json and config.local.json, so most changes take effect as soon as they are saved. Fields such as the Slack slash command and mcp.honour_auto_approve carry a Changes need a restart badge. Credential changes also require a restart before the affected integration reconnects.
| Section | What you configure |
|---|---|
| Overview | Quick status, coding hours, and system information |
| Import / Export | Data from another AI agent, and backup or restore of Kiro Crew configuration, optionally with chat history |
| Agent Harness | Which agent new sessions start, Subagent Settings, and Pre-started Sessions |
| Chat | Memory mode, models, composer behavior, link patterns, and timeouts |
| Display | Theme, typography, zoom, terminal, and layout |
| Voice | Dictation provider, microphone, TTS voice, and speed |
| Notifications | Banner and desktop-alert preferences |
| Secrets | Write-only credentials for managed integrations, including WakaTime |
| Shortcuts | Keyboard shortcut customization |
| Skills | Skill discovery and trigger-injection limits |
| Messaging Channels | Slack, Discord, Telegram, Teams, Webex, WeCom, WeChat, and other channels |
| Browser | Browser automation settings |
| Computer Use | Native desktop automation |
| Remote Crew | SSH, AWS SSM, and Fargate connections |
| Security | Sandbox, denied commands, and governance |
| Developer | Agent backends, telemetry, and Feature Previews |
| About | Version, release channel, and updates |
Agent and crewmate configuration lives outside Settings, under Customize in the sidebar (labeled Agent Capabilities before 0.9). Subagent Settings and the Pre-started Sessions card (formerly Warm Pool) moved to Settings → Agent Harness.
Settings → Import / Export backs up Kiro Crew configuration to an archive and restores it. Check Include chat history to add every chat in your Sessions list to the export. Incognito and Temporary chats are never included. Chats keep anything pasted into them, such as passwords or keys, so keep the archive private.
Older chats that do not fit in the archive are left out, and the export names them. On import, chats that are Incognito, Temporary, or unreadable are withheld and named.
session.compact_wait_secs) is the longest a compaction may run. 0 means the default of 300 seconds; otherwise 60 to 3,600 seconds, and a value outside that range is clamped. What happens past the limit depends on who started the compaction: automatic compaction and the task runner's compaction restart the session, a chat channel's near-limit compaction gives up and keeps the session, and a manual /compact reports that it timed out.The WakaTime integration is off by default. When enabled, Kiro Crew sends coding-activity heartbeats to WakaTime and reads the account's statistics.
wakatime.enabled to true in $KIROCREW_HOME/config.json (by default ~/.kiro/crew/config.json).WAKATIME_API_KEY credential is vault-only; Kiro Crew does not read it from .env or config.json.The card defaults to Last 7 days. Choose Today, Last 7 days, Last 30 days, or Last 6 months to see total coding time, daily average, active projects, and language and project breakdowns. Export hours (CSV) and Export hours (JSON) download project-grouped hours for the selected date range.
Get an API key from WakaTime account settings.
kirocrew config get kirocrew config get agent.sandbox kirocrew config set dashboard.bot_name "X" kirocrew config set --local dashboard.bot_name "X" kirocrew config edit
--local writes config.local.json, whose values override config.json and survive an update. Both files use standard JSON; omitted keys use the current shipped defaults. The live loader applies ordinary changes without restarting sessions. When a field is marked restart-required, restart after saving it.
{ "agent": { "approval_mode": "auto", "sandbox": "auto" }, "session": { "timeout_secs": 3600, "autocompact_pct": 70 }, "dashboard": { "default_memory_mode": "persistent" }, "skills": { "max_triggered": 0 } }
| Key | Default | Meaning |
|---|---|---|
agent.chat_turn_timeout_secs | 14400 | Maximum wall-clock time for one chat turn |
agent.subagent_timeout_secs | 10800 | Maximum wall-clock time for one subagent |
agent.subagent_max_turns | 1000 | Tool-call budget per subagent, capped at 1000 |
agent.session_control | true | Lets eligible agents create, read, message, and stop peer sessions |
agent.refusal_fallback_model | "" | Model used for one retry after a content-filter refusal; empty disables the retry |
session.timeout_secs | 3600 | Idle-session timeout in seconds; 0 disables the idle sweep |
session.autocompact_pct | 70 | Context-use percentage that starts automatic compaction |
orchestrator.max_plan_duration_seconds | 7200 | Whole-plan limit for unattended auto-run plans; 0 removes it |
agent.sandbox | "auto" | Chooses auto, strict, or off for new agent subprocesses; see Security |
agent.sandbox_allow_unsandboxed_exec | false | Allows execution without a sandbox only when explicitly enabled |
agent.deepseek_env | {} | Maps DeepSeek Harness environment variable names to secret:// vault references |
dashboard.default_memory_mode | "persistent" | Memory mode for new dashboard chats: persistent, incognito, or temporary |
dashboard.model_picker_hidden_models | [] | Models hidden by Selectable Models; Auto and the active model stay visible |
dashboard.link_patterns | [] | JavaScript regex and absolute URL-template pairs used by Text Link Patterns |
dashboard.title_refresh_every_turns | 0 | Rechecks an auto-generated title every N turns; 0 keeps the built-in schedule |
dashboard.terminal.completion.enabled | true | Enables terminal command and path completion |
memory.persistence_enabled | true | Enables automatic memory writes and consolidation |
memory.inject_memory | true | Adds stored memory to new-session context |
memory.inject_lessons | true | Adds learned corrections to new-session context |
memory.inject_activity | true | Adds recent projects, history, task facts, and past episodes |
mcp.honour_auto_approve | true | Honors owner-written autoApprove lists in MCP and agent files; app lists remain ignored. Requires a Gateway restart |
monitoring.max_runtime_secs | 604800 | Operator ceiling for a new or updated monitor, up to thirty days |
skills.max_triggered | 0 | Maximum matched skills injected per message; 0 disables trigger injection, not discovery |
wakatime.enabled | false | Enables coding-hours reporting after the API key is stored in the secrets vault |
telemetry.enabled | false | Enables local latency and fault-rate metrics; it does not export them |
auto_update | true | Checks source installs for updates at startup and every twelve hours |
instances.enabled | false | Enables remote-crew and multi-instance management |
instances.warm_set_cap | 0 | Fixed warm-tunnel limit; 0 sizes it automatically, capped at 8 |
capabilities.publish | Disabled | Governance capability for public artifact publishing |
publish.allowed_destinations | [] | Providers allowed below the publishing governance ceiling |
Enable Settings → Developer → Feature Previews → Decisions (Jev) only after reviewing the destination and data categories shown on the card. Consent is stored outside config.json, so an agent cannot enable the transfer by editing settings.
Turning on the main switch does not arm every behavior. Choose Auto (Jev) in a chat's model picker for per-turn model routing and Auto (Jev) on the busy send button for Steer-or-Queue decisions. Automatic skill selection also requires skills.max_triggered above zero; that setting globally enables per-message trigger injection, not only Jev. Recalled-memory filtering and the optional tool-risk and compaction measurements each have their own consent switch.
Relevant settings:
| Key | Default | Meaning |
|---|---|---|
decisions.bucket | 100 | Percentage of otherwise-eligible sessions included in the stable sample |
decisions.history_budget_chars | 0 | Maximum prior-conversation characters sent with a decision; 0 sends none |
decisions.model_route.simple | "" | Model for messages Jev classifies as simple; empty keeps the current model |
decisions.model_route.medium | "" | Model for medium messages |
decisions.model_route.complex | "" | Model for complex messages |
A concrete model selection always wins over Auto (Jev). Scheduled jobs, subagents, app requests, and remote-crew turns keep their own model settings.
Choose a theme, typography, and interface language under Settings → Display. The interface ships in English, German, Spanish, French, Italian, Portuguese, Russian, Hindi, Bengali, Chinese, Korean, and Japanese. The agent's response language follows your conversation rather than this display setting.
In the desktop app, Settings → Display → Zoom Level accepts a typed exact percent, clamped to 50 to 300 percent. A browser tab cannot set the browser's own zoom, so the setting shows the keyboard shortcut hint instead.
Channel credentials live in the encrypted secrets vault or ~/.kiro/crew/.env, not in config.json. Configure them under Settings → Messaging Channels. The .env file is owner-readable and owner-writable only.
| Variable | Default | Purpose |
|---|---|---|
KIROCREW_HOME | ~/.kiro/crew | Data directory for configuration, memory, logs, and credentials |
KIROCREW_PORT | 5476 | Gateway port |
KIROCREW_CREW_LOG | enabled when unset | Set to 0 before Gateway start to disable the default redacted Crew log and session ledger |
Set these before starting the Gateway. Use --port to override KIROCREW_PORT for one invocation.
Persistent state lives under ~/.kiro/crew/, unless KIROCREW_HOME points elsewhere. See Installation for the directory layout.
Configuration