id = "kimi-code" name = "Kimi Code" homepage = "https://github.com/MoonshotAI/kimi-code" description = "Moonshot AI's coding agent for the terminal." icon = "theSVG:kimi" executables = ["kimi"] [dotfiles] # $KIMI_CODE_HOME, defaulting to ~/.kimi-code. config.toml holds providers and # the `[[hooks]]` array; tui.toml is presentation. paths = ["~/.kimi-code/config.toml", "~/.kimi-code/tui.toml"] exclude = [ "~/.kimi-code/bin/", "~/.kimi-code/cache/", "~/.kimi-code/logs/", "~/.kimi-code/server/", "~/.kimi-code/sessions/", "~/.kimi-code/search-index/", "~/.kimi-code/telemetry/", "~/.kimi-code/session_index.jsonl", "~/.kimi-code/device_id", "~/.kimi-code/region", "~/.kimi-code/migrations-effort.json", ] secret = ["~/.kimi-code/server.token"] # Provider API keys sit in config.toml beside the model settings worth # syncing. A prefix rule rather than a key_path one on purpose: `api_key` # appears under a provider table whose name differs per install, and the key # always starts its own line, so the line match is both simpler and more # robust than guessing the table. [[dotfiles.secret_paths]] file = "~/.kimi-code/config.toml" match = { prefix = ["api_key"] } # `[[hooks]]` entries are shell commands with absolute paths. The user wrote # them, so they are worth keeping to rebuild this machine, but they point at # scripts sitting at paths that exist here only and must not run elsewhere. [[dotfiles.machine_lines]] file = "~/.kimi-code/config.toml" match = { key_path = ["hooks.*.command"] } scope = "backup" [commands] format = 1 label = "Start Kimi Code" description = "Start an interactive session or run one prompt non-interactively, with model, mode and resume options. Subcommands (provider, session, web, acp, ...) are left out." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = false, short_bundles = false } [[commands.source]] id = "help" kind = "help" revision = "kimi --help (local)" evidence = """ -S, --session [id] Resume a session. With ID: resume that session. Without ID: interactively pick. -c, --continue Continue the previous session for the working directory. (default: -y, --yolo Start in Ask When Needed mode: routine edits and commands run --auto Start in Never Ask mode: never interrupts you; everything runs and -m, --model LLM model alias to use for this invocation. Defaults to -p, --prompt Run one prompt non-interactively and print the response. --output-format Output format for prompt mode. Defaults to text. (choices: "text", "stream-json") --add-dir Add an additional workspace directory for this session. Can be --plan Start in plan mode. (default: false) """ [[commands.field]] id = "prompt" label = "Prompt (non-interactive)" description = "Run one prompt and print the response instead of opening the TUI." type = "string" option = ["--prompt", "-p"] sources = ["help"] [[commands.field]] id = "model" label = "Model alias" type = "string" option = ["--model", "-m"] sources = ["help"] [[commands.field]] id = "continue" label = "Continue previous session" type = "boolean" option = ["--continue", "-c"] sources = ["help"] [[commands.field]] id = "plan" label = "Plan mode" type = "boolean" option = ["--plan"] sources = ["help"] [[commands.field]] id = "yolo" label = "Ask When Needed mode" description = "Routine edits and commands run automatically; risky actions still ask." type = "boolean" option = ["--yolo", "-y"] effect = "exec" sources = ["help"] [[commands.field]] id = "auto" label = "Never Ask mode" description = "Everything runs and is decided automatically." type = "boolean" option = ["--auto"] effect = "exec" sources = ["help"] [[commands.field]] id = "output_format" label = "Output format (prompt mode)" type = "enum" option = ["--output-format"] choices = [{ value = "text", label = "Text" }, { value = "stream-json", label = "Stream JSON" }] sources = ["help"] [[commands.field]] id = "add_dir" label = "Additional workspace directories" type = "path" path = { kind = "directory", role = "input" } option = ["--add-dir"] multiple = true sources = ["help"] [[commands.task]] id = "interactive" label = "Interactive session" fields = ["model", "plan"] required = [] [[commands.task]] id = "one_shot" label = "Run one prompt" fields = ["prompt", "model", "output_format"] required = ["prompt"] [[commands.group]] id = "basic" label = "Basic" fields = ["prompt", "model", "continue", "plan"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["yolo", "auto", "output_format", "add_dir"]