Most configuration is managed from the Settings panel in the dashboard. Open it from the sidebar — every setting has a description and type-safe controls. Changes take effect immediately.
The Settings panel is organized into sections:
| Section | What you configure |
|---|---|
| Overview | Quick status and system info |
| Imports | Import settings from another instance |
| Chat | Session timeout, autopilot default, bot name |
| Display | Themes and color theme (14 themes with dark/light variants) |
| Voice | STT provider, TTS voice and speed |
| Notifications | Notification preferences |
| Shortcuts | Keyboard shortcut customization |
| Skills | Skill loading behavior |
| Channels | Slack, Discord, Telegram, Teams, Webex, WeCom, WeChat credentials and settings |
| Browser | Browser automation settings |
| Computer Use | Desktop automation enable/disable |
| Instances | Multi-instance management |
| Security | Sandbox mode, denied commands, governance |
| Developer | Developer-facing options |
| About | Version info and updates |
For headless environments or scripting, use kirocrew config:
kirocrew config get # print full config kirocrew config get agent.sandbox # print one key kirocrew config set dashboard.bot_name "X" # set a key kirocrew config edit # open in $EDITOR
Setting a value auto-triggers a session pool restart so the change takes effect immediately.
Settings persist to ~/.kiro/crew/config.json. You can edit this file directly if you prefer — the format is standard JSON with missing keys falling back to defaults.
{ "agent": { "provider": "acp", "approval_mode": "interactive", "sandbox": "auto" }, "session": { "timeout_secs": 1800, "pool_size": 2 }, "dashboard": { "bot_name": "Crew" } }
The following keys are useful when you manage config.json directly. Missing keys use their defaults.
| Key | Default | Meaning |
|---|---|---|
agent.chat_turn_timeout_secs | 14400 | Maximum wall-clock time for one chat turn, up to 24 hours. |
agent.subagent_timeout_secs | 10800 | Maximum wall-clock time for a subagent. 0 uses the default. |
agent.subagent_max_turns | 100 | Default tool-call budget per subagent. Values are capped at 1000. |
agent.session_control | true | Lets an agent open, stop, read, and send to eligible sessions in the same workspace. Set it to false to withdraw that capability from every agent. |
orchestrator.max_plan_duration_seconds | 7200 | Whole-plan limit for unattended auto-run plans. Set 0 to remove the limit. Plans that advance through stage gates are exempt because each stage needs your approval. |
agent.sandbox | "auto" | Chooses the normal sandbox posture for agent subprocesses. |
agent.sandbox_allow_unsandboxed_exec | false | Allows execution without a sandbox backend only when explicitly set to true. Leave it false to fail closed when no backend is available. |
dashboard.terminal.completion.enabled | true | Set to false to disable inline completion menus in the built-in terminal. |
telemetry.enabled | false | Enables local metrics collection under ~/.kiro/crew/metrics. It does not enable network export by itself. |
instances.enabled | false | Enables multi-instance management and SSH tunnels to connected Kiro Crew gateways. |
instances.warm_set_cap | 0 | Number of connected instances kept warm with a live tunnel. 0 sizes the warm set automatically for eligible instances, capped at 8. |
instances.tunnel_base_port | 7778 | First local port used for SSH tunnels to connected instances. |
instances.max_recovery_attempts | 8 | Reconnect attempts before an instance is marked unreachable. |
instances.recover_backoff_max_secs | 30 | Maximum wait between reconnect attempts. |
instances.probe_failure_threshold | 3 | Consecutive failed health probes before recovery starts. |
capabilities.publish | Disabled by default | Governance capability for artifact publishing. Configure it through the applicable governance policy, not config.json. |
publish.allowed_destinations | [] | Publish-provider IDs the operator permits. An empty list allows registered destinations, subject to the capabilities.publish governance ceiling. |
14-theme color system with dark and light variants. Change from Settings → Display → Color Theme in the dashboard. You can also create custom themes or import themes shared by others.
The dashboard interface ships in twelve languages: English, German, Spanish, French, Italian, Portuguese, Russian, Hindi, Bengali, Chinese, Korean, and Japanese. Change the interface language from the dashboard Settings panel. CJK (Chinese, Japanese, Korean) text renders correctly throughout, including bold, italic, and strikethrough in prose.
Language applies to the interface. The agent responds in whatever language you write to it in, independent of this setting.
Channel tokens live in ~/.kiro/crew/.env (not in config.json) for security. Configure them from the dashboard's Settings → Channels panel, or set them manually:
SLACK_APP_TOKEN=xapp-… SLACK_BOT_TOKEN=xoxb-… KIROCREW_OWNER_ID=U0… DISCORD_BOT_TOKEN=… TELEGRAM_BOT_TOKEN=… WECOM_BOT_ID=… WECOM_SECRET=…
The file is enforced at mode 600 (owner-only read/write).
Two environment variables control runtime behavior that can't live in config.json:
| Variable | Default | Purpose |
|---|---|---|
KIROCREW_HOME | ~/.kiro/crew | Data directory — where config, memory, and credentials live |
KIROCREW_PORT | 5476 | Port the gateway binds to |
Set these before starting the gateway. Override the port per-invocation with kirocrew gateway --port <n>.
All persistent state lives under ~/.kiro/crew/ (or wherever KIROCREW_HOME points). See the Installation page for the full directory layout.
Configuration