Kiro uses a layered configuration system with three scopes. Configuration closer to your current context takes priority over broader settings.
| Capability | IDE | CLI | Web | Mobile |
|---|---|---|---|---|
Global scope (~/.kiro/) | ✓ | ✓ | — | — |
Project scope (.kiro/) | ✓ | ✓ | ✓ | ✓ |
Agent scope (.kiro/agents/ or ~/.kiro/agents/) | ✓ | ✓ | — | — |
~/.kiro/.<project-root>/.kiro/.~/.kiro/agents/ (global) or .kiro/agents/ (project).| Configuration | Global scope | Project scope |
|---|---|---|
| MCP servers | ~/.kiro/settings/mcp.json | .kiro/settings/mcp.json |
| Permissions | ~/.kiro/settings/permissions.yaml | ~/.kiro/workspace-roots/<hash>/permissions.yaml (per-user, outside the repo) |
| Custom agents | ~/.kiro/agents/ | .kiro/agents/ |
| Steering | ~/.kiro/steering/ | .kiro/steering/ |
| Skills | ~/.kiro/skills/ | .kiro/skills/ |
| Hooks | ~/.kiro/hooks/ | .kiro/hooks/ |
| Powers | ~/.kiro/powers/ | — |
| Specs | — | .kiro/specs/ |
| Kiroignore | ~/.kiro/settings/kiroignore | .kiroignore |
| Settings (CLI) | ~/.kiro/settings/cli.json | — |
Not every feature is available at every scope. The table below shows where each configuration can be defined and whether it can be embedded in an agent profile.
| Configuration | Global | Project | Agent scope |
|---|---|---|---|
| MCP servers | ✓ | ✓ | ✓ (mcpServers field or includeMcpJson) |
| Permissions | ✓ | ✓ | ✓ (permissions field) |
| Custom agents | ✓ | ✓ | N/A |
| Steering | ✓ | ✓ | ✓ (resources field) |
| Skills | ✓ | ✓ | ✓ (resources field) |
| Hooks | ✓ | ✓ | ✓ (CLI only, hooks field) |
| Powers | ✓ | — | ✓ (includePowers field) |
| Specs | — | ✓ | — |
| Kiroignore | ✓ | ✓ | — |
| Settings | ✓ | — | — |
When the same configuration exists in multiple scopes, the scope closest to your current context wins:
| Configuration | Priority (highest → lowest) |
|---|---|
| MCP servers | Agent > Project > Global |
| Permissions | deny wins regardless of scope (deny-overrides algorithm) |
| Custom agents | Project > Global (same-name: project wins with warning) |
| Steering | All scopes merged (not overridden) |
| Skills | All scopes merged |
| Hooks | All scopes merged |
Since MCP servers can be configured in three scopes and agents have an includeMcpJson setting, MCP server resolution has additional rules. See MCP server loading priority for details.
Web and Mobile clients only read project-scope configuration committed to the repository. Global configuration (~/.kiro/) is not available — there's no local filesystem on these surfaces.
| Configuration | Web | Mobile |
|---|---|---|
Project steering (.kiro/steering/) | ✓ | ✓ |
Project skills (.kiro/skills/) | ✓ | ✓ |
Project MCP servers (.kiro/settings/mcp.json) | — | — |
| Sandbox MCP (configured via Web settings) | ✓ | — |
| Permissions | — | — |
| Hooks | — | — |
See Custom agents: surface behavior for details on Web/Mobile limitations.
Configuration scopes