id = "kiro" name = "Kiro" homepage = "https://kiro.dev" description = "An agentic IDE that helps you go from prototype to production with spec-driven development." # kiro.dev serves the same mark as its SVG favicon. icon = "theSVG:kiro" # kiro-cli is the command the docs have you run: https://kiro.dev/docs/cli/ # walks through `kiro-cli login` and `kiro-cli chat`. The IDE build shares the # same ~/.kiro directory — the MCP page below lists "IDE", "CLI" and "Web" as # three surfaces over one user-level config — but its own launcher name is not # documented, so only the CLI is named here. executables = ["kiro-cli"] [dotfiles] # https://kiro.dev/docs/mcp/configuration/ names two scopes for the MCP server # list and says what each one means: "Workspace Level: .kiro/settings/mcp.json" # and "User Level: ~/.kiro/settings/mcp.json — Applies globally across all # workspaces". The troubleshooting section at the bottom of the same page reads # them back with `cat ~/.kiro/settings/mcp.json`. # # https://kiro.dev/docs/steering/ is the same pair for steering documents: # per-project .kiro/steering/ and a global ~/.kiro/steering/ that applies to # every project. # # ~/.kiro is a literal dotfile directory in the home directory; the docs give # no XDG or %APPDATA% spelling for it. paths = [ "~/.kiro/settings/mcp.json", "~/.kiro/steering/", ] # No whole-file credential documented under ~/.kiro: the sign-in is an account # session rather than a file the docs place there. secret = [] # The MCP page's property tables are where the credentials are. For a local # server: "env Object No Environment variables for the server process", and the # examples set API keys there directly; the page's own "Environment variables" # section says "Many MCP servers require environment variables for # authentication" and offers ${VARIABLE_NAME} as the way to avoid writing one # in. For a remote server the table adds "headers Object No Headers to pass to # the MCP server during connection" — where a bearer token goes. Both are # lifted out; a ${VAR} reference costs nothing to carry through a secret store, # while a pasted key would otherwise sync in the clear. [[dotfiles.secret_paths]] file = "~/.kiro/settings/mcp.json" match = { key_path = ["mcpServers.*.env.*", "mcpServers.*.headers.*"] } [commands] format = 1 label = "Chat with Kiro" description = "Start a Kiro CLI chat, optionally with a first message, a specific agent, or resuming the previous conversation. Cloud sessions, tool trust lists and harness selection are left out." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = false, short_bundles = false } [[commands.source]] id = "doc" kind = "manual" url = "https://kiro.dev/docs/reference/cli-commands/" revision = "2026-10" evidence = """ kiro-cli chat [INPUT] --no-interactive Print first response to STDOUT without interactive mode --resume / -r Resume the previous conversation from this directory --list-sessions List all saved chat sessions for the current directory --list-models Display available models --agent Specify which agent to use --trust-all-tools Allow the model to use any tool without confirmation --wrap Line wrapping mode: always, never, or auto (default) """ [[commands.subcommand]] path = ["chat"] label = "Chat" [[commands.subcommand.source]] id = "doc" kind = "manual" url = "https://kiro.dev/docs/reference/cli-commands/" revision = "2026-10" evidence = """ kiro-cli chat [INPUT] --no-interactive Print first response to STDOUT without interactive mode --resume / -r Resume the previous conversation from this directory --list-sessions List all saved chat sessions for the current directory --list-models Display available models --agent Specify which agent to use --trust-all-tools Allow the model to use any tool without confirmation --wrap Line wrapping mode: always, never, or auto (default) """ [[commands.subcommand.field]] id = "input" label = "First message" type = "string" position = 0 sources = ["doc"] [[commands.subcommand.field]] id = "agent" label = "Agent" type = "string" option = ["--agent"] sources = ["doc"] [[commands.subcommand.field]] id = "resume" label = "Resume previous conversation" type = "boolean" option = ["--resume", "-r"] sources = ["doc"] [[commands.subcommand.field]] id = "no_interactive" label = "Print first response and exit" type = "boolean" option = ["--no-interactive"] sources = ["doc"] [[commands.subcommand.field]] id = "trust_all" label = "Trust all tools" description = "Lets the model use any tool without confirmation." type = "boolean" option = ["--trust-all-tools"] effect = "exec" sources = ["doc"] [[commands.subcommand.field]] id = "wrap" label = "Line wrapping" type = "enum" option = ["--wrap"] choices = [{ value = "always", label = "Always" }, { value = "never", label = "Never" }, { value = "auto", label = "Auto" }] sources = ["doc"] [[commands.subcommand.field]] id = "list_sessions" label = "List saved sessions" type = "boolean" option = ["--list-sessions"] sources = ["doc"] [[commands.subcommand.field]] id = "list_models" label = "List models" type = "boolean" option = ["--list-models"] sources = ["doc"] [[commands.subcommand.task]] id = "chat" label = "Start a chat" fields = ["input", "agent"] required = [] [[commands.subcommand.task]] id = "one_shot" label = "Ask once" fields = ["input", "agent", "no_interactive"] required = ["input", "no_interactive"] set = { no_interactive = [true] } [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["input", "agent", "resume", "no_interactive"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["trust_all", "wrap", "list_sessions", "list_models"]