Merge branch 'main' into fix/hanging-sessions-v2

This commit is contained in:
Marian Alexandru Alecu
2026-04-28 14:02:31 +03:00
committed by GitHub
265 changed files with 6812 additions and 3937 deletions
+5
View File
@@ -0,0 +1,5 @@
---
"@kilocode/cli": patch
---
Improve Windows worktree cleanup reliability when file handles are released slowly.
+7 -2
View File
@@ -1,5 +1,10 @@
name: "Setup Bun"
description: "Setup Bun with caching and install dependencies"
inputs:
install-flags:
description: "Additional flags to pass to 'bun install'"
required: false
default: ""
runs:
using: "composite"
steps:
@@ -46,8 +51,8 @@ runs:
# e.g. ./patches/ for standard-openapi
# https://github.com/oven-sh/bun/issues/28147
if [ "$RUNNER_OS" = "Windows" ]; then
bun install --linker hoisted
bun install --linker hoisted ${{ inputs.install-flags }}
else
bun install
bun install ${{ inputs.install-flags }}
fi
shell: bash
+2 -2
View File
@@ -13,8 +13,8 @@ Some description of HOW you achieved it. Perhaps give a high level description o
## Screenshots
| before | after |
| ------ | ----- |
| | |
|---|---|
| | |
## How to Test
@@ -0,0 +1,24 @@
name: Check markdown table padding
on:
pull_request:
paths:
- "**/*.md"
- "script/check-md-table-padding.ts"
- ".github/workflows/check-md-table-padding.yml"
workflow_dispatch:
jobs:
check:
name: Check markdown table padding
if: github.repository == 'Kilo-Org/kilocode'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
- uses: oven-sh/setup-bun@v2
- name: Run check
run: bun run script/check-md-table-padding.ts
@@ -1,13 +1,13 @@
on:
schedule:
- cron: "7,37 * * * *" # every 30 min at :07 and :37
- cron: "7,37 * * * *" # every 30 min at :07 and :37
workflow_dispatch:
concurrency:
group: opencode-release-watch
cancel-in-progress: false
permissions:
permissions:
contents: read
jobs:
@@ -66,4 +66,3 @@ jobs:
with:
path: .cache/last-seen
key: last-seen-${{ steps.fetch.outputs.tag }}
@@ -21,15 +21,15 @@ The test runner at `tests/visual-regression.spec.ts` is fully automatic — it f
Stories live in `packages/kilo-vscode/webview-ui/src/stories/`. Existing files and their scope:
| File | Components covered |
| --------------------------- | -------------------------------------------------------- |
| `agent-manager.stories.tsx` | FileTree, DiffPanel, FullScreenDiffView, WorktreeItem |
| `chat.stories.tsx` | ChatView, QuestionDock |
| `composite.stories.tsx` | AssistantMessage with tool cards, permissions, questions |
| `prompt-input.stories.tsx` | PromptInput (sidebar prompt bar) |
| `settings.stories.tsx` | Settings panel, ProvidersTab |
| `history.stories.tsx` | SessionList |
| `shared.stories.tsx` | ModelSelector and shared controls |
| File | Components covered |
|---|---|
| `agent-manager.stories.tsx` | FileTree, DiffPanel, FullScreenDiffView, WorktreeItem |
| `chat.stories.tsx` | ChatView, QuestionDock |
| `composite.stories.tsx` | AssistantMessage with tool cards, permissions, questions |
| `prompt-input.stories.tsx` | PromptInput (sidebar prompt bar) |
| `settings.stories.tsx` | Settings panel, ProvidersTab |
| `history.stories.tsx` | SessionList |
| `shared.stories.tsx` | ModelSelector and shared controls |
Add to an existing file if the component fits. Create a new file only for a genuinely new component area.
@@ -227,12 +227,12 @@ The title-slug is derived from the meta `title` (lowercased, slashes become hyph
Example mapping:
| Meta title | Export name | Snapshot path |
| --------------------- | -------------------- | ----------------------------------------------------------- |
| `"Chat"` | `ChatViewIdle` | `chat/chat-view-idle-chromium-linux.png` |
| Meta title | Export name | Snapshot path |
|---|---|---|
| `"Chat"` | `ChatViewIdle` | `chat/chat-view-idle-chromium-linux.png` |
| `"Composite/Webview"` | `GlobWithPermission` | `composite-webview/glob-with-permission-chromium-linux.png` |
| `"Prompt Input"` | `Default200` | `prompt-input/default-200-chromium-linux.png` |
| `"AgentManager"` | `WorktreeItemActive` | `agentmanager/worktree-item-active-chromium-linux.png` |
| `"Prompt Input"` | `Default200` | `prompt-input/default-200-chromium-linux.png` |
| `"AgentManager"` | `WorktreeItemActive` | `agentmanager/worktree-item-active-chromium-linux.png` |
# Reference: Playwright config
+9
View File
@@ -1 +1,10 @@
packages/desktop/src/bindings.ts
# Markdown is excluded because prettier re-pads markdown table cells for column
# alignment, which creates large spurious diffs on any unrelated content change.
# See AGENTS.md "Markdown Tables" and script/check-md-table-padding.ts.
*.md
packages/opencode/src/provider/models-snapshot.ts
packages/opencode/src/provider/models-snapshot.js
packages/opencode/src/provider/models-snapshot.d.ts
+38 -18
View File
@@ -27,12 +27,12 @@ Kilo CLI is an open source AI coding agent that generates code from natural lang
All products are clients of the **CLI** (`packages/opencode/`), which contains the AI agent runtime, HTTP server, and session management. Each client spawns or connects to a `kilo serve` process and communicates via HTTP + SSE using `@kilocode/sdk`.
| Product | Package | Description |
| ---------------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Kilo CLI | `packages/opencode/` | Core engine. TUI, `kilo run`, `kilo serve`, `kilo web`. Fork of upstream OpenCode. |
| Product | Package | Description |
|---|---|---|
| Kilo CLI | `packages/opencode/` | Core engine. TUI, `kilo run`, `kilo serve`, `kilo web`. Fork of upstream OpenCode. |
| Kilo VS Code Extension | `packages/kilo-vscode/` | VS Code extension. Bundles the CLI binary, spawns `kilo serve` as a child process. Includes the **Agent Manager** — a multi-session orchestration panel with git worktree isolation. |
| OpenCode Desktop | `packages/desktop/` | Standalone Tauri native app. Bundles CLI as sidecar. Single-session UI. Unrelated to the VS Code extension. Not actively maintained — synced from upstream fork. |
| OpenCode Web | `packages/app/` | Shared SolidJS frontend used by both the desktop app and `kilo web` CLI command. Not actively maintained — synced from upstream fork. |
| OpenCode Desktop | `packages/desktop/` | Standalone Tauri native app. Bundles CLI as sidecar. Single-session UI. Unrelated to the VS Code extension. Not actively maintained — synced from upstream fork. |
| OpenCode Web | `packages/app/` | Shared SolidJS frontend used by both the desktop app and `kilo web` CLI command. Not actively maintained — synced from upstream fork. |
**Agent Manager** refers to a feature inside `packages/kilo-vscode/` (extension code in `src/agent-manager/`, webview in `webview-ui/agent-manager/`). It is not a standalone product. See the extension's `AGENTS.md` for details.
@@ -40,19 +40,19 @@ All products are clients of the **CLI** (`packages/opencode/`), which contains t
Turborepo + Bun workspaces. The packages you'll work with most:
| Package | Name | Purpose |
| -------------------------- | -------------------------- | ------------------------------------------------------------------------------------------ |
| `packages/opencode/` | `@kilocode/cli` | Core CLI -- agents, tools, sessions, server, TUI. This is where most work happens. |
| `packages/sdk/js/` | `@kilocode/sdk` | Auto-generated TypeScript SDK (client for the server API). Do not edit `src/gen/` by hand. |
| `packages/kilo-vscode/` | `kilo-code` | VS Code extension with sidebar chat + Agent Manager. See its own `AGENTS.md` for details. |
| `packages/kilo-gateway/` | `@kilocode/kilo-gateway` | Kilo auth, provider routing, API integration |
| `packages/kilo-telemetry/` | `@kilocode/kilo-telemetry` | PostHog analytics + OpenTelemetry |
| `packages/kilo-i18n/` | `@kilocode/kilo-i18n` | Internationalization / translations |
| `packages/kilo-ui/` | `@kilocode/kilo-ui` | SolidJS component library shared by the extension webview and `packages/app/` |
| `packages/app/` | `@opencode-ai/app` | Shared SolidJS web UI for desktop app and `kilo web` |
| `packages/desktop/` | `@opencode-ai/desktop` | Tauri desktop app shell |
| `packages/util/` | `@opencode-ai/util` | Shared utilities (error, path, retry, slug, etc.) |
| `packages/plugin/` | `@kilocode/plugin` | Plugin/tool interface definitions |
| Package | Name | Purpose |
|---|---|---|
| `packages/opencode/` | `@kilocode/cli` | Core CLI -- agents, tools, sessions, server, TUI. This is where most work happens. |
| `packages/sdk/js/` | `@kilocode/sdk` | Auto-generated TypeScript SDK (client for the server API). Do not edit `src/gen/` by hand. |
| `packages/kilo-vscode/` | `kilo-code` | VS Code extension with sidebar chat + Agent Manager. See its own `AGENTS.md` for details. |
| `packages/kilo-gateway/` | `@kilocode/kilo-gateway` | Kilo auth, provider routing, API integration |
| `packages/kilo-telemetry/` | `@kilocode/kilo-telemetry` | PostHog analytics + OpenTelemetry |
| `packages/kilo-i18n/` | `@kilocode/kilo-i18n` | Internationalization / translations |
| `packages/kilo-ui/` | `@kilocode/kilo-ui` | SolidJS component library shared by the extension webview and `packages/app/` |
| `packages/app/` | `@opencode-ai/app` | Shared SolidJS web UI for desktop app and `kilo web` |
| `packages/desktop/` | `@opencode-ai/desktop` | Tauri desktop app shell |
| `packages/util/` | `@opencode-ai/util` | Shared utilities (error, path, retry, slug, etc.) |
| `packages/plugin/` | `@kilocode/plugin` | Plugin/tool interface definitions |
## Style Guide
@@ -169,6 +169,26 @@ const bazFoo = 3
You MUST avoid using `mocks` as much as possible.
Tests MUST test actual implementation, do not duplicate logic into a test.
## Markdown Tables
Do not pad markdown table cells for column alignment. Use the compact form with single-space-padded content cells and a minimal separator row:
```
| Command | What it runs |
|---|---|
| `kilo serve` | The prod CLI on `$PATH`. |
```
Do **not** right-pad cells to line up columns:
```
| Command | What it runs |
| ----------------------------- | ------------------------ |
| `kilo serve` | The prod CLI on `$PATH`. |
```
Padding makes every content change rewrite the entire table, which blows up diffs on untouched rows. Markdown files are excluded from prettier (see `.prettierignore`) so running the formatter won't re-pad them, and `script/check-md-table-padding.ts` enforces the rule in CI. Run `bun run script/check-md-table-padding.ts --fix` to auto-rewrite padded tables.
## Commit Conventions
[Conventional Commits](https://www.conventionalcommits.org/) with scopes matching packages: `vscode`, `cli`, `agent-manager`, `sdk`, `ui`, `i18n`, `kilo-docs`, `gateway`, `telemetry`, `desktop`. Omit scope when spanning multiple packages.
+5 -5
View File
@@ -124,11 +124,11 @@ This redirects all gateway traffic (auth, model listing, provider routing, profi
There are also optional overrides for other services:
| Variable | Default | Purpose |
| ------------------------- | -------------------------------- | ----------------------------------------- |
| `KILO_API_URL` | `https://api.kilo.ai` | Kilo API (gateway, auth, models, profile) |
| `KILO_SESSION_INGEST_URL` | `https://ingest.kilosessions.ai` | Session export / cloud sync |
| `KILO_MODELS_URL` | `https://models.dev` | Model metadata |
| Variable | Default | Purpose |
|---|---|---|
| `KILO_API_URL` | `https://api.kilo.ai` | Kilo API (gateway, auth, models, profile) |
| `KILO_SESSION_INGEST_URL` | `https://ingest.kilosessions.ai` | Session export / cloud sync |
| `KILO_MODELS_URL` | `https://models.dev` | Model metadata |
> **VS Code:** The repo includes a "VSCode - Run Extension (Local Backend)" launch config in `.vscode/launch.json` that sets `KILO_API_URL=http://localhost:3000` automatically.
+10 -10
View File
@@ -102,16 +102,16 @@ The workflow requires these GitHub token permissions:
The following secrets must be configured in the repository:
| Secret | Purpose |
| ---------------------------- | ---------------------------------------------------------------- |
| `KILO_API_KEY` | Kilo API key used during version computation |
| `KILO_ORG_ID` | Kilo organization ID |
| `KILO_MAINTAINER_APP_ID` | GitHub App ID for the kilo-maintainer bot (used for git commits) |
| `KILO_MAINTAINER_APP_SECRET` | GitHub App secret for the kilo-maintainer bot |
| `NPM_TOKEN` | npm authentication token for publishing packages |
| `VSCE_TOKEN` | VS Code Marketplace personal access token |
| `OVSX_TOKEN` | Open VSX Registry token (currently unused but configured) |
| `AUR_KEY` | SSH private key for pushing to the AUR |
| Secret | Purpose |
|---|---|
| `KILO_API_KEY` | Kilo API key used during version computation |
| `KILO_ORG_ID` | Kilo organization ID |
| `KILO_MAINTAINER_APP_ID` | GitHub App ID for the kilo-maintainer bot (used for git commits) |
| `KILO_MAINTAINER_APP_SECRET` | GitHub App secret for the kilo-maintainer bot |
| `NPM_TOKEN` | npm authentication token for publishing packages |
| `VSCE_TOKEN` | VS Code Marketplace personal access token |
| `OVSX_TOKEN` | Open VSX Registry token (currently unused but configured) |
| `AUR_KEY` | SSH private key for pushing to the AUR |
### Concurrency
+7 -7
View File
@@ -24,13 +24,13 @@ Server mode is opt-in only. When enabled, set `KILO_SERVER_PASSWORD` to require
### Out of Scope
| Category | Rationale |
| ------------------------------- | ----------------------------------------------------------------------- |
| **Server access when opted-in** | If you enable server mode, API access is expected behavior |
| **Sandbox escapes** | The permission system is not a sandbox (see above) |
| **LLM provider data handling** | Data sent to your configured LLM provider is governed by their policies |
| **MCP server behavior** | External MCP servers you configure are outside our trust boundary |
| **Malicious config files** | Users control their own config; modifying it is not an attack vector |
| Category | Rationale |
|---|---|
| **Server access when opted-in** | If you enable server mode, API access is expected behavior |
| **Sandbox escapes** | The permission system is not a sandbox (see above) |
| **LLM provider data handling** | Data sent to your configured LLM provider is governed by their policies |
| **MCP server behavior** | External MCP servers you configure are outside our trust boundary |
| **Malicious config files** | Users control their own config; modifying it is not an attack vector |
---
+2 -4
View File
@@ -87,7 +87,7 @@ BASE="http://127.0.0.1:$PORT"
| `--port` | `0` (OS-assigned) | Must be passed literally when overriding `opencode.json`'s `server.port`. |
| `--hostname` | `127.0.0.1` | Becomes `0.0.0.0` when `--mdns` is set without an override. |
| `--mdns` | `false` | Publishes an mDNS SRV record. |
| `--mdns-domain` | `kilo.local` | |
| `--mdns-domain` | `kilo.local` | |
| `--cors` | `[]` | Extra allowed origins. |
## 4. The two mandatory request knobs
@@ -209,9 +209,7 @@ import { createKiloClient } from "@kilocode/sdk/v2"
const port = process.env.PORT!
const pass = process.env.KILO_SERVER_PASSWORD
const headers = pass
? { Authorization: "Basic " + Buffer.from("kilo:" + pass).toString("base64") }
: undefined
const headers = pass ? { Authorization: "Basic " + Buffer.from("kilo:" + pass).toString("base64") } : undefined
const client = createKiloClient({
baseUrl: `http://127.0.0.1:${port}`,
+46 -35
View File
@@ -270,7 +270,7 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
const buttonsSpring = useSpring(() => (store.mode === "normal" ? 1 : 0), { visualDuration: 0.2, bounce: 0 })
const motion = (value: number) => ({
opacity: value,
transform: `scale(${0.95 + value * 0.05})`,
transform: `scale(${0.98 + value * 0.02})`,
filter: `blur(${(1 - value) * 2}px)`,
"pointer-events": value > 0.5 ? ("auto" as const) : ("none" as const),
})
@@ -345,7 +345,7 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
promptPlaceholder({
mode: store.mode,
commentCount: commentCount(),
example: suggest() ? language.t(EXAMPLES[store.placeholder]) : "",
example: suggest() ? (store.mode === "shell" ? "git status" : language.t(EXAMPLES[store.placeholder])) : "",
suggest: suggest(),
t: (key, params) => language.t(key as Parameters<typeof language.t>[0], params as never),
}),
@@ -1404,12 +1404,11 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
<IconButton
data-action="prompt-submit"
type="submit"
disabled={store.mode !== "normal" || (!working() && blank())}
disabled={!working() && blank()}
tabIndex={store.mode === "normal" ? undefined : -1}
icon={stopping() ? "stop" : "arrow-up"}
icon={stopping() ? "stop" : store.mode === "shell" ? "arrow-undo-down" : "arrow-up"}
variant="primary"
class="size-8"
style={buttons()}
aria-label={stopping() ? language.t("prompt.action.stop") : language.t("prompt.action.send")}
/>
</Tooltip>
@@ -1455,14 +1454,24 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
>
<div class="flex items-center gap-1.5 min-w-0 flex-1 relative">
<div
class="h-7 flex items-center gap-1.5 max-w-[160px] min-w-0 absolute inset-y-0 left-0"
class="h-7 flex items-center gap-1.5 min-w-0 absolute inset-0"
style={{
padding: "0 4px 0 8px",
padding: "0 0px 0 8px",
...shell(),
}}
>
<span class="truncate text-13-medium text-text-strong">{language.t("prompt.mode.shell")}</span>
<div class="size-4 shrink-0" />
<Icon name="console" />
<span class="truncate text-13-medium text-text-base">{language.t("prompt.mode.shell")}</span>
<div class="flex-1" />
<Button
variant="ghost"
class="text-text-base"
onClick={() => {
setStore("mode", "normal")
}}
>
{language.t("common.cancel")}
</Button>
</div>
<div class="flex items-center gap-1.5 min-w-0 flex-1 h-7">
<Show when={!agentsLoading()}>
@@ -1569,33 +1578,35 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
</TooltipKeybind>
</Show>
</div>
<div
data-component="prompt-variant-control"
style={providersShouldFadeIn() ? { animation: "fade-in 0.3s" } : undefined}
>
<TooltipKeybind
placement="top"
gutter={4}
title={language.t("command.model.variant.cycle")}
keybind={command.keybind("model.variant.cycle")}
<Show when={variants().length > 2}>
<div
data-component="prompt-variant-control"
style={providersShouldFadeIn() ? { animation: "fade-in 0.3s" } : undefined}
>
<Select
size="normal"
options={variants()}
current={local.model.variant.current() ?? "default"}
label={(x) => (x === "default" ? language.t("common.default") : x)}
onSelect={(value) => {
local.model.variant.set(value === "default" ? undefined : value)
restoreFocus()
}}
class="capitalize max-w-[160px] text-text-base"
valueClass="truncate text-13-regular text-text-base"
triggerStyle={control()}
triggerProps={{ "data-action": "prompt-model-variant" }}
variant="ghost"
/>
</TooltipKeybind>
</div>
<TooltipKeybind
placement="top"
gutter={4}
title={language.t("command.model.variant.cycle")}
keybind={command.keybind("model.variant.cycle")}
>
<Select
size="normal"
options={variants()}
current={local.model.variant.current() ?? "default"}
label={(x) => (x === "default" ? language.t("common.default") : x)}
onSelect={(value) => {
local.model.variant.set(value === "default" ? undefined : value)
restoreFocus()
}}
class="capitalize max-w-[160px] text-text-base"
valueClass="truncate text-13-regular text-text-base"
triggerStyle={control()}
triggerProps={{ "data-action": "prompt-model-variant" }}
variant="ghost"
/>
</TooltipKeybind>
</div>
</Show>
</Show>
</Show>
</div>
@@ -12,7 +12,7 @@ describe("promptPlaceholder", () => {
suggest: true,
t,
})
expect(value).toBe("prompt.placeholder.shell")
expect(value).toBe("prompt.placeholder.shell:example")
})
test("returns summarize placeholders for comment context", () => {
@@ -7,7 +7,7 @@ type PromptPlaceholderInput = {
}
export function promptPlaceholder(input: PromptPlaceholderInput) {
if (input.mode === "shell") return input.t("prompt.placeholder.shell")
if (input.mode === "shell") return input.t("prompt.placeholder.shell", { example: input.example })
if (input.commentCount > 1) return input.t("prompt.placeholder.summarizeComments")
if (input.commentCount === 1) return input.t("prompt.placeholder.summarizeComment")
if (!input.suggest) return input.t("prompt.placeholder.simple")
@@ -128,27 +128,25 @@ export const SettingsGeneral: Component = () => {
return
}
const actions =
platform.update && platform.restart
? [
{
label: language.t("toast.update.action.installRestart"),
onClick: async () => {
await platform.update!()
await platform.restart!()
},
const actions = platform.updateAndRestart
? [
{
label: language.t("toast.update.action.installRestart"),
onClick: async () => {
await platform.updateAndRestart!()
},
{
label: language.t("toast.update.action.notYet"),
onClick: "dismiss" as const,
},
]
: [
{
label: language.t("toast.update.action.notYet"),
onClick: "dismiss" as const,
},
]
},
{
label: language.t("toast.update.action.notYet"),
onClick: "dismiss" as const,
},
]
: [
{
label: language.t("toast.update.action.notYet"),
onClick: "dismiss" as const,
},
]
showToast({
persistent: true,
+3 -3
View File
@@ -49,11 +49,11 @@ export type Platform = {
/** Storage mechanism, defaults to localStorage */
storage?: (name?: string) => SyncStorage | AsyncStorage
/** Check for updates (Tauri only) */
/** Check for a downloadable desktop update */
checkUpdate?(): Promise<UpdateInfo>
/** Install updates (Tauri only) */
update?(): Promise<void>
/** Install the downloaded update using the platform restart flow */
updateAndRestart?(): Promise<void>
/** Fetch override */
fetch?: typeof fetch
+1 -1
View File
@@ -209,7 +209,7 @@ export const dict = {
"common.saving": "جارٍ الحفظ...",
"common.default": "افتراضي",
"common.attachment": "مرفق",
"prompt.placeholder.shell": "أدخل أمر shell...",
"prompt.placeholder.shell": "أدخل أمر shell... {{example}}",
"prompt.placeholder.normal": 'اسأل أي شيء... "{{example}}"',
"prompt.placeholder.simple": "اسأل أي شيء...",
"prompt.placeholder.summarizeComments": "لخّص التعليقات…",
+1 -1
View File
@@ -210,7 +210,7 @@ export const dict = {
"common.saving": "Salvando...",
"common.default": "Padrão",
"common.attachment": "anexo",
"prompt.placeholder.shell": "Digite comando do shell...",
"prompt.placeholder.shell": "Digite comando do shell... {{example}}",
"prompt.placeholder.normal": 'Pergunte qualquer coisa... "{{example}}"',
"prompt.placeholder.simple": "Pergunte qualquer coisa...",
"prompt.placeholder.summarizeComments": "Resumir comentários…",
+1 -1
View File
@@ -228,7 +228,7 @@ export const dict = {
"common.default": "Podrazumijevano",
"common.attachment": "prilog",
"prompt.placeholder.shell": "Unesi shell naredbu...",
"prompt.placeholder.shell": "Unesi shell naredbu... {{example}}",
"prompt.placeholder.normal": 'Pitaj bilo šta... "{{example}}"',
"prompt.placeholder.simple": "Pitaj bilo šta...",
"prompt.placeholder.summarizeComments": "Sažmi komentare…",
+1 -1
View File
@@ -226,7 +226,7 @@ export const dict = {
"common.default": "Standard",
"common.attachment": "vedhæftning",
"prompt.placeholder.shell": "Indtast shell-kommando...",
"prompt.placeholder.shell": "Indtast shell-kommando... {{example}}",
"prompt.placeholder.normal": 'Spørg om hvad som helst... "{{example}}"',
"prompt.placeholder.simple": "Spørg om hvad som helst...",
"prompt.placeholder.summarizeComments": "Opsummér kommentarer…",
+1 -1
View File
@@ -215,7 +215,7 @@ export const dict = {
"common.saving": "Speichert...",
"common.default": "Standard",
"common.attachment": "Anhang",
"prompt.placeholder.shell": "Shell-Befehl eingeben...",
"prompt.placeholder.shell": "Shell-Befehl eingeben... {{example}}",
"prompt.placeholder.normal": 'Fragen Sie alles... "{{example}}"',
"prompt.placeholder.simple": "Fragen Sie alles...",
"prompt.placeholder.summarizeComments": "Kommentare zusammenfassen…",
+1 -1
View File
@@ -230,7 +230,7 @@ export const dict = {
"common.default": "Default",
"common.attachment": "attachment",
"prompt.placeholder.shell": "Enter shell command...",
"prompt.placeholder.shell": "Enter shell command... {{example}}",
"prompt.placeholder.normal": 'Ask anything... "{{example}}"',
"prompt.placeholder.simple": "Ask anything...",
"prompt.placeholder.summarizeComments": "Summarize comments…",
+1 -1
View File
@@ -227,7 +227,7 @@ export const dict = {
"common.default": "Predeterminado",
"common.attachment": "adjunto",
"prompt.placeholder.shell": "Introduce comando de shell...",
"prompt.placeholder.shell": "Introduce comando de shell... {{example}}",
"prompt.placeholder.normal": 'Pregunta cualquier cosa... "{{example}}"',
"prompt.placeholder.simple": "Pregunta cualquier cosa...",
"prompt.placeholder.summarizeComments": "Resumir comentarios…",
+3 -5
View File
@@ -210,7 +210,7 @@ export const dict = {
"common.saving": "Enregistrement...",
"common.default": "Défaut",
"common.attachment": "pièce jointe",
"prompt.placeholder.shell": "Entrez une commande shell...",
"prompt.placeholder.shell": "Entrez une commande shell... {{example}}",
"prompt.placeholder.normal": 'Demandez n\'importe quoi... "{{example}}"',
"prompt.placeholder.simple": "Demandez n'importe quoi...",
"prompt.placeholder.summarizeComments": "Résumer les commentaires…",
@@ -398,8 +398,7 @@ export const dict = {
"toast.session.unshare.failed.description": "Une erreur s'est produite lors de l'annulation du partage de la session",
"toast.session.listFailed.title": "Échec du chargement des sessions pour {{project}}",
"toast.update.title": "Mise à jour disponible",
"toast.update.description":
"Une nouvelle version d'Kilo ({{version}}) est maintenant disponible pour installation.",
"toast.update.description": "Une nouvelle version d'Kilo ({{version}}) est maintenant disponible pour installation.",
"toast.update.action.installRestart": "Installer et redémarrer",
"toast.update.action.notYet": "Pas encore",
"error.page.title": "Quelque chose s'est mal passé",
@@ -549,8 +548,7 @@ export const dict = {
"sidebar.workspaces.enable": "Activer les espaces de travail",
"sidebar.workspaces.disable": "Désactiver les espaces de travail",
"sidebar.gettingStarted.title": "Commencer",
"sidebar.gettingStarted.line1":
"Kilo inclut des modèles gratuits pour que vous puissiez commencer immédiatement.",
"sidebar.gettingStarted.line1": "Kilo inclut des modèles gratuits pour que vous puissiez commencer immédiatement.",
"sidebar.gettingStarted.line2":
"Connectez n'importe quel fournisseur pour utiliser des modèles, y compris Claude, GPT, Gemini etc.",
"sidebar.project.recentSessions": "Sessions récentes",
+1 -1
View File
@@ -209,7 +209,7 @@ export const dict = {
"common.saving": "保存中...",
"common.default": "デフォルト",
"common.attachment": "添付ファイル",
"prompt.placeholder.shell": "シェルコマンドを入力...",
"prompt.placeholder.shell": "シェルコマンドを入力... {{example}}",
"prompt.placeholder.normal": '何でも聞いてください... "{{example}}"',
"prompt.placeholder.simple": "何でも聞いてください...",
"prompt.placeholder.summarizeComments": "コメントを要約…",
+1 -1
View File
@@ -209,7 +209,7 @@ export const dict = {
"common.saving": "저장 중...",
"common.default": "기본값",
"common.attachment": "첨부 파일",
"prompt.placeholder.shell": "셸 명령어 입력...",
"prompt.placeholder.shell": "셸 명령어 입력... {{example}}",
"prompt.placeholder.normal": '무엇이든 물어보세요... "{{example}}"',
"prompt.placeholder.simple": "무엇이든 물어보세요...",
"prompt.placeholder.summarizeComments": "댓글 요약…",
+1 -1
View File
@@ -230,7 +230,7 @@ export const dict = {
"common.default": "Standard",
"common.attachment": "vedlegg",
"prompt.placeholder.shell": "Skriv inn shell-kommando...",
"prompt.placeholder.shell": "Skriv inn shell-kommando... {{example}}",
"prompt.placeholder.normal": 'Spør om hva som helst... "{{example}}"',
"prompt.placeholder.simple": "Spør om hva som helst...",
"prompt.placeholder.summarizeComments": "Oppsummer kommentarer…",
+1 -1
View File
@@ -211,7 +211,7 @@ export const dict = {
"common.saving": "Zapisywanie...",
"common.default": "Domyślny",
"common.attachment": "załącznik",
"prompt.placeholder.shell": "Wpisz polecenie terminala...",
"prompt.placeholder.shell": "Wpisz polecenie terminala... {{example}}",
"prompt.placeholder.normal": 'Zapytaj o cokolwiek... "{{example}}"',
"prompt.placeholder.simple": "Zapytaj o cokolwiek...",
"prompt.placeholder.summarizeComments": "Podsumuj komentarze…",
+1 -1
View File
@@ -227,7 +227,7 @@ export const dict = {
"common.default": "По умолчанию",
"common.attachment": "вложение",
"prompt.placeholder.shell": "Введите команду оболочки...",
"prompt.placeholder.shell": "Введите команду оболочки... {{example}}",
"prompt.placeholder.normal": 'Спросите что угодно... "{{example}}"',
"prompt.placeholder.simple": "Спросите что угодно...",
"prompt.placeholder.summarizeComments": "Суммировать комментарии…",
+2 -3
View File
@@ -149,8 +149,7 @@ export const dict = {
"provider.connect.oauth.code.invalid": "รหัสการอนุญาตไม่ถูกต้อง",
"provider.connect.oauth.auto.visit.prefix": "เยี่ยมชม ",
"provider.connect.oauth.auto.visit.link": "ลิงก์นี้",
"provider.connect.oauth.auto.visit.suffix":
" และป้อนรหัสด้านล่างเพื่อเชื่อมต่อบัญชีและใช้โมเดล {{provider}} ใน Kilo",
"provider.connect.oauth.auto.visit.suffix": " และป้อนรหัสด้านล่างเพื่อเชื่อมต่อบัญชีและใช้โมเดล {{provider}} ใน Kilo",
"provider.connect.oauth.auto.confirmationCode": "รหัสยืนยัน",
"provider.connect.toast.connected.title": "{{provider}} ที่เชื่อมต่อแล้ว",
"provider.connect.toast.connected.description": "โมเดล {{provider}} พร้อมใช้งานแล้ว",
@@ -227,7 +226,7 @@ export const dict = {
"common.default": "ค่าเริ่มต้น",
"common.attachment": "ไฟล์แนบ",
"prompt.placeholder.shell": "ป้อนคำสั่งเชลล์...",
"prompt.placeholder.shell": "ป้อนคำสั่งเชลล์... {{example}}",
"prompt.placeholder.normal": 'ถามอะไรก็ได้... "{{example}}"',
"prompt.placeholder.simple": "ถามอะไรก็ได้...",
"prompt.placeholder.summarizeComments": "สรุปความคิดเห็น…",
+1 -1
View File
@@ -231,7 +231,7 @@ export const dict = {
"common.default": "Varsayılan",
"common.attachment": "ek",
"prompt.placeholder.shell": "Kabuk komutu girin...",
"prompt.placeholder.shell": "Kabuk komutu girin... {{example}}",
"prompt.placeholder.normal": 'Bir şeyler sorun... "{{example}}"',
"prompt.placeholder.simple": "Bir şeyler sorun...",
"prompt.placeholder.summarizeComments": "Yorumları özetle…",
+1 -1
View File
@@ -249,7 +249,7 @@ export const dict = {
"common.default": "默认",
"common.attachment": "附件",
"prompt.placeholder.shell": "输入 shell 命令...",
"prompt.placeholder.shell": "输入 shell 命令... {{example}}",
"prompt.placeholder.normal": '随便问点什么... "{{example}}"',
"prompt.placeholder.simple": "随便问点什么...",
"prompt.placeholder.summarizeComments": "总结评论…",
+2 -3
View File
@@ -150,8 +150,7 @@ export const dict = {
"provider.connect.oauth.code.invalid": "授權碼無效",
"provider.connect.oauth.auto.visit.prefix": "造訪 ",
"provider.connect.oauth.auto.visit.link": "此連結",
"provider.connect.oauth.auto.visit.suffix":
" 並輸入以下程式碼,以連線你的帳戶並在 Kilo 中使用 {{provider}} 模型。",
"provider.connect.oauth.auto.visit.suffix": " 並輸入以下程式碼,以連線你的帳戶並在 Kilo 中使用 {{provider}} 模型。",
"provider.connect.oauth.auto.confirmationCode": "確認碼",
"provider.connect.toast.connected.title": "{{provider}} 已連線",
"provider.connect.toast.connected.description": "現在可以使用 {{provider}} 模型了。",
@@ -227,7 +226,7 @@ export const dict = {
"common.default": "預設",
"common.attachment": "附件",
"prompt.placeholder.shell": "輸入 shell 命令...",
"prompt.placeholder.shell": "輸入 shell 命令... {{example}}",
"prompt.placeholder.normal": '隨便問點什麼... "{{example}}"',
"prompt.placeholder.simple": "隨便問點什麼...",
"prompt.placeholder.summarizeComments": "摘要評論…",
+2 -3
View File
@@ -244,10 +244,9 @@ export const ErrorPage: Component<ErrorPageProps> = (props) => {
}
async function installUpdate() {
if (!platform.update || !platform.restart) return
if (!platform.updateAndRestart) return
await platform
.update()
.then(() => platform.restart!())
.updateAndRestart()
.then(() => setStore("actionError", undefined))
.catch((err) => {
setStore("actionError", formatError(err, language.t))
+2 -3
View File
@@ -366,7 +366,7 @@ export default function Layout(props: ParentProps) {
const useUpdatePolling = () =>
onMount(() => {
if (!platform.checkUpdate || !platform.update || !platform.restart) return
if (!platform.checkUpdate || !platform.updateAndRestart) return
let toastId: number | undefined
let interval: ReturnType<typeof setInterval> | undefined
@@ -384,8 +384,7 @@ export default function Layout(props: ParentProps) {
{
label: language.t("toast.update.action.installRestart"),
onClick: async () => {
await platform.update!()
await platform.restart!()
await platform.updateAndRestart!()
},
},
{
@@ -71,9 +71,7 @@ export const useSessionCommands = (actions: SessionCommandContext) => {
const activeFileTab = tabState.activeFileTab
const closableTab = tabState.closableTab
const shown = () =>
platform.platform !== "desktop" ||
import.meta.env.VITE_KILO_CHANNEL !== "beta" ||
settings.general.showFileTree()
platform.platform !== "desktop" || import.meta.env.VITE_KILO_CHANNEL !== "beta" || settings.general.showFileTree()
const idle = { type: "idle" as const }
const status = () => sync.data.session_status[params.id ?? ""] ?? idle
+17 -4
View File
@@ -337,11 +337,16 @@ function setupAutoUpdater() {
})
}
let updateReady = false
let downloadedUpdateVersion: string | undefined
async function checkUpdate() {
if (!UPDATER_ENABLED) return { updateAvailable: false }
updateReady = false
if (downloadedUpdateVersion) {
logger.log("returning cached downloaded update", {
version: downloadedUpdateVersion,
})
return { updateAvailable: true, version: downloadedUpdateVersion }
}
logger.log("checking for updates", {
currentVersion: app.getVersion(),
channel: autoUpdater.channel,
@@ -367,7 +372,7 @@ async function checkUpdate() {
logger.log("update available", { version })
await autoUpdater.downloadUpdate()
logger.log("update download completed", { version })
updateReady = true
downloadedUpdateVersion = version
return { updateAvailable: true, version }
} catch (error) {
logger.error("update check failed", error)
@@ -376,7 +381,15 @@ async function checkUpdate() {
}
async function installUpdate() {
if (!updateReady) return
if (!downloadedUpdateVersion) {
logger.log("install update skipped", {
reason: "no downloaded update ready",
})
return
}
logger.log("installing downloaded update", {
version: downloadedUpdateVersion,
})
killSidecar()
autoUpdater.quitAndInstall()
}
@@ -170,7 +170,7 @@ const createPlatform = (): Platform => {
return window.api.checkUpdate()
},
update: async () => {
updateAndRestart: async () => {
const config = await window.api.getWindowConfig().catch(() => ({ updaterEnabled: false }))
if (!config.updaterEnabled) return
await window.api.installUpdate()
+7 -2
View File
@@ -297,10 +297,15 @@ const createPlatform = (): Platform => {
return { updateAvailable: true, version: next.version }
},
update: async () => {
updateAndRestart: async () => {
if (!UPDATER_ENABLED || !update) return
if (ostype() === "windows") await commands.killSidecar().catch(() => undefined)
await update.install().catch(() => undefined)
const installed = await update
.install()
.then(() => true)
.catch(() => false)
if (!installed) return
await relaunch()
},
restart: async () => {
+12 -12
View File
@@ -38,13 +38,13 @@ If a docs page references a generated VS Code visual-regression screenshot, reco
Image attributes:
| Attribute | Type | Required | Description |
| --------- | ------ | -------- | ------------------------------------------- |
| `src` | String | Yes | The image source URL |
| `alt` | String | Yes | Alternative text for the image |
| `width` | String | No | Width of the image (e.g., '500px', '80%') |
| `height` | String | No | Height of the image (e.g., '300px', 'auto') |
| `caption` | String | No | Caption displayed below the image |
| Attribute | Type | Required | Description |
|---|---|---|---|
| `src` | String | Yes | The image source URL |
| `alt` | String | Yes | Alternative text for the image |
| `width` | String | No | Width of the image (e.g., '500px', '80%') |
| `height` | String | No | Height of the image (e.g., '300px', 'auto') |
| `caption` | String | No | Caption displayed below the image |
### Callouts
@@ -58,11 +58,11 @@ You can report any bugs or feedback by chatting with us in our [Discord server](
Callout attributes:
| Attribute | Type | Default | Description |
| ----------- | ------- | ------- | ------------------------------------------------- |
| `title` | String | - | Optional custom title for the callout |
| `type` | String | "note" | One of: generic, note, tip, info, warning, danger |
| `collapsed` | Boolean | false | When true, the callout starts collapsed |
| Attribute | Type | Default | Description |
|---|---|---|---|
| `title` | String | - | Optional custom title for the callout |
| `type` | String | "note" | One of: generic, note, tip, info, warning, danger |
| `collapsed` | Boolean | false | When true, the callout starts collapsed |
### Codicons
@@ -40,11 +40,11 @@ The Kilo Code dev container is pre-configured with named volumes to preserve you
## Storage Locations
| Data Type | Container Path |
| ------------ | ------------------------------------------------------------------------- |
| Threads | `/root/.vscode-remote/data/User/globalStorage/kilocode.kilo-code/tasks/` |
| Settings | `/root/.vscode-remote/data/User/settings/` |
| Cache | `/root/.vscode-remote/data/User/globalStorage/kilocode.kilo-code/cache/` |
| Data Type | Container Path |
|---|---|
| Threads | `/root/.vscode-remote/data/User/globalStorage/kilocode.kilo-code/tasks/` |
| Settings | `/root/.vscode-remote/data/User/settings/` |
| Cache | `/root/.vscode-remote/data/User/globalStorage/kilocode.kilo-code/cache/` |
| Vector Store | `/root/.vscode-remote/data/User/globalStorage/kilocode.kilo-code/vector/` |
## Troubleshooting
@@ -259,15 +259,15 @@ In-line ghost-text completions with tab to complete. Works alongside the agent m
## Feature Mapping
| Cline Feature | Kilo Equivalent | Notes |
| ------------------ | ---------------------------------- | ------------------------------------------------------------------------------- |
| Plan mode | Orchestrator, Architect, Ask modes | Architect plans, Ask explains, Orchestrate distributes tasks across other modes |
| Act mode | Code mode | Implementation |
| Plan/Act toggle | Mode dropdown | More granular control |
| Checkpoints | Sessions + Checkpoints | Sessions preserve mode + context |
| Background editing | Fast Apply | Sequential but instant |
| Single agent | Five specialized modes | Purpose-built for each task |
| Local only | Multi-platform | IDE, CLI, web, mobile |
| Cline Feature | Kilo Equivalent | Notes |
|---|---|---|
| Plan mode | Orchestrator, Architect, Ask modes | Architect plans, Ask explains, Orchestrate distributes tasks across other modes |
| Act mode | Code mode | Implementation |
| Plan/Act toggle | Mode dropdown | More granular control |
| Checkpoints | Sessions + Checkpoints | Sessions preserve mode + context |
| Background editing | Fast Apply | Sequential but instant |
| Single agent | Five specialized modes | Purpose-built for each task |
| Local only | Multi-platform | IDE, CLI, web, mobile |
---
+134 -134
View File
@@ -2,176 +2,176 @@
### Get Started
| New Item | Existing Page(s) |
| ------------------------------ | ----------------------------------------------------------------------- |
| Introduction / Overview | `index`, `getting-started/concepts` |
| Installation | `getting-started/installing` |
| Quickstart | `getting-started/your-first-task` |
| Setup & Authentication | `getting-started/setting-up`, `getting-started/connecting-api-provider` |
| AI Providers | `basic-usage/connecting-providers`, `providers/*` (all of them) |
| Settings | `basic-usage/settings-management` |
| Adding Credits | `basic-usage/adding-credits` |
| FAQ | Keep if it exists |
| Migrating from Cursor/Windsurf | `advanced-usage/migrating-from-cursor-windsurf` |
| New Item | Existing Page(s) |
|---|---|
| Introduction / Overview | `index`, `getting-started/concepts` |
| Installation | `getting-started/installing` |
| Quickstart | `getting-started/your-first-task` |
| Setup & Authentication | `getting-started/setting-up`, `getting-started/connecting-api-provider` |
| AI Providers | `basic-usage/connecting-providers`, `providers/*` (all of them) |
| Settings | `basic-usage/settings-management` |
| Adding Credits | `basic-usage/adding-credits` |
| FAQ | Keep if it exists |
| Migrating from Cursor/Windsurf | `advanced-usage/migrating-from-cursor-windsurf` |
---
### Code with AI
| New Item | Existing Page(s) |
| ----------------------------------- | -------------------------------------------------------------------------- |
| **Platforms** (subheader) | |
| VS Code Extension | Needs new page (or pull from install) |
| JetBrains Extension | Needs new page |
| CLI | `cli` |
| Cloud Agent | `advanced-usage/cloud-agent` (partial) |
| Mobile Apps | Needs new page |
| Slack | `slack` |
| **Working with Agents** (subheader) | |
| The Chat Interface | `basic-usage/the-chat-interface` |
| Context & Mentions | `basic-usage/context-mentions` |
| Using Modes | `basic-usage/using-modes` |
| Orchestrator Mode | `basic-usage/orchestrator-mode` |
| Model Selection | `basic-usage/model-selection-guide` |
| **Features** (subheader) | |
| Autocomplete | `basic-usage/autocomplete/index`, `basic-usage/autocomplete/mistral-setup` |
| Code Actions | `features/code-actions` |
| Browser Use | `features/browser-use` |
| Git Commit Generation | `basic-usage/git-commit-generation` |
| Checkpoints | `features/checkpoints` |
| Enhance Prompt | `features/enhance-prompt` |
| Fast Edits | `features/fast-edits` |
| Task Todo List | `basic-usage/task-todo-list` |
| **Context & Indexing** (subheader) | |
| Codebase Indexing | `features/codebase-indexing` |
| Large Projects | `advanced-usage/large-projects` |
| **Customization** (subheader) | |
| Custom Modes | `agent-behavior/custom-modes` |
| Custom Rules | `agent-behavior/custom-rules` |
| Custom Instructions | `agent-behavior/custom-instructions` |
| agents.md | `agent-behavior/agents-md` |
| Workflows | `agent-behavior/workflows` |
| Skills | `agent-behavior/skills` |
| Prompt Engineering | `agent-behavior/prompt-engineering` |
| **App Builder** (subheader) | |
| App Builder | `advanced-usage/appbuilder` |
| New Item | Existing Page(s) |
|---|---|
| **Platforms** (subheader) | |
| VS Code Extension | Needs new page (or pull from install) |
| JetBrains Extension | Needs new page |
| CLI | `cli` |
| Cloud Agent | `advanced-usage/cloud-agent` (partial) |
| Mobile Apps | Needs new page |
| Slack | `slack` |
| **Working with Agents** (subheader) | |
| The Chat Interface | `basic-usage/the-chat-interface` |
| Context & Mentions | `basic-usage/context-mentions` |
| Using Modes | `basic-usage/using-modes` |
| Orchestrator Mode | `basic-usage/orchestrator-mode` |
| Model Selection | `basic-usage/model-selection-guide` |
| **Features** (subheader) | |
| Autocomplete | `basic-usage/autocomplete/index`, `basic-usage/autocomplete/mistral-setup` |
| Code Actions | `features/code-actions` |
| Browser Use | `features/browser-use` |
| Git Commit Generation | `basic-usage/git-commit-generation` |
| Checkpoints | `features/checkpoints` |
| Enhance Prompt | `features/enhance-prompt` |
| Fast Edits | `features/fast-edits` |
| Task Todo List | `basic-usage/task-todo-list` |
| **Context & Indexing** (subheader) | |
| Codebase Indexing | `features/codebase-indexing` |
| Large Projects | `advanced-usage/large-projects` |
| **Customization** (subheader) | |
| Custom Modes | `agent-behavior/custom-modes` |
| Custom Rules | `agent-behavior/custom-rules` |
| Custom Instructions | `agent-behavior/custom-instructions` |
| agents.md | `agent-behavior/agents-md` |
| Workflows | `agent-behavior/workflows` |
| Skills | `agent-behavior/skills` |
| Prompt Engineering | `agent-behavior/prompt-engineering` |
| **App Builder** (subheader) | |
| App Builder | `advanced-usage/appbuilder` |
---
### Collaborate
| New Item | Existing Page(s) |
| ------------------------------------- | --------------------------------------------------- |
| Sessions & Sharing | `advanced-usage/sessions` |
| **Kilo for Teams** (subheader) | |
| About Plans | `plans/about` |
| Getting Started with Teams | `plans/getting-started` |
| Dashboard | `plans/dashboard` |
| Team Management | `plans/team-management` |
| Custom Modes (Org) | `plans/custom-modes` |
| Billing | `plans/billing` |
| Analytics | `plans/analytics` |
| **AI Adoption Dashboard** (subheader) | |
| Overview | `plans/adoption-dashboard/overview` |
| Understanding Your Score | `plans/adoption-dashboard/understanding-your-score` |
| Improving Your Score | `plans/adoption-dashboard/improving-your-score` |
| For Team Leads | `plans/adoption-dashboard/for-team-leads` |
| **Enterprise** (subheader) | |
| SSO | `plans/enterprise/SSO` |
| Model Access Controls | `plans/enterprise/model-access` |
| Audit Logs | `plans/enterprise/audit-logs` |
| Migration | `plans/migration` |
| New Item | Existing Page(s) |
|---|---|
| Sessions & Sharing | `advanced-usage/sessions` |
| **Kilo for Teams** (subheader) | |
| About Plans | `plans/about` |
| Getting Started with Teams | `plans/getting-started` |
| Dashboard | `plans/dashboard` |
| Team Management | `plans/team-management` |
| Custom Modes (Org) | `plans/custom-modes` |
| Billing | `plans/billing` |
| Analytics | `plans/analytics` |
| **AI Adoption Dashboard** (subheader) | |
| Overview | `plans/adoption-dashboard/overview` |
| Understanding Your Score | `plans/adoption-dashboard/understanding-your-score` |
| Improving Your Score | `plans/adoption-dashboard/improving-your-score` |
| For Team Leads | `plans/adoption-dashboard/for-team-leads` |
| **Enterprise** (subheader) | |
| SSO | `plans/enterprise/SSO` |
| Model Access Controls | `plans/enterprise/model-access` |
| Audit Logs | `plans/enterprise/audit-logs` |
| Migration | `plans/migration` |
---
### Automate
| New Item | Existing Page(s) |
| ------------------------------ | ------------------------------------- |
| Integrations Overview | `advanced-usage/integrations` |
| Code Reviews | `advanced-usage/code-reviews` |
| Agent Manager | `advanced-usage/agent-manager` |
| **Extending Kilo** (subheader) | |
| Local Models | `advanced-usage/local-models` |
| Shell Integration | `features/shell-integration` |
| Auto-launch Configuration | `features/auto-launch-configuration` |
| **MCP** (subheader) | |
| MCP Overview | `features/mcp/overview` |
| Using MCP in Kilo Code | `features/mcp/using-mcp-in-kilo-code` |
| Using MCP in CLI | `features/mcp/using-mcp-in-cli` |
| What is MCP | `features/mcp/what-is-mcp` |
| Server Transports | `features/mcp/server-transports` |
| MCP vs API | `features/mcp/mcp-vs-api` |
| **Tools (subheader)** | |
| How Tools Work | `basic-usage/how-tools-work` |
| Tool Details | ALL of Tool reference |
| New Item | Existing Page(s) |
|---|---|
| Integrations Overview | `advanced-usage/integrations` |
| Code Reviews | `advanced-usage/code-reviews` |
| Agent Manager | `advanced-usage/agent-manager` |
| **Extending Kilo** (subheader) | |
| Local Models | `advanced-usage/local-models` |
| Shell Integration | `features/shell-integration` |
| Auto-launch Configuration | `features/auto-launch-configuration` |
| **MCP** (subheader) | |
| MCP Overview | `features/mcp/overview` |
| Using MCP in Kilo Code | `features/mcp/using-mcp-in-kilo-code` |
| Using MCP in CLI | `features/mcp/using-mcp-in-cli` |
| What is MCP | `features/mcp/what-is-mcp` |
| Server Transports | `features/mcp/server-transports` |
| MCP vs API | `features/mcp/mcp-vs-api` |
| **Tools (subheader)** | |
| How Tools Work | `basic-usage/how-tools-work` |
| Tool Details | ALL of Tool reference |
---
### Deploy & Secure
| New Item | Existing Page(s) |
| ---------------- | ----------------------------------------------------------------------- |
| Deploy | `advanced-usage/deploy` |
| Managed Indexing | `advanced-usage/managed-indexing` |
| New Item | Existing Page(s) |
|---|---|
| Deploy | `advanced-usage/deploy` |
| Managed Indexing | `advanced-usage/managed-indexing` |
| Security Reviews | `contributing/architecture/security-reviews` (move out of contributing) |
---
### Contributing
| New Item | Existing Page(s) |
| ---------------------------- | -------------------------------------------------------------- |
| Contributing Overview | `contributing/index` |
| Development Environment | `contributing/development-environment` |
| **Architecture** (subheader) | |
| Architecture Overview | `contributing/architecture/index` |
| Annual Billing | `contributing/architecture/annual-billing` |
| Enterprise MCP Controls | `contributing/architecture/enterprise-mcp-controls` |
| Onboarding Improvements | `contributing/architecture/onboarding-engagement-improvements` |
| Organization Modes Library | `contributing/architecture/organization-modes-library` |
| Track Repo URL | `contributing/architecture/track-repo-url` |
| Vercel AI Gateway | `contributing/architecture/vercel-ai-gateway` |
| Voice Transcription | `contributing/architecture/voice-transcription` |
| New Item | Existing Page(s) |
|---|---|
| Contributing Overview | `contributing/index` |
| Development Environment | `contributing/development-environment` |
| **Architecture** (subheader) | |
| Architecture Overview | `contributing/architecture/index` |
| Annual Billing | `contributing/architecture/annual-billing` |
| Enterprise MCP Controls | `contributing/architecture/enterprise-mcp-controls` |
| Onboarding Improvements | `contributing/architecture/onboarding-engagement-improvements` |
| Organization Modes Library | `contributing/architecture/organization-modes-library` |
| Track Repo URL | `contributing/architecture/track-repo-url` |
| Vercel AI Gateway | `contributing/architecture/vercel-ai-gateway` |
| Voice Transcription | `contributing/architecture/voice-transcription` |
---
## Pages to Add (Don't Exist Yet)
| Section | New Page Needed |
| --------------- | --------------------------------------- |
| Get Started | "Choosing Your Surface" (decision tree) |
| Code with AI | VS Code dedicated page |
| Code with AI | JetBrains dedicated page |
| Code with AI | Web App dedicated page |
| Code with AI | Mobile Apps (iOS/Android) |
| Collaborate | Team Workspaces overview |
| Collaborate | Permissions & Roles |
| Automate | Triage Agent |
| Automate | Auto-fix Agent |
| Automate | GitHub Actions guide |
| Automate | Webhooks & Triggers |
| Deploy & Secure | Security Scanning Agent |
| Deploy & Secure | Environment Configuration |
| Deploy & Secure | Secrets Management |
| Contributing | Roadmap |
| Contributing | Community / Discord |
| Section | New Page Needed |
|---|---|
| Get Started | "Choosing Your Surface" (decision tree) |
| Code with AI | VS Code dedicated page |
| Code with AI | JetBrains dedicated page |
| Code with AI | Web App dedicated page |
| Code with AI | Mobile Apps (iOS/Android) |
| Collaborate | Team Workspaces overview |
| Collaborate | Permissions & Roles |
| Automate | Triage Agent |
| Automate | Auto-fix Agent |
| Automate | GitHub Actions guide |
| Automate | Webhooks & Triggers |
| Deploy & Secure | Security Scanning Agent |
| Deploy & Secure | Environment Configuration |
| Deploy & Secure | Secrets Management |
| Contributing | Roadmap |
| Contributing | Community / Discord |
---
## Pages to Remove from Nav / Condense
| Page | Recommendation |
| ------------------------------------- | -------------------------------------------------------- |
| ☑️ `features/system-notifications` | Fold into Settings or remove |
| ❎ `features/more-features` | Remove |
| ☑️ `features/suggested-responses` | Fold into Chat Interface |
| ☑️ `features/auto-approving-actions` | Fold into Settings |
| ☑️ `advanced-usage/auto-cleanup` | Fold into Settings |
| ❎ `features/model-temperature` | Remove |
| ☑️ `advanced-usage/rate-limits-costs` | Fold into Adding Credits or AI Providers |
| ❎ `features/footgun-prompting` | Remove |
| ☑️ `tips-and-tricks` | Could become a blog post or fold relevant bits elsewhere |
| Page | Recommendation |
|---|---|
| ☑️ `features/system-notifications` | Fold into Settings or remove |
| ❎ `features/more-features` | Remove |
| ☑️ `features/suggested-responses` | Fold into Chat Interface |
| ☑️ `features/auto-approving-actions` | Fold into Settings |
| ☑️ `advanced-usage/auto-cleanup` | Fold into Settings |
| ❎ `features/model-temperature` | Remove |
| ☑️ `advanced-usage/rate-limits-costs` | Fold into Adding Credits or AI Providers |
| ❎ `features/footgun-prompting` | Remove |
| ☑️ `tips-and-tricks` | Could become a blog post or fold relevant bits elsewhere |
---
+1 -1
View File
@@ -1,7 +1,7 @@
<!-- Auto-generated by script/generate-cli-docs.ts — do not edit manually -->
| Command | Description |
| --- | --- |
|---|---|
| `kilo acp` | start ACP (Agent Client Protocol) server |
| `kilo mcp` | manage MCP (Model Context Protocol) servers |
| `kilo [project]` | start kilo tui |
@@ -73,13 +73,13 @@ Then set your default model:
Kilo Code supports the following models through Groq:
| Model ID | Provider | Context Window | Notes |
| ----------------------------- | ----------- | -------------- | ------------------------------------- |
| `moonshotai/kimi-k2-instruct` | Moonshot AI | 128K tokens | Optimized max_tokens limit configured |
| `llama-3.3-70b-versatile` | Meta | 128K tokens | High-performance Llama model |
| `llama-3.1-70b-versatile` | Meta | 128K tokens | Versatile reasoning capabilities |
| `llama-3.1-8b-instant` | Meta | 128K tokens | Fast inference for quick tasks |
| `mixtral-8x7b-32768` | Mistral AI | 32K tokens | Mixture of experts architecture |
| Model ID | Provider | Context Window | Notes |
|---|---|---|---|
| `moonshotai/kimi-k2-instruct` | Moonshot AI | 128K tokens | Optimized max_tokens limit configured |
| `llama-3.3-70b-versatile` | Meta | 128K tokens | High-performance Llama model |
| `llama-3.1-70b-versatile` | Meta | 128K tokens | Versatile reasoning capabilities |
| `llama-3.1-8b-instant` | Meta | 128K tokens | Fast inference for quick tasks |
| `mixtral-8x7b-32768` | Mistral AI | 32K tokens | Mixture of experts architecture |
**Note:** Model availability may change. Refer to the [Groq documentation](https://console.groq.com/docs/models) for the latest model list and specifications.
@@ -43,12 +43,12 @@ Route requests through unified APIs with additional features:
## Choosing a Provider
| Priority | Recommended Provider |
| --------------- | --------------------------------------------------- |
| Ease of use | [Kilo Code (built-in)](/docs/ai-providers/kilocode) |
| Best value | Zhipu AI or Mistral |
| Privacy/Offline | Ollama or LM Studio |
| Enterprise | AWS Bedrock or Google Vertex |
| Priority | Recommended Provider |
|---|---|
| Ease of use | [Kilo Code (built-in)](/docs/ai-providers/kilocode) |
| Best value | Zhipu AI or Mistral |
| Privacy/Offline | Ollama or LM Studio |
| Enterprise | AWS Bedrock or Google Vertex |
## Why Use Multiple Providers?
@@ -174,18 +174,18 @@ Merge the most foundational one first. Then, in each remaining worktree, ask the
## Cheatsheet
| Situation | Where |
| ------------------------------------------------------ | ----------------------------- |
| Small, interactive task | Sidebar |
| Long task, want to do something else meanwhile | New worktree (`Cmd+N`) |
| Two or three approaches, pick the winner | Multi-version (`Cmd+Shift+N`) |
| Sidebar task outgrew the sidebar | Continue in Worktree |
| Separate conversation on the same branch | New tab (`Cmd+T`) |
| Long conversation, want a fresh context on same branch | New tab, summarize |
| Run the app to verify | Run script (`Cmd+E`) |
| One-off git or shell commands | Terminal (`Cmd+/`) |
| Team review | Push + `gh pr create` |
| Ship without ceremony | Apply to local |
| Situation | Where |
|---|---|
| Small, interactive task | Sidebar |
| Long task, want to do something else meanwhile | New worktree (`Cmd+N`) |
| Two or three approaches, pick the winner | Multi-version (`Cmd+Shift+N`) |
| Sidebar task outgrew the sidebar | Continue in Worktree |
| Separate conversation on the same branch | New tab (`Cmd+T`) |
| Long conversation, want a fresh context on same branch | New tab, summarize |
| Run the app to verify | Run script (`Cmd+E`) |
| One-off git or shell commands | Terminal (`Cmd+/`) |
| Team review | Push + `gh pr create` |
| Ship without ceremony | Apply to local |
## Related
@@ -57,15 +57,15 @@ You can also import a PR directly from the advanced new worktree dialog: open th
The badge color reflects the most important signal, evaluated in priority order:
| State | Color | Condition |
| ----------------- | ---------------- | ------------------------------------------------------------ |
| Draft | Gray | PR is in draft state |
| Merged | Purple | PR has been merged |
| Closed | Red | PR was closed without merging |
| Checks failing | Red | Any CI check has failed |
| Changes requested | Yellow | A reviewer requested changes |
| Checks pending | Yellow (pulsing) | CI checks are still running |
| Open (default) | Green | PR is open, no failing or pending checks, no blocking review |
| State | Color | Condition |
|---|---|---|
| Draft | Gray | PR is in draft state |
| Merged | Purple | PR has been merged |
| Closed | Red | PR was closed without merging |
| Checks failing | Red | Any CI check has failed |
| Changes requested | Yellow | A reviewer requested changes |
| Checks pending | Yellow (pulsing) | CI checks are still running |
| Open (default) | Green | PR is open, no failing or pending checks, no blocking review |
When checks are pending on an open PR, the badge pulses to indicate activity.
@@ -187,10 +187,10 @@ The run button lets you start your project (dev server, build, tests, etc.) dire
Create a script file in `.kilo/` using the appropriate filename for your platform:
| Platform | Filename (checked in order) |
| ------------- | ---------------------------------------------------------------------- |
| macOS / Linux | `.kilo/run-script`, `.kilo/run-script.sh` |
| Windows | `.kilo/run-script.ps1`, `.kilo/run-script.cmd`, `.kilo/run-script.bat` |
| Platform | Filename (checked in order) |
|---|---|
| macOS / Linux | `.kilo/run-script`, `.kilo/run-script.sh` |
| Windows | `.kilo/run-script.ps1`, `.kilo/run-script.cmd`, `.kilo/run-script.bat` |
For example, on macOS / Linux create `.kilo/run-script`:
@@ -209,10 +209,10 @@ If no run script exists yet, clicking the run button opens a template file for y
Two extra variables are injected into the script's environment:
| Variable | Value |
| --------------- | --------------------------------------------------------------------- |
| Variable | Value |
|---|---|
| `WORKTREE_PATH` | Working directory of the selected worktree (or repo root for "local") |
| `REPO_PATH` | Repository root |
| `REPO_PATH` | Repository root |
### Using the run button
@@ -226,22 +226,22 @@ Agent Manager state is persisted in `.kilo/agent-manager.json`. Sessions, worktr
## Keyboard Shortcuts (Agent Manager Panel)
| Shortcut (macOS) | Shortcut (Windows/Linux) | Action |
| ------------------------ | ------------------------- | ------------------------------------------------ |
| `Cmd+Shift+M` | `Ctrl+Shift+M` | Open / focus Agent Manager (works from anywhere) |
| `Cmd+N` | `Ctrl+N` | New worktree |
| `Cmd+Shift+N` | `Ctrl+Shift+N` | New worktree (advanced options) |
| `Cmd+Shift+O` | `Ctrl+Shift+O` | Import/open worktree |
| `Cmd+Shift+W` | `Ctrl+Shift+W` | Close current worktree |
| `Cmd+T` | `Ctrl+T` | New tab (session) in worktree |
| `Cmd+W` | `Ctrl+W` | Close current tab |
| `Cmd+Alt+Up` / `Down` | `Ctrl+Alt+Up` / `Down` | Previous / next worktree |
| `Cmd+Alt+Left` / `Right` | `Ctrl+Alt+Left` / `Right` | Previous / next tab in worktree |
| `Cmd+/` | `Ctrl+/` | Focus terminal for current session |
| `Cmd+D` | `Ctrl+D` | Toggle diff panel |
| `Cmd+E` | `Ctrl+E` | Run / stop run script |
| `Cmd+Shift+/` | `Ctrl+Shift+/` | Show keyboard shortcuts |
| `Cmd+1``Cmd+9` | `Ctrl+1``Ctrl+9` | Jump to worktree/session by index |
| Shortcut (macOS) | Shortcut (Windows/Linux) | Action |
|---|---|---|
| `Cmd+Shift+M` | `Ctrl+Shift+M` | Open / focus Agent Manager (works from anywhere) |
| `Cmd+N` | `Ctrl+N` | New worktree |
| `Cmd+Shift+N` | `Ctrl+Shift+N` | New worktree (advanced options) |
| `Cmd+Shift+O` | `Ctrl+Shift+O` | Import/open worktree |
| `Cmd+Shift+W` | `Ctrl+Shift+W` | Close current worktree |
| `Cmd+T` | `Ctrl+T` | New tab (session) in worktree |
| `Cmd+W` | `Ctrl+W` | Close current tab |
| `Cmd+Alt+Up` / `Down` | `Ctrl+Alt+Up` / `Down` | Previous / next worktree |
| `Cmd+Alt+Left` / `Right` | `Ctrl+Alt+Left` / `Right` | Previous / next tab in worktree |
| `Cmd+/` | `Ctrl+/` | Focus terminal for current session |
| `Cmd+D` | `Ctrl+D` | Toggle diff panel |
| `Cmd+E` | `Ctrl+E` | Run / stop run script |
| `Cmd+Shift+/` | `Ctrl+Shift+/` | Show keyboard shortcuts |
| `Cmd+1``Cmd+9` | `Ctrl+1``Ctrl+9` | Jump to worktree/session by index |
## Troubleshooting
@@ -23,12 +23,12 @@ When an issue arrives, Auto-Triage compares it against every previously-triaged
An AI model of your choice reads the full title and body and assigns one of four classifications:
| Classification | Meaning |
| -------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| **bug** | Existing, documented functionality is broken. Includes issues with stack traces, error messages, or clear reproduction steps. |
| **feature** | A request for new functionality or an enhancement to existing behaviour. |
| **question** | The reporter is asking for help, clarification, or pointing to a gap in documentation. |
| **unclear** | The issue does not contain enough information to determine intent. |
| Classification | Meaning |
|---|---|
| **bug** | Existing, documented functionality is broken. Includes issues with stack traces, error messages, or clear reproduction steps. |
| **feature** | A request for new functionality or an enhancement to existing behaviour. |
| **question** | The reporter is asking for help, clarification, or pointing to a gap in documentation. |
| **unclear** | The issue does not contain enough information to determine intent. |
Along with the classification, the model produces a confidence score (01), a short summary of what the reporter wants, and its reasoning.
@@ -76,17 +76,17 @@ All settings are found under **Auto-Triage -> Config**.
### Repository scope
| Setting | Description |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------- |
| Setting | Description |
|---|---|
| **Repository selection mode** | `all` — triage every accessible repository. `selected` — triage only the repositories you pick from the list. |
### Label filters
These settings let you control which issues Auto-Triage processes, using labels already on the issue at the time it is opened.
| Setting | Description |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Skip labels** | If an issue carries **any** of these labels when it is opened, Auto-Triage will ignore it entirely. Useful for issues you handle manually, e.g. `wontfix` or `on-hold`. |
| Setting | Description |
|---|---|
| **Skip labels** | If an issue carries **any** of these labels when it is opened, Auto-Triage will ignore it entirely. Useful for issues you handle manually, e.g. `wontfix` or `on-hold`. |
| **Required labels** | If set, Auto-Triage will only process issues that carry **all** of these labels. Useful for opt-in triage flows, e.g. requiring a `needs-triage` label before Auto-Triage runs. |
> **Note:** Skip labels and required labels are also excluded from the set of labels the AI can apply. This keeps gating labels strictly under your control.
@@ -99,13 +99,13 @@ The model used for classification.
## Ticket statuses
| Status | Meaning |
| ------------- | ------------------------------------------------------------------------------------------ |
| **pending** | Queued and waiting for a processing slot. |
| **analyzing** | The AI is actively processing the issue. |
| **actioned** | Triage completed. Labels applied, duplicate comment posted if applicable. |
| **failed** | Something went wrong. The error is shown in the ticket. You can retry. |
| **skipped** | The issue did not meet the configured requirements (wrong repo, skip label present, etc.). |
| Status | Meaning |
|---|---|
| **pending** | Queued and waiting for a processing slot. |
| **analyzing** | The AI is actively processing the issue. |
| **actioned** | Triage completed. Labels applied, duplicate comment posted if applicable. |
| **failed** | Something went wrong. The error is shown in the ticket. You can retry. |
| **skipped** | The issue did not meet the configured requirements (wrong repo, skip label present, etc.). |
---
@@ -113,9 +113,9 @@ The model used for classification.
Auto-Triage uses two reserved labels for tracking. You should create these in your GitHub repositories before enabling the feature:
| Label | Meaning |
| ---------------- | ----------------------------------------------------------------------------- |
| `kilo-triaged` | Applied to every issue that completes triage successfully. |
| Label | Meaning |
|---|---|
| `kilo-triaged` | Applied to every issue that completes triage successfully. |
| `kilo-duplicate` | Applied alongside `kilo-triaged` when the issue is identified as a duplicate. |
These labels are managed by Kilo and should not be added to your **skip labels** list.
@@ -21,12 +21,12 @@ Connect your GitHub account via the [Integrations page](/docs/automate/integrati
The GitHub App requests the following permissions:
| Permission | Access | Purpose |
| ------------------- | ------------ | -------------------------------- |
| Pull requests | Read & Write | Post review comments |
| Repository contents | Read | Analyze code |
| Issues | Read & Write | Post summary comments, reactions |
| Metadata | Read | List repositories |
| Permission | Access | Purpose |
|---|---|---|
| Pull requests | Read & Write | Post review comments |
| Repository contents | Read | Analyze code |
| Issues | Read & Write | Post summary comments, reactions |
| Metadata | Read | List repositories |
### Step 2: Configure the Review Agent
@@ -47,14 +47,14 @@ The GitHub App requests the following permissions:
Once configured, the Review Agent automatically runs when:
| PR Event | Triggers Review |
| ------------------------ | --------------- |
| PR opened | ✅ Yes |
| New commits pushed to PR | ✅ Yes |
| PR reopened | ✅ Yes |
| Draft PR marked ready | ✅ Yes |
| Draft PR opened | ❌ Skipped |
| PR closed | ❌ No |
| PR Event | Triggers Review |
|---|---|
| PR opened | ✅ Yes |
| New commits pushed to PR | ✅ Yes |
| PR reopened | ✅ Yes |
| Draft PR marked ready | ✅ Yes |
| Draft PR opened | ❌ Skipped |
| PR closed | ❌ No |
## What to Expect
@@ -46,14 +46,14 @@ When you select repositories, Kilo **automatically creates webhooks** on each pr
Once configured, the Review Agent automatically runs when:
| MR Event | Triggers Review |
| ------------------------ | --------------- |
| MR opened | ✅ Yes |
| New commits pushed to MR | ✅ Yes |
| MR reopened | ✅ Yes |
| Draft or WIP MR opened | ❌ Skipped |
| MR closed | ❌ No |
| MR merged | ❌ No |
| MR Event | Triggers Review |
|---|---|
| MR opened | ✅ Yes |
| New commits pushed to MR | ✅ Yes |
| MR reopened | ✅ Yes |
| Draft or WIP MR opened | ❌ Skipped |
| MR closed | ❌ No |
| MR merged | ❌ No |
## What to Expect
@@ -17,10 +17,10 @@ Kilo's **Code Reviews** feature automatically analyzes your pull or merge reques
## Supported Platforms
| Platform | Integration Type | Details |
| -------- | ---------------- | ------------------------------ |
| GitHub | GitHub App | [GitHub Setup Guide](./github) |
| GitLab | OAuth or PAT | [GitLab Setup Guide](./gitlab) |
| Platform | Integration Type | Details |
|---|---|---|
| GitHub | GitHub App | [GitHub Setup Guide](./github) |
| GitLab | OAuth or PAT | [GitLab Setup Guide](./gitlab) |
## Prerequisites
@@ -44,11 +44,11 @@ Add an array of plugin specifiers to your config file:
Each entry can be:
| Form | Loaded from |
| -------------------------------------- | ---------------------------------------------------------------- |
| `"package-name"` | Latest version from npm |
| `"package-name@1.2.3"` | Pinned version from npm |
| `["package-name", { options }]` | npm package with options passed to the plugin function |
| Form | Loaded from |
|---|---|
| `"package-name"` | Latest version from npm |
| `"package-name@1.2.3"` | Pinned version from npm |
| `["package-name", { options }]` | npm package with options passed to the plugin function |
| `"./path/plugin.ts"` / `"file:///..."` | Local file (relative to the config file or absolute `file:` URL) |
Config files live in the same locations as the rest of your CLI configuration — see the [CLI configuration reference](/docs/code-with-ai/platforms/cli#configuration).
@@ -136,15 +136,15 @@ export default { id: "hello", server: hello }
The plugin function receives a context object:
| Field | Description |
| ------------------------ | ----------------------------------------------------------------- |
| `project` | Current project metadata. |
| `directory` | Current working directory for this session. |
| `worktree` | Git worktree root for this session. |
| `client` | A Kilo SDK client (`@kilocode/sdk`) for calling the local server. |
| `$` | [Bun's shell API](https://bun.com/docs/runtime/shell). |
| `serverUrl` | URL of the local Kilo server. |
| `experimental_workspace` | Register workspace adaptors (used by Agent Manager). |
| Field | Description |
|---|---|
| `project` | Current project metadata. |
| `directory` | Current working directory for this session. |
| `worktree` | Git worktree root for this session. |
| `client` | A Kilo SDK client (`@kilocode/sdk`) for calling the local server. |
| `$` | [Bun's shell API](https://bun.com/docs/runtime/shell). |
| `serverUrl` | URL of the local Kilo server. |
| `experimental_workspace` | Register workspace adaptors (used by Agent Manager). |
The function returns a `Hooks` object. Any second argument is the options object passed via config (e.g. the `{ apiKey: "..." }` from `["my-plugin", { apiKey: "..." }]`).
@@ -234,49 +234,49 @@ Every hook is optional. Return only the ones you care about.
### Lifecycle
| Hook | Description |
| -------- | --------------------------------------------------------------------------------- |
| Hook | Description |
|---|---|
| `config` | Receives the fully-resolved config at startup. Read-only — useful for inspection. |
| `event` | Called for **every** event on the internal bus (see [Events](#events)). |
| `event` | Called for **every** event on the internal bus (see [Events](#events)). |
### Tools
| Hook | Description |
| --------------------- | ----------------------------------------------------------------------------------------------- |
| `tool` | Map of tool name → [tool definition](#custom-tools). Added tools are callable by the model. |
| `tool.execute.before` | Fires before a tool runs; you can mutate `output.args`. |
| `tool.execute.after` | Fires after a tool returns; you can rewrite `output.title`, `output.output`, `output.metadata`. |
| `tool.definition` | Mutate a tool's `description` and `parameters` before they are sent to the model. |
| Hook | Description |
|---|---|
| `tool` | Map of tool name → [tool definition](#custom-tools). Added tools are callable by the model. |
| `tool.execute.before` | Fires before a tool runs; you can mutate `output.args`. |
| `tool.execute.after` | Fires after a tool returns; you can rewrite `output.title`, `output.output`, `output.metadata`. |
| `tool.definition` | Mutate a tool's `description` and `parameters` before they are sent to the model. |
### Chat
| Hook | Description |
| ------------------------ | ---------------------------------------------------------------------------- |
| `chat.message` | Fires when a new user message arrives. Inspect or modify `parts`. |
| `chat.params` | Mutate `temperature`, `topP`, `topK`, `maxOutputTokens`, provider `options`. |
| `chat.headers` | Add or replace HTTP headers on the LLM API call. |
| `permission.ask` | Auto-allow or auto-deny permission prompts. |
| `command.execute.before` | Intercept slash command execution; mutate the resulting `parts`. |
| `shell.env` | Inject environment variables into every shell command Kilo runs. |
| Hook | Description |
|---|---|
| `chat.message` | Fires when a new user message arrives. Inspect or modify `parts`. |
| `chat.params` | Mutate `temperature`, `topP`, `topK`, `maxOutputTokens`, provider `options`. |
| `chat.headers` | Add or replace HTTP headers on the LLM API call. |
| `permission.ask` | Auto-allow or auto-deny permission prompts. |
| `command.execute.before` | Intercept slash command execution; mutate the resulting `parts`. |
| `shell.env` | Inject environment variables into every shell command Kilo runs. |
### Providers & auth
| Hook | Description |
| ---------- | ------------------------------------------------------------------------------------ |
| `auth` | Register an auth method (OAuth or API key) for a provider, with interactive prompts. |
| `provider` | Dynamically supply a model catalog for a provider (useful for BYO-model gateways). |
| Hook | Description |
|---|---|
| `auth` | Register an auth method (OAuth or API key) for a provider, with interactive prompts. |
| `provider` | Dynamically supply a model catalog for a provider (useful for BYO-model gateways). |
### Experimental
These hooks live behind the `experimental.` prefix and may change between releases.
| Hook | Description |
| -------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| `experimental.chat.messages.transform` | Rewrite the full message history before it is sent to the model. |
| `experimental.chat.system.transform` | Modify the system prompt array. |
| `experimental.session.compacting` | Inject extra context (`output.context`) or replace the compaction prompt entirely (`output.prompt`). |
| `experimental.compaction.autocontinue` | Disable the synthetic "continue" turn that follows compaction. |
| `experimental.text.complete` | Post-process final text parts (e.g. append signatures, redact secrets). |
| Hook | Description |
|---|---|
| `experimental.chat.messages.transform` | Rewrite the full message history before it is sent to the model. |
| `experimental.chat.system.transform` | Modify the system prompt array. |
| `experimental.session.compacting` | Inject extra context (`output.context`) or replace the compaction prompt entirely (`output.prompt`). |
| `experimental.compaction.autocontinue` | Disable the synthetic "continue" turn that follows compaction. |
| `experimental.text.complete` | Post-process final text parts (e.g. append signatures, redact secrets). |
### Events
@@ -391,10 +391,10 @@ When using the Kilo Code VS Code extension with the Agent Manager, each agent se
### Keyboard Shortcuts
| Shortcut | Action |
| --------------------------- | ---------------------------- |
| Shortcut | Action |
|---|---|
| <kbd>Cmd</kbd>+<kbd>/</kbd> | Focus the session's terminal |
| <kbd>Cmd</kbd>+<kbd>.</kbd> | Cycle agent mode |
| <kbd>Cmd</kbd>+<kbd>.</kbd> | Cycle agent mode |
### Terminal Context Menu Actions
@@ -21,24 +21,24 @@ Describe what you want to accomplish in natural language, and Kilo Code will:
{% tabs %}
{% tab label="VSCode" %}
| Category | Purpose | Tool Names |
| :------- | :----------------------------------------- | :----------------------------------------------------------- |
| Read | Access file content and code structure | `read`, `glob`, `grep` |
| Edit | Create or modify files and code | `edit`, `multiedit`, `write`, `apply_patch` |
| Execute | Run commands and perform system operations | `bash` |
| Web | Fetch and search web content | `webfetch`, `websearch`, `codesearch` |
| Workflow | Manage task flow and sub-agents | `question`, `task`, `todowrite`, `todoread`, `plan`, `skill` |
| Category | Purpose | Tool Names |
|:---|:---|:---|
| Read | Access file content and code structure | `read`, `glob`, `grep` |
| Edit | Create or modify files and code | `edit`, `multiedit`, `write`, `apply_patch` |
| Execute | Run commands and perform system operations | `bash` |
| Web | Fetch and search web content | `webfetch`, `websearch`, `codesearch` |
| Workflow | Manage task flow and sub-agents | `question`, `task`, `todowrite`, `todoread`, `plan`, `skill` |
{% /tab %}
{% tab label="VSCode (Legacy)" %}
| Category | Purpose | Tool Names |
| :------- | :----------------------------------------- | :----------------------------------------------------------------------- |
| Read | Access file content and code structure | `read_file`, `search_files`, `list_files`, `list_code_definition_names` |
| Edit | Create or modify files and code | `apply_diff`, `delete_file`, `write_to_file` |
| Execute | Run commands and perform system operations | `execute_command` |
| Browser | Interact with web content | `browser_action` |
| Workflow | Manage task flow and context | `ask_followup_question`, `attempt_completion`, `switch_mode`, `new_task` |
| Category | Purpose | Tool Names |
|:---|:---|:---|
| Read | Access file content and code structure | `read_file`, `search_files`, `list_files`, `list_code_definition_names` |
| Edit | Create or modify files and code | `apply_diff`, `delete_file`, `write_to_file` |
| Execute | Run commands and perform system operations | `execute_command` |
| Browser | Interact with web content | `browser_action` |
| Workflow | Manage task flow and context | `ask_followup_question`, `attempt_completion`, `switch_mode`, `new_task` |
{% /tab %}
{% /tabs %}
@@ -101,15 +101,15 @@ Every tool use is subject to a permission check. The default action for any tool
**Default permissions by tool:**
| Tool(s) | Default |
| :------------------------------------------- | :----------------------------------------------- |
| `read`, `glob`, `grep`, `list` | `ask` |
| `edit`, `write`, `multiedit`, `apply_patch` | `ask` |
| `bash` | `ask` (per-command) |
| `external_directory` | `ask` (when accessing paths outside the project) |
| `task` | `ask` |
| `webfetch`, `websearch`, `codesearch` | `ask` |
| `todowrite`, `todoread`, `question`, `skill` | `ask` |
| Tool(s) | Default |
|:---|:---|
| `read`, `glob`, `grep`, `list` | `ask` |
| `edit`, `write`, `multiedit`, `apply_patch` | `ask` |
| `bash` | `ask` (per-command) |
| `external_directory` | `ask` (when accessing paths outside the project) |
| `task` | `ask` |
| `webfetch`, `websearch`, `codesearch` | `ask` |
| `todowrite`, `todoread`, `question`, `skill` | `ask` |
No tools are auto-approved out of the box. You must explicitly grant `allow` in your config, or approve them at runtime.
@@ -154,44 +154,44 @@ This safety mechanism ensures you maintain control over which files are modified
{% tabs %}
{% tab label="VSCode" %}
| Tool Name | Description | Category |
| :------------ | :----------------------------------------------------- | :------- |
| `read` | Reads file contents with line numbers | Read |
| `glob` | Finds files by glob pattern | Read |
| `grep` | Searches file contents with regex | Read |
| `edit` | Makes precise text replacements in a file | Edit |
| `multiedit` | Multiple edits in a single call | Edit |
| `write` | Creates new files or overwrites existing ones | Edit |
| `apply_patch` | Applies unified diffs (used with certain models) | Edit |
| `bash` | Runs shell commands | Execute |
| `webfetch` | Fetches a URL | Web |
| `websearch` | Searches the web (Kilo/OpenRouter users) | Web |
| `codesearch` | Semantic code search (Kilo/OpenRouter users) | Web |
| `question` | Asks you a clarifying question with selectable options | Workflow |
| `task` | Spawns a sub-agent session | Workflow |
| `todowrite` | Creates and updates a session TODO list | Workflow |
| `todoread` | Reads the current session TODO list | Workflow |
| `plan` | Enters structured planning mode | Workflow |
| `skill` | Invokes a reusable skill (Markdown instruction module) | Workflow |
| Tool Name | Description | Category |
|:---|:---|:---|
| `read` | Reads file contents with line numbers | Read |
| `glob` | Finds files by glob pattern | Read |
| `grep` | Searches file contents with regex | Read |
| `edit` | Makes precise text replacements in a file | Edit |
| `multiedit` | Multiple edits in a single call | Edit |
| `write` | Creates new files or overwrites existing ones | Edit |
| `apply_patch` | Applies unified diffs (used with certain models) | Edit |
| `bash` | Runs shell commands | Execute |
| `webfetch` | Fetches a URL | Web |
| `websearch` | Searches the web (Kilo/OpenRouter users) | Web |
| `codesearch` | Semantic code search (Kilo/OpenRouter users) | Web |
| `question` | Asks you a clarifying question with selectable options | Workflow |
| `task` | Spawns a sub-agent session | Workflow |
| `todowrite` | Creates and updates a session TODO list | Workflow |
| `todoread` | Reads the current session TODO list | Workflow |
| `plan` | Enters structured planning mode | Workflow |
| `skill` | Invokes a reusable skill (Markdown instruction module) | Workflow |
{% /tab %}
{% tab label="VSCode (Legacy)" %}
| Tool Name | Description | Category |
| :--------------------------- | :-------------------------------------------------- | :------- |
| `read_file` | Reads the content of a file with line numbers | Read |
| `search_files` | Searches for text or regex patterns across files | Read |
| `list_files` | Lists files and directories in a specified location | Read |
| `list_code_definition_names` | Lists code definitions like classes and functions | Read |
| `write_to_file` | Creates new files or overwrites existing ones | Edit |
| `apply_diff` | Makes precise changes to specific parts of a file | Edit |
| `delete_file` | Removes files from the workspace | Edit |
| `execute_command` | Runs commands in the VS Code terminal | Execute |
| `browser_action` | Performs actions in a headless browser | Browser |
| `ask_followup_question` | Asks you a clarifying question | Workflow |
| `attempt_completion` | Indicates the task is complete | Workflow |
| `switch_mode` | Changes to a different operational mode | Workflow |
| `new_task` | Creates a new subtask with a specific starting mode | Workflow |
| Tool Name | Description | Category |
|:---|:---|:---|
| `read_file` | Reads the content of a file with line numbers | Read |
| `search_files` | Searches for text or regex patterns across files | Read |
| `list_files` | Lists files and directories in a specified location | Read |
| `list_code_definition_names` | Lists code definitions like classes and functions | Read |
| `write_to_file` | Creates new files or overwrites existing ones | Edit |
| `apply_diff` | Makes precise changes to specific parts of a file | Edit |
| `delete_file` | Removes files from the workspace | Edit |
| `execute_command` | Runs commands in the VS Code terminal | Execute |
| `browser_action` | Performs actions in a headless browser | Browser |
| `ask_followup_question` | Asks you a clarifying question | Workflow |
| `attempt_completion` | Indicates the task is complete | Workflow |
| `switch_mode` | Changes to a different operational mode | Workflow |
| `new_task` | Creates a new subtask with a specific starting mode | Workflow |
{% /tab %}
{% /tabs %}
@@ -9,10 +9,10 @@ Kilo Integrations lets you connect your GitHub or GitLab account (soon Bitbucket
## Supported Platforms
| Platform | Integration Type | Details |
| -------- | ---------------- | ---------------------------------- |
| GitHub | GitHub App | [GitHub Setup](#connecting-github) |
| GitLab | OAuth or PAT | [GitLab Setup](#connecting-gitlab) |
| Platform | Integration Type | Details |
|---|---|---|
| GitHub | GitHub App | [GitHub Setup](#connecting-github) |
| GitLab | OAuth or PAT | [GitLab Setup](#connecting-gitlab) |
## What You Can Do With Integrations
@@ -9,14 +9,14 @@ Comparing REST APIs to the Model Context Protocol (MCP) is a category error. The
## Architectural Differences
| Feature | MCP | REST APIs |
| -------------------- | ---------------------------------------------------- | ------------------------------------------------- |
| State Management | **Stateful** - maintains context across interactions | **Stateless** - each request is independent |
| Connection Type | Persistent, bidirectional connections | One-way request/response |
| Communication Style | JSON-RPC based with ongoing sessions | HTTP-based with discrete requests |
| Context Handling | Context is intrinsic to the protocol | Context must be manually managed |
| Tool Discovery | Runtime discovery of available tools | Design-time integration requiring prior knowledge |
| Integration Approach | Runtime integration with dynamic capabilities | Design-time integration requiring code changes |
| Feature | MCP | REST APIs |
|---|---|---|
| State Management | **Stateful** - maintains context across interactions | **Stateless** - each request is independent |
| Connection Type | Persistent, bidirectional connections | One-way request/response |
| Communication Style | JSON-RPC based with ongoing sessions | HTTP-based with discrete requests |
| Context Handling | Context is intrinsic to the protocol | Context must be manually managed |
| Tool Discovery | Runtime discovery of available tools | Design-time integration requiring prior knowledge |
| Integration Approach | Runtime integration with dynamic capabilities | Design-time integration requiring code changes |
## Different Layers, Different Purposes
@@ -180,19 +180,19 @@ Some scenarios benefit from a hybrid approach:
## Choosing Between STDIO and SSE
| Consideration | STDIO | SSE |
| -------------------- | ------------------------ | ----------------------------------- |
| **Location** | Local machine only | Local or remote |
| **Clients** | Single client | Multiple clients |
| **Performance** | Lower latency | Higher latency (network overhead) |
| **Setup Complexity** | Simpler | More complex (requires HTTP server) |
| **Security** | Inherently secure | Requires explicit security measures |
| **Network Access** | Not needed | Required |
| **Scalability** | Limited to local machine | Can distribute across network |
| **Deployment** | Per-user installation | Centralized installation |
| **Updates** | Distributed updates | Centralized updates |
| **Resource Usage** | Uses client resources | Uses server resources |
| **Dependencies** | Client-side dependencies | Server-side dependencies |
| Consideration | STDIO | SSE |
|---|---|---|
| **Location** | Local machine only | Local or remote |
| **Clients** | Single client | Multiple clients |
| **Performance** | Lower latency | Higher latency (network overhead) |
| **Setup Complexity** | Simpler | More complex (requires HTTP server) |
| **Security** | Inherently secure | Requires explicit security measures |
| **Network Access** | Not needed | Required |
| **Scalability** | Limited to local machine | Can distribute across network |
| **Deployment** | Per-user installation | Centralized installation |
| **Updates** | Distributed updates | Centralized updates |
| **Resource Usage** | Uses client resources | Uses server resources |
| **Dependencies** | Client-side dependencies | Server-side dependencies |
## Configuring Transports in Kilo Code
@@ -15,10 +15,10 @@ MCP servers add to your context, so be careful with which ones you enable. Certa
The CLI accepts several config filenames. The recommended file is `kilo.json`:
| Scope | Recommended Path | Also supported |
| ----------- | ------------------------------------ | --------------------------- |
| **Global** | `~/.config/kilo/kilo.json` | `kilo.jsonc`, `config.json` |
| **Project** | `./kilo.json` or `./.kilo/kilo.json` | `kilo.jsonc` |
| Scope | Recommended Path | Also supported |
|---|---|---|
| **Global** | `~/.config/kilo/kilo.json` | `kilo.jsonc`, `config.json` |
| **Project** | `./kilo.json` or `./.kilo/kilo.json` | `kilo.jsonc` |
Project-level configuration takes precedence over global settings.
@@ -63,13 +63,13 @@ Local MCP servers run on your machine and communicate via standard input/output.
#### Local Server Options
| Option | Type | Required | Description |
| ------------- | ------- | -------- | -------------------------------------------------------------------- |
| `type` | String | Yes | Must be `"local"`. |
| `command` | Array | Yes | Command and arguments to run the MCP server. |
| `environment` | Object | No | Environment variables to set when running the server. |
| `enabled` | Boolean | No | Enable or disable the MCP server on startup. |
| `timeout` | Number | No | Timeout in ms for fetching tools from the MCP server. Default: 5000. |
| Option | Type | Required | Description |
|---|---|---|---|
| `type` | String | Yes | Must be `"local"`. |
| `command` | Array | Yes | Command and arguments to run the MCP server. |
| `environment` | Object | No | Environment variables to set when running the server. |
| `enabled` | Boolean | No | Enable or disable the MCP server on startup. |
| `timeout` | Number | No | Timeout in ms for fetching tools from the MCP server. Default: 5000. |
### Remote Servers
@@ -92,22 +92,22 @@ Remote MCP servers are accessed over HTTP/HTTPS. Set `type` to `"remote"`.
#### Remote Server Options
| Option | Type | Required | Description |
| --------- | ------- | -------- | -------------------------------------------------------------------- |
| `type` | String | Yes | Must be `"remote"`. |
| `url` | String | Yes | URL of the remote MCP server. |
| `enabled` | Boolean | No | Enable or disable the MCP server on startup. |
| `headers` | Object | No | HTTP headers to send with requests. |
| `timeout` | Number | No | Timeout in ms for fetching tools from the MCP server. Default: 5000. |
| Option | Type | Required | Description |
|---|---|---|---|
| `type` | String | Yes | Must be `"remote"`. |
| `url` | String | Yes | URL of the remote MCP server. |
| `enabled` | Boolean | No | Enable or disable the MCP server on startup. |
| `headers` | Object | No | HTTP headers to send with requests. |
| `timeout` | Number | No | Timeout in ms for fetching tools from the MCP server. Default: 5000. |
## Managing MCP Servers
You can manage MCP servers from the CLI:
| Command | Description |
| --------------- | ------------------------------- |
| Command | Description |
|---|---|
| `kilo mcp list` | List all configured MCP servers |
| `kilo mcp add` | Add an MCP server |
| `kilo mcp add` | Add an MCP server |
| `kilo mcp auth` | Authenticate with an MCP server |
Inside the interactive TUI, use the `/mcps` slash command to toggle MCP servers on or off.
@@ -76,20 +76,20 @@ Remote servers support OAuth 2.0 authentication. If the server supports it, Kilo
The CLI accepts several config filenames. The recommended file is `kilo.json`:
| Scope | Recommended Path | Also supported |
| ----------- | ------------------------------------ | -------------------------------------------------------------- |
| **Global** | `~/.config/kilo/kilo.json` | `kilo.jsonc`, `opencode.json`, `opencode.jsonc`, `config.json` |
| **Project** | `./kilo.json` or `./.kilo/kilo.json` | `kilo.jsonc`, `opencode.jsonc`, `opencode.json` |
| Scope | Recommended Path | Also supported |
|---|---|---|
| **Global** | `~/.config/kilo/kilo.json` | `kilo.jsonc`, `opencode.json`, `opencode.jsonc`, `config.json` |
| **Project** | `./kilo.json` or `./.kilo/kilo.json` | `kilo.jsonc`, `opencode.jsonc`, `opencode.json` |
{% /tab %}
{% tab label="VSCode (Legacy)" %}
MCP server configurations can be managed at two levels: **global** (applies across all workspaces) and **project-level** (specific to a single project). Project-level configuration takes precedence over global settings.
| Scope | Path | Description |
| ----------- | -------------------- | --------------------------------------------------------------- |
| **Global** | `mcp_settings.json` | Accessible via VS Code settings. Applies across all workspaces. |
| **Project** | `.kilocode/mcp.json` | In your project root. Auto-detected by Kilo Code. |
| Scope | Path | Description |
|---|---|---|
| **Global** | `mcp_settings.json` | Accessible via VS Code settings. Applies across all workspaces. |
| **Project** | `.kilocode/mcp.json` | In your project root. Auto-detected by Kilo Code. |
Project-level configs can be committed to version control to share with your team.
@@ -196,13 +196,13 @@ In the VS Code extension, open **Settings → MCP**, click **Add Server**, and c
#### Local Server Options
| Option | Type | Required | Description |
| ------------- | ------- | -------- | --------------------------------------------------------------------- |
| `type` | String | Yes | Must be `"local"`. |
| `command` | Array | Yes | Command and arguments to run the MCP server. |
| `environment` | Object | No | Environment variables to set when running the server. |
| `enabled` | Boolean | No | Enable or disable the MCP server on startup. |
| `timeout` | Number | No | Timeout in ms for fetching tools from the MCP server. Default: 30000. |
| Option | Type | Required | Description |
|---|---|---|---|
| `type` | String | Yes | Must be `"local"`. |
| `command` | Array | Yes | Command and arguments to run the MCP server. |
| `environment` | Object | No | Environment variables to set when running the server. |
| `enabled` | Boolean | No | Enable or disable the MCP server on startup. |
| `timeout` | Number | No | Timeout in ms for fetching tools from the MCP server. Default: 30000. |
{% /tab %}
{% tab label="VSCode (Legacy)" %}
@@ -260,13 +260,13 @@ In the VS Code extension, open **Settings → MCP**, click **Add Server**, and c
#### Remote Server Options
| Option | Type | Required | Description |
| --------- | ------- | -------- | --------------------------------------------------------------------- |
| `type` | String | Yes | Must be `"remote"`. |
| `url` | String | Yes | URL of the remote MCP server. |
| `enabled` | Boolean | No | Enable or disable the MCP server on startup. |
| `headers` | Object | No | HTTP headers to send with requests. |
| `timeout` | Number | No | Timeout in ms for fetching tools from the MCP server. Default: 30000. |
| Option | Type | Required | Description |
|---|---|---|---|
| `type` | String | Yes | Must be `"remote"`. |
| `url` | String | Yes | URL of the remote MCP server. |
| `enabled` | Boolean | No | Enable or disable the MCP server on startup. |
| `headers` | Object | No | HTTP headers to send with requests. |
| `timeout` | Number | No | Timeout in ms for fetching tools from the MCP server. Default: 30000. |
{% /tab %}
{% tab label="VSCode (Legacy)" %}
@@ -339,13 +339,13 @@ The extension also supports the `{env:VARIABLE_NAME}` syntax in config files to
### CLI Commands
| Command | Description |
| ----------------- | ------------------------------- |
| `kilo mcp list` | List all configured MCP servers |
| `kilo mcp add` | Add an MCP server |
| `kilo mcp auth` | Authenticate with an MCP server |
| `kilo mcp logout` | Log out from an MCP server |
| `kilo mcp debug` | Debug an MCP server connection |
| Command | Description |
|---|---|
| `kilo mcp list` | List all configured MCP servers |
| `kilo mcp add` | Add an MCP server |
| `kilo mcp auth` | Authenticate with an MCP server |
| `kilo mcp logout` | Log out from an MCP server |
| `kilo mcp debug` | Debug an MCP server connection |
### Enabling or Disabling a Server
@@ -513,20 +513,20 @@ In the VS Code extension, open **Settings → MCP**, click **Add Server**, and c
Use `cmd` as the command and pass the package command as arguments:
| Field | Value |
| ------------- | ----------------------------------------------------------- |
| **Name** | `puppeteer` |
| **Command** | `cmd` |
| Field | Value |
|---|---|
| **Name** | `puppeteer` |
| **Command** | `cmd` |
| **Arguments** | `/c`, `npx`, `-y`, `@modelcontextprotocol/server-puppeteer` |
### macOS and Linux
Use the executable directly:
| Field | Value |
| ------------- | ---------------------------------------------- |
| **Name** | `puppeteer` |
| **Command** | `npx` |
| Field | Value |
|---|---|
| **Name** | `puppeteer` |
| **Command** | `npx` |
| **Arguments** | `-y`, `@modelcontextprotocol/server-puppeteer` |
{% /tab %}
@@ -16,15 +16,15 @@ Kilo Code implements a sophisticated tool system that allows AI models to intera
Tools are organized into logical groups based on their functionality:
| Category | Purpose | Tools | Common Use |
| ------------------ | --------------------------------- | ------------------------------------------------------------ | --------------------------------------- |
| **Read Group** | File system reading and searching | `read`, `glob`, `grep` | Code exploration and analysis |
| **Edit Group** | File system modifications | `edit`, `multiedit`, `write`, `apply_patch` | Code changes and file manipulation |
| **Execute Group** | Shell command execution | `bash` | Running scripts, building projects |
| **Web Group** | Fetch and search web content | `webfetch`, `websearch`, `codesearch` | Research, documentation lookup |
| **Browser Group** | Web browser automation | `kilo-playwright_*` (via built-in Playwright MCP) | Browser testing and interaction |
| **MCP Group** | External tool integration | MCP server tools (namespaced as `{server}_{tool}`) | Specialized functionality via MCP |
| **Workflow Group** | Sub-agents and task management | `question`, `task`, `todowrite`, `todoread`, `plan`, `skill` | Context switching and task organization |
| Category | Purpose | Tools | Common Use |
|---|---|---|---|
| **Read Group** | File system reading and searching | `read`, `glob`, `grep` | Code exploration and analysis |
| **Edit Group** | File system modifications | `edit`, `multiedit`, `write`, `apply_patch` | Code changes and file manipulation |
| **Execute Group** | Shell command execution | `bash` | Running scripts, building projects |
| **Web Group** | Fetch and search web content | `webfetch`, `websearch`, `codesearch` | Research, documentation lookup |
| **Browser Group** | Web browser automation | `kilo-playwright_*` (via built-in Playwright MCP) | Browser testing and interaction |
| **MCP Group** | External tool integration | MCP server tools (namespaced as `{server}_{tool}`) | Specialized functionality via MCP |
| **Workflow Group** | Sub-agents and task management | `question`, `task`, `todowrite`, `todoread`, `plan`, `skill` | Context switching and task organization |
### Always Available Tools
@@ -99,14 +99,14 @@ These tools help manage the conversation and task flow:
Tools are organized into logical groups based on their functionality:
| Category | Purpose | Tools | Common Use |
| ------------------ | --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- |
| **Read Group** | File system reading and searching | [read_file](/docs/automate/tools/read-file), [search_files](/docs/automate/tools/search-files), [list_files](/docs/automate/tools/list-files), [list_code_definition_names](/docs/automate/tools/list-code-definition-names) | Code exploration and analysis |
| **Edit Group** | File system modifications | [apply_diff](/docs/automate/tools/apply-diff), [delete_file](/docs/automate/tools/delete-file), [write_to_file](/docs/automate/tools/write-to-file) | Code changes and file manipulation |
| **Browser Group** | Web automation | [browser_action](/docs/automate/tools/browser-action) | Web testing and interaction |
| **Command Group** | System command execution | [execute_command](/docs/automate/tools/execute-command) | Running scripts, building projects |
| **MCP Group** | External tool integration | [use_mcp_tool](/docs/automate/tools/use-mcp-tool), [access_mcp_resource](/docs/automate/tools/access-mcp-resource) | Specialized functionality through external servers |
| **Workflow Group** | Mode and task management | [switch_mode](/docs/automate/tools/switch-mode), [new_task](/docs/automate/tools/new-task), [ask_followup_question](/docs/automate/tools/ask-followup-question), [attempt_completion](/docs/automate/tools/attempt-completion), [update_todo_list](/docs/automate/tools/update-todo-list) | Context switching and task organization |
| Category | Purpose | Tools | Common Use |
|---|---|---|---|
| **Read Group** | File system reading and searching | [read_file](/docs/automate/tools/read-file), [search_files](/docs/automate/tools/search-files), [list_files](/docs/automate/tools/list-files), [list_code_definition_names](/docs/automate/tools/list-code-definition-names) | Code exploration and analysis |
| **Edit Group** | File system modifications | [apply_diff](/docs/automate/tools/apply-diff), [delete_file](/docs/automate/tools/delete-file), [write_to_file](/docs/automate/tools/write-to-file) | Code changes and file manipulation |
| **Browser Group** | Web automation | [browser_action](/docs/automate/tools/browser-action) | Web testing and interaction |
| **Command Group** | System command execution | [execute_command](/docs/automate/tools/execute-command) | Running scripts, building projects |
| **MCP Group** | External tool integration | [use_mcp_tool](/docs/automate/tools/use-mcp-tool), [access_mcp_resource](/docs/automate/tools/access-mcp-resource) | Specialized functionality through external servers |
| **Workflow Group** | Mode and task management | [switch_mode](/docs/automate/tools/switch-mode), [new_task](/docs/automate/tools/new-task), [ask_followup_question](/docs/automate/tools/ask-followup-question), [attempt_completion](/docs/automate/tools/attempt-completion), [update_todo_list](/docs/automate/tools/update-todo-list) | Context switching and task organization |
### Always Available Tools
@@ -7,11 +7,11 @@ description: "Smart model routing that automatically selects the optimal AI mode
Auto Model is a smart model routing system that automatically selects the optimal AI model based on the Kilo Code mode you're using. It comes in multiple tiers so you can balance cost and capability to fit your needs.
| Tier | Best For | Pricing |
| -------------------- | ------------------------------------------------- | ------- |
| `kilo-auto/frontier` | Maximum capability with the best available models | Paid |
| `kilo-auto/balanced` | Strong performance at a lower cost | Paid |
| `kilo-auto/free` | The best free models available | Free |
| Tier | Best For | Pricing |
|---|---|---|
| `kilo-auto/frontier` | Maximum capability with the best available models | Paid |
| `kilo-auto/balanced` | Strong performance at a lower cost | Paid |
| `kilo-auto/free` | The best free models available | Free |
## How It Works
@@ -137,12 +137,12 @@ Reference files and other context directly in your message using `@`:
## Common Mistakes to Avoid
| Instead of this... | Try this |
| --------------------------------- | ----------------------------------------------------------------------------------- |
| "Fix the code" | "Fix the bug in `calculateTotal` that returns incorrect results" |
| Assuming Kilo knows context | Use `@` to reference specific files |
| Multiple unrelated tasks | Submit one focused request at a time |
| Technical jargon overload | Clear, straightforward language works best |
| Instead of this... | Try this |
|---|---|
| "Fix the code" | "Fix the bug in `calculateTotal` that returns incorrect results" |
| Assuming Kilo knows context | Use `@` to reference specific files |
| Multiple unrelated tasks | Submit one focused request at a time |
| Technical jargon overload | Clear, straightforward language works best |
| Using chat for tiny code changes. | Use [autocomplete](/docs/code-with-ai/features/autocomplete) for inline completions |
**Why it matters:** Kilo Code works best when you communicate like you're talking to a smart teammate who needs clear direction.
@@ -20,11 +20,11 @@ When you describe a task, the agent uses its tools — `read`, `grep`, `glob`, a
Type `@` in the chat input to get autocomplete suggestions. You can mention:
| Mention | Description | Example |
| ---------------- | ----------------------------------------------------- | --------------- |
| **File** | Attach a file's contents to your message | `@src/utils.ts` |
| **Terminal** | Include your active VS Code terminal output | `@terminal` |
| **Git Changes** | Attach uncommitted working-tree diffs and new files | `@git-changes` |
| Mention | Description | Example |
|---|---|---|
| **File** | Attach a file's contents to your message | `@src/utils.ts` |
| **Terminal** | Include your active VS Code terminal output | `@terminal` |
| **Git Changes** | Attach uncommitted working-tree diffs and new files | `@git-changes` |
Selecting a suggestion inserts the mention and highlights it in the input. File contents, terminal output, and git changes are attached as context when you send the message.
@@ -32,12 +32,12 @@ Selecting a suggestion inserts the mention and highlights it in the input. File
You can also add file mentions by dragging and dropping:
| Source | How | Result |
| ------------------------------ | ----------------------------------------------------------------------------------------- | ------------------------------------ |
| **Explorer / Editor tabs** | Drag a file or folder from VS Code's Explorer or an editor tab into the chat input | Inserts an `@/relative/path` mention |
| **Multiple files** | Drag several files at once | Inserts space-separated `@` mentions |
| **Agent Manager diff headers** | Drag a file header from the Agent Manager's diff panel into chat | Inserts an `@file` mention |
| **Images** | Hold **Shift** while dragging an image file from your OS file manager into the chat input | Attaches the image |
| Source | How | Result |
|---|---|---|
| **Explorer / Editor tabs** | Drag a file or folder from VS Code's Explorer or an editor tab into the chat input | Inserts an `@/relative/path` mention |
| **Multiple files** | Drag several files at once | Inserts space-separated `@` mentions |
| **Agent Manager diff headers** | Drag a file header from the Agent Manager's diff panel into chat | Inserts an `@file` mention |
| **Images** | Hold **Shift** while dragging an image file from your OS file manager into the chat input | Attaches the image |
{% callout type="info" %}
VS Code requires holding **Shift** when dragging files from outside the editor (e.g. Finder or Windows Explorer) into a webview. This applies to image drops — file drops from within VS Code (Explorer, editor tabs) work without Shift.
@@ -53,23 +53,23 @@ Selected code and editor diagnostics (errors/warnings) are not included automati
Rather than attaching file contents up front, the agent reads files on demand during its work:
| Tool | Purpose | Example |
| -------- | --------------------------------------------- | ------------------------------------------- |
| **read** | Read the contents of a specific file | Agent reads `src/utils.ts` to understand it |
| **glob** | Find files matching a pattern | Agent searches for `**/*.test.ts` |
| **grep** | Search file contents for a pattern | Agent searches for `function handleError` |
| **bash** | Run shell commands including `git` operations | Agent runs `git diff` or `git log` |
| Tool | Purpose | Example |
|---|---|---|
| **read** | Read the contents of a specific file | Agent reads `src/utils.ts` to understand it |
| **glob** | Find files matching a pattern | Agent searches for `**/*.test.ts` |
| **grep** | Search file contents for a pattern | Agent searches for `function handleError` |
| **bash** | Run shell commands including `git` operations | Agent runs `git diff` or `git log` |
This means the agent can explore your entire project as needed, rather than being limited to files you explicitly mention.
## Best Practices
| Practice | Description |
| ------------------------------ | -------------------------------------------------------------------------------------------------- |
| **Describe the task clearly** | The agent finds context on its own — focus on _what_ you want done rather than _where_ the code is |
| **Mention files when helpful** | If you know the exact file, mention its path to save the agent a search step |
| **Keep editor tabs relevant** | Open tabs are passed as context, so keep relevant files open |
| **Trust the agent's tools** | The agent can search, read, and explore your codebase — let it do the discovery work |
| Practice | Description |
|---|---|
| **Describe the task clearly** | The agent finds context on its own — focus on _what_ you want done rather than _where_ the code is |
| **Mention files when helpful** | If you know the exact file, mention its path to save the agent a search step |
| **Keep editor tabs relevant** | Open tabs are passed as context, so keep relevant files open |
| **Trust the agent's tools** | The agent can search, read, and explore your codebase — let it do the discovery work |
{% /tab %}
{% tab label="CLI" %}
@@ -93,23 +93,23 @@ In the terminal-based TUI, you can provide context in several ways:
Rather than attaching file contents up front, the agent reads files on demand during its work:
| Tool | Purpose | Example |
| -------- | --------------------------------------------- | ------------------------------------------- |
| **read** | Read the contents of a specific file | Agent reads `src/utils.ts` to understand it |
| **glob** | Find files matching a pattern | Agent searches for `**/*.test.ts` |
| **grep** | Search file contents for a pattern | Agent searches for `function handleError` |
| **bash** | Run shell commands including `git` operations | Agent runs `git diff` or `git log` |
| Tool | Purpose | Example |
|---|---|---|
| **read** | Read the contents of a specific file | Agent reads `src/utils.ts` to understand it |
| **glob** | Find files matching a pattern | Agent searches for `**/*.test.ts` |
| **grep** | Search file contents for a pattern | Agent searches for `function handleError` |
| **bash** | Run shell commands including `git` operations | Agent runs `git diff` or `git log` |
This means the agent can explore your entire project as needed, rather than being limited to files you explicitly mention.
## Best Practices
| Practice | Description |
| ------------------------------ | -------------------------------------------------------------------------------------------------- |
| **Describe the task clearly** | The agent finds context on its own — focus on _what_ you want done rather than _where_ the code is |
| **Mention files when helpful** | If you know the exact file, mention its path to save the agent a search step |
| **Use `kilo run -f`** | Pass key files with `-f` when using `kilo run` for immediate context |
| **Trust the agent's tools** | The agent can search, read, and explore your codebase — let it do the discovery work |
| Practice | Description |
|---|---|
| **Describe the task clearly** | The agent finds context on its own — focus on _what_ you want done rather than _where_ the code is |
| **Mention files when helpful** | If you know the exact file, mention its path to save the agent a search step |
| **Use `kilo run -f`** | Pass key files with `-f` when using `kilo run` for immediate context |
| **Trust the agent's tools** | The agent can search, read, and explore your codebase — let it do the discovery work |
{% /tab %}
{% tab label="VSCode (Legacy)" %}
@@ -122,84 +122,84 @@ Context mentions are a powerful way to provide Kilo Code with specific informati
{% image src="/docs/img/context-mentions/context-mentions-1.png" alt="File mention example showing a file being referenced with @ and its contents appearing in the conversation" width="600" caption="File mentions add actual code content into the conversation for direct reference and analysis." /%}
| Mention Type | Format | Description | Example Usage |
| --------------- | ---------------------- | ------------------------------------------- | ---------------------------------------- |
| **File** | `@/path/to/file.ts` | Includes file contents in request context | "Explain the function in @/src/utils.ts" |
| **Folder** | `@/path/to/folder/` | Provides directory structure in tree format | "What files are in @/src/components/?" |
| **Problems** | `@problems` | Includes VS Code Problems panel diagnostics | "@problems Fix all errors in my code" |
| **Terminal** | `@terminal` | Includes recent terminal command and output | "Fix the errors shown in @terminal" |
| **Git Commit** | `@a1b2c3d` | References specific commit by hash | "What changed in commit @a1b2c3d?" |
| **Git Changes** | `@git-changes` | Shows uncommitted changes | "Suggest a message for @git-changes" |
| **URL** | `@https://example.com` | Imports website content | "Summarize @https://docusaurus.io/" |
| Mention Type | Format | Description | Example Usage |
|---|---|---|---|
| **File** | `@/path/to/file.ts` | Includes file contents in request context | "Explain the function in @/src/utils.ts" |
| **Folder** | `@/path/to/folder/` | Provides directory structure in tree format | "What files are in @/src/components/?" |
| **Problems** | `@problems` | Includes VS Code Problems panel diagnostics | "@problems Fix all errors in my code" |
| **Terminal** | `@terminal` | Includes recent terminal command and output | "Fix the errors shown in @terminal" |
| **Git Commit** | `@a1b2c3d` | References specific commit by hash | "What changed in commit @a1b2c3d?" |
| **Git Changes** | `@git-changes` | Shows uncommitted changes | "Suggest a message for @git-changes" |
| **URL** | `@https://example.com` | Imports website content | "Summarize @https://docusaurus.io/" |
### File Mentions
{% image src="/docs/img/context-mentions/context-mentions-1.png" alt="File mention example showing a file being referenced with @ and its contents appearing in the conversation" width="600" caption="File mentions incorporate source code with line numbers for precise references." /%}
| Capability | Details |
| --------------- | --------------------------------------------------------------- |
| **Format** | `@/path/to/file.ts` (always start with `/` from workspace root) |
| **Provides** | Complete file contents with line numbers |
| **Supports** | Text files, PDFs, and DOCX files (with text extraction) |
| **Works in** | Initial requests, feedback responses, and follow-up messages |
| **Limitations** | Very large files may be truncated; binary files not supported |
| Capability | Details |
|---|---|
| **Format** | `@/path/to/file.ts` (always start with `/` from workspace root) |
| **Provides** | Complete file contents with line numbers |
| **Supports** | Text files, PDFs, and DOCX files (with text extraction) |
| **Works in** | Initial requests, feedback responses, and follow-up messages |
| **Limitations** | Very large files may be truncated; binary files not supported |
### Folder Mentions
{% image src="/docs/img/context-mentions/context-mentions-2.png" alt="Folder mention example showing directory contents being referenced in the chat" width="600" caption="Folder mentions display directory structure in a readable tree format." /%}
| Capability | Details |
| ------------ | ------------------------------------------------------ |
| **Format** | `@/path/to/folder/` (note trailing slash) |
| **Provides** | Hierarchical tree display with ├── and └── prefixes |
| **Includes** | Immediate child files and directories (not recursive) |
| **Best for** | Understanding project structure |
| **Tip** | Use with file mentions to check specific file contents |
| Capability | Details |
|---|---|
| **Format** | `@/path/to/folder/` (note trailing slash) |
| **Provides** | Hierarchical tree display with ├── and └── prefixes |
| **Includes** | Immediate child files and directories (not recursive) |
| **Best for** | Understanding project structure |
| **Tip** | Use with file mentions to check specific file contents |
### Problems Mention
{% image src="/docs/img/context-mentions/context-mentions-3.png" alt="Problems mention example showing VS Code problems panel being referenced with @problems" width="600" caption="Problems mentions import diagnostics directly from VS Code's problems panel." /%}
| Capability | Details |
| ------------ | ----------------------------------------------------- |
| **Format** | `@problems` |
| Capability | Details |
|---|---|
| **Format** | `@problems` |
| **Provides** | All errors and warnings from VS Code's problems panel |
| **Includes** | File paths, line numbers, and diagnostic messages |
| **Groups** | Problems organized by file for better clarity |
| **Best for** | Fixing errors without manual copying |
| **Includes** | File paths, line numbers, and diagnostic messages |
| **Groups** | Problems organized by file for better clarity |
| **Best for** | Fixing errors without manual copying |
### Terminal Mention
{% image src="/docs/img/context-mentions/context-mentions-4.png" alt="Terminal mention example showing terminal output being included in Kilo Code's context" width="600" caption="Terminal mentions capture recent command output for debugging and analysis." /%}
| Capability | Details |
| -------------- | -------------------------------------------------- |
| **Format** | `@terminal` |
| **Captures** | Last command and its complete output |
| **Preserves** | Terminal state (doesn't clear the terminal) |
| **Limitation** | Limited to visible terminal buffer content |
| **Best for** | Debugging build errors or analyzing command output |
| Capability | Details |
|---|---|
| **Format** | `@terminal` |
| **Captures** | Last command and its complete output |
| **Preserves** | Terminal state (doesn't clear the terminal) |
| **Limitation** | Limited to visible terminal buffer content |
| **Best for** | Debugging build errors or analyzing command output |
### Git Mentions
{% image src="/docs/img/context-mentions/context-mentions-5.png" alt="Git commit mention example showing commit details being analyzed by Kilo Code" width="600" caption="Git mentions provide commit details and diffs for context-aware version analysis." /%}
| Type | Format | Provides | Limitations |
| ------------------- | -------------- | --------------------------------------------------- | ------------------------------ |
| **Commit** | `@a1b2c3d` | Commit message, author, date, and complete diff | Only works in Git repositories |
| Type | Format | Provides | Limitations |
|---|---|---|---|
| **Commit** | `@a1b2c3d` | Commit message, author, date, and complete diff | Only works in Git repositories |
| **Working Changes** | `@git-changes` | `git status` output and diff of uncommitted changes | Only works in Git repositories |
### URL Mentions
{% image src="/docs/img/context-mentions/context-mentions-6.png" alt="URL mention example showing website content being converted to Markdown in the chat" width="600" caption="URL mentions import external web content and convert it to readable Markdown format." /%}
| Capability | Details |
| -------------- | ------------------------------------------------ |
| **Format** | `@https://example.com` |
| **Processing** | Uses headless browser to fetch content |
| **Cleaning** | Removes scripts, styles, and navigation elements |
| **Output** | Converts content to Markdown for readability |
| **Limitation** | Complex pages may not convert perfectly |
| Capability | Details |
|---|---|
| **Format** | `@https://example.com` |
| **Processing** | Uses headless browser to fetch content |
| **Cleaning** | Removes scripts, styles, and navigation elements |
| **Output** | Converts content to Markdown for readability |
| **Limitation** | Complex pages may not convert perfectly |
## How to Use Mentions
@@ -217,14 +217,14 @@ The dropdown automatically suggests:
## Best Practices
| Practice | Description |
| -------------------------- | -------------------------------------------------------------------------------- |
| **Use specific paths** | Reference exact files rather than describing them |
| **Use relative paths** | Always start from workspace root: `@/src/file.ts` not `@C:/Projects/src/file.ts` |
| **Verify references** | Ensure paths and commit hashes are correct |
| **Click mentions** | Click mentions in chat history to open files or view content |
| **Eliminate copy-pasting** | Use mentions instead of manually copying code or errors |
| **Combine mentions** | "Fix @problems in @/src/component.ts using the pattern from commit @a1b2c3d" |
| Practice | Description |
|---|---|
| **Use specific paths** | Reference exact files rather than describing them |
| **Use relative paths** | Always start from workspace root: `@/src/file.ts` not `@C:/Projects/src/file.ts` |
| **Verify references** | Ensure paths and commit hashes are correct |
| **Click mentions** | Click mentions in chat history to open files or view content |
| **Eliminate copy-pasting** | Use mentions instead of manually copying code or errors |
| **Combine mentions** | "Fix @problems in @/src/component.ts using the pattern from commit @a1b2c3d" |
{% /tab %}
{% /tabs %}
@@ -76,30 +76,30 @@ The `model` key uses the format `provider_id/model_id`, where:
All fields are optional. When a model ID matches one already in the built-in catalog, your values are merged on top of the defaults — you only need to specify what you want to override.
| Field | Type | Description |
| ------------- | --------- | ----------------------------------------------------------------------------- |
| `name` | `string` | Display name shown in the model picker |
| `id` | `string` | API-facing model ID sent to the provider. Defaults to the config key |
| `tool_call` | `boolean` | Whether the model supports tool/function calling |
| `reasoning` | `boolean` | Whether the model supports extended thinking |
| `temperature` | `boolean` | Whether the model supports the temperature parameter |
| `attachment` | `boolean` | Whether the model supports file attachments |
| `modalities` | `object` | Optional. Supported input and output types: `{ input, output }` |
| `limit` | `object` | Token limits: `{ context, output, input? }` |
| `cost` | `object` | Pricing per million tokens: `{ input, output, cache_read?, cache_write? }` |
| `options` | `object` | Arbitrary provider-specific model options |
| `headers` | `object` | Custom HTTP headers to include in requests |
| `provider` | `object` | Override `{ npm?, api? }` — the AI SDK package or base API URL for this model |
| `variants` | `object` | Named variant configurations (e.g., different reasoning efforts) |
| Field | Type | Description |
|---|---|---|
| `name` | `string` | Display name shown in the model picker |
| `id` | `string` | API-facing model ID sent to the provider. Defaults to the config key |
| `tool_call` | `boolean` | Whether the model supports tool/function calling |
| `reasoning` | `boolean` | Whether the model supports extended thinking |
| `temperature` | `boolean` | Whether the model supports the temperature parameter |
| `attachment` | `boolean` | Whether the model supports file attachments |
| `modalities` | `object` | Optional. Supported input and output types: `{ input, output }` |
| `limit` | `object` | Token limits: `{ context, output, input? }` |
| `cost` | `object` | Pricing per million tokens: `{ input, output, cache_read?, cache_write? }` |
| `options` | `object` | Arbitrary provider-specific model options |
| `headers` | `object` | Custom HTTP headers to include in requests |
| `provider` | `object` | Override `{ npm?, api? }` — the AI SDK package or base API URL for this model |
| `variants` | `object` | Named variant configurations (e.g., different reasoning efforts) |
### Modalities (modalities)
The `modalities` object declares which content types the model can receive and produce. It is optional — omit it to use defaults from the catalog or fallback to text-only. When `modalities` is provided, both `input` and `output` arrays are required. Each array can include `text`, `image`, `audio`, `video`, or `pdf`.
| Sub-field | Type | Required | Description |
| --------- | ------- | ---------------- | ------------------------------------------------ |
| `input` | `array` | Yes (if present) | Content types the model accepts from the user |
| `output` | `array` | Yes (if present) | Content types the model can generate in response |
| Sub-field | Type | Required | Description |
|---|---|---|---|
| `input` | `array` | Yes (if present) | Content types the model accepts from the user |
| `output` | `array` | Yes (if present) | Content types the model can generate in response |
For a standard text model that can also inspect images, use:
@@ -116,11 +116,11 @@ If `modalities` is omitted and the model ID matches a models.dev catalog entry f
The `limit` object controls how Kilo manages the model's context window and output length. These values are specified in **tokens**.
| Sub-field | Type | Required | Description |
| --------- | -------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `context` | `number` | No | The model's total context window size (e.g., `131072` for a 128K model). Used to determine when conversation history should be compacted to stay within the window. |
| `output` | `number` | No | The maximum number of tokens the model can generate in a single response. Sent to the provider as `max_tokens` or equivalent. Capped at 32,000 by default. |
| `input` | `number` | No | An optional stricter input limit. Some providers enforce an input token ceiling that is lower than the full context window. When set, compaction triggers against this value instead of `context`. |
| Sub-field | Type | Required | Description |
|---|---|---|---|
| `context` | `number` | No | The model's total context window size (e.g., `131072` for a 128K model). Used to determine when conversation history should be compacted to stay within the window. |
| `output` | `number` | No | The maximum number of tokens the model can generate in a single response. Sent to the provider as `max_tokens` or equivalent. Capped at 32,000 by default. |
| `input` | `number` | No | An optional stricter input limit. Some providers enforce an input token ceiling that is lower than the full context window. When set, compaction triggers against this value instead of `context`. |
```jsonc
"limit": {
@@ -336,10 +336,10 @@ You can also set options that apply to all models from a provider:
}
```
| Option | Type | Description |
| --------- | ----------------- | ------------------------------------------------------ |
| `apiKey` | `string` | API key (supports `{env:VAR}` syntax) |
| `baseURL` | `string` | Override the provider's base API URL |
| Option | Type | Description |
|---|---|---|
| `apiKey` | `string` | API key (supports `{env:VAR}` syntax) |
| `baseURL` | `string` | Override the provider's base API URL |
| `timeout` | `number \| false` | Request timeout in milliseconds, or `false` to disable |
## Filtering Available Models
@@ -58,18 +58,18 @@ Four ways to switch modes:
Users often confuse `/newtask` and `/smol`. Here's the key difference:
| Command | Purpose | When to Use |
| ---------- | ----------------------------------------------------- | ----------------------------------------------------------------------- |
| `/newtask` | Creates a new task with context from the current task | When you want to start something new while carrying over context |
| `/smol` | Condenses your current context window | When your conversation is getting too long and you want to summarize it |
| Command | Purpose | When to Use |
|---|---|---|
| `/newtask` | Creates a new task with context from the current task | When you want to start something new while carrying over context |
| `/smol` | Condenses your current context window | When your conversation is getting too long and you want to summarize it |
3. **Toggle command/Keyboard shortcut:** Use the keyboard shortcut below, applicable to your operating system. Each press cycles through the available modes in sequence, wrapping back to the first mode after reaching the end.
| Operating System | Shortcut |
| ---------------- | -------- |
| macOS | ⌘ + . |
| Windows | Ctrl + . |
| Linux | Ctrl + . |
|---|---|
| macOS | ⌘ + . |
| Windows | Ctrl + . |
| Linux | Ctrl + . |
You can hold `shift` to move backwards through the list of modes, for example ⌘ + shift + on macOS.
@@ -87,48 +87,48 @@ You can hold `shift` to move backwards through the list of modes, for example
### code (Default)
| Aspect | Details |
| -------------------- | ----------------------------------------------------------------------------------------------------------------- |
| **Description** | A skilled software engineer with expertise in programming languages, design patterns, and best practices |
| **Tool Access** | Full access to all tools: `read`, `edit`, `glob`, `grep`, `bash`, `task`, `webfetch`, plus tools from MCP servers |
| **Ideal For** | Writing code, implementing features, debugging, and general development |
| **Special Features** | No tool restrictions — full flexibility for all coding tasks |
| Aspect | Details |
|---|---|
| **Description** | A skilled software engineer with expertise in programming languages, design patterns, and best practices |
| **Tool Access** | Full access to all tools: `read`, `edit`, `glob`, `grep`, `bash`, `task`, `webfetch`, plus tools from MCP servers |
| **Ideal For** | Writing code, implementing features, debugging, and general development |
| **Special Features** | No tool restrictions — full flexibility for all coding tasks |
### ask
| Aspect | Details |
| -------------------- | ------------------------------------------------------------------------------------------------- |
| **Description** | A knowledgeable technical assistant focused on answering questions without changing your codebase |
| **Tool Access** | Read-only tools only (cannot edit files or run commands) |
| **Ideal For** | Code explanation, concept exploration, and technical learning |
| **Special Features** | Optimized for informative responses without modifying your project |
| Aspect | Details |
|---|---|
| **Description** | A knowledgeable technical assistant focused on answering questions without changing your codebase |
| **Tool Access** | Read-only tools only (cannot edit files or run commands) |
| **Ideal For** | Code explanation, concept exploration, and technical learning |
| **Special Features** | Optimized for informative responses without modifying your project |
### plan
| Aspect | Details |
| -------------------- | ---------------------------------------------------------------------------------------------------- |
| **Description** | An experienced technical leader and planner who helps design systems and create implementation plans |
| **Tool Access** | Read-only tools plus restricted file editing (plan files in `.kilo/plans/` only) |
| **Ideal For** | System design, high-level planning, and architecture discussions |
| **Special Features** | Similar to the legacy extension's "Architect" mode, with a planning-focused approach |
| Aspect | Details |
|---|---|
| **Description** | An experienced technical leader and planner who helps design systems and create implementation plans |
| **Tool Access** | Read-only tools plus restricted file editing (plan files in `.kilo/plans/` only) |
| **Ideal For** | System design, high-level planning, and architecture discussions |
| **Special Features** | Similar to the legacy extension's "Architect" mode, with a planning-focused approach |
### debug
| Aspect | Details |
| -------------------- | ----------------------------------------------------------------------------------- |
| **Description** | An expert problem solver specializing in systematic troubleshooting and diagnostics |
| **Tool Access** | Full access to all tools |
| **Ideal For** | Tracking down bugs, diagnosing errors, and resolving complex issues |
| Aspect | Details |
|---|---|
| **Description** | An expert problem solver specializing in systematic troubleshooting and diagnostics |
| **Tool Access** | Full access to all tools |
| **Ideal For** | Tracking down bugs, diagnosing errors, and resolving complex issues |
| **Special Features** | Uses a methodical approach of analyzing, narrowing possibilities, and fixing issues |
### orchestrator (Deprecated)
| Aspect | Details |
| -------------------- | -------------------------------------------------------------------------------------------------------------------- |
| **Description** | A strategic workflow orchestrator who coordinates complex tasks by delegating them to appropriate specialized agents |
| **Tool Access** | Limited access to create new tasks and coordinate workflows |
| **Ideal For** | Breaking down complex projects into manageable subtasks assigned to specialized agents |
| **Special Features** | Delegates work to other agents; also has access to the **explore** subagent for codebase exploration |
| Aspect | Details |
|---|---|
| **Description** | A strategic workflow orchestrator who coordinates complex tasks by delegating them to appropriate specialized agents |
| **Tool Access** | Limited access to create new tasks and coordinate workflows |
| **Ideal For** | Breaking down complex projects into manageable subtasks assigned to specialized agents |
| **Special Features** | Delegates work to other agents; also has access to the **explore** subagent for codebase exploration |
{% callout type="warning" %}
Orchestrator is deprecated and will be removed in a future release. Agents with full tool access (Code, Plan, Debug) now support subagents natively — there's no need for a dedicated orchestrator. See [Orchestrator Mode (Deprecated)](/docs/code-with-ai/agents/orchestrator-mode) for migration details.
@@ -143,48 +143,48 @@ The VSCode extension and CLI do not include a built-in Review agent. Code review
### code (Default)
| Aspect | Details |
| -------------------- | ----------------------------------------------------------------------------------------------------------------- |
| **Description** | A skilled software engineer with expertise in programming languages, design patterns, and best practices |
| **Tool Access** | Full access to all tools: `read`, `edit`, `glob`, `grep`, `bash`, `task`, `webfetch`, plus tools from MCP servers |
| **Ideal For** | Writing code, implementing features, debugging, and general development |
| **Special Features** | No tool restrictions — full flexibility for all coding tasks |
| Aspect | Details |
|---|---|
| **Description** | A skilled software engineer with expertise in programming languages, design patterns, and best practices |
| **Tool Access** | Full access to all tools: `read`, `edit`, `glob`, `grep`, `bash`, `task`, `webfetch`, plus tools from MCP servers |
| **Ideal For** | Writing code, implementing features, debugging, and general development |
| **Special Features** | No tool restrictions — full flexibility for all coding tasks |
### ask
| Aspect | Details |
| -------------------- | ------------------------------------------------------------------------------------------------- |
| **Description** | A knowledgeable technical assistant focused on answering questions without changing your codebase |
| **Tool Access** | Read-only tools only (cannot edit files or run commands) |
| **Ideal For** | Code explanation, concept exploration, and technical learning |
| **Special Features** | Optimized for informative responses without modifying your project |
| Aspect | Details |
|---|---|
| **Description** | A knowledgeable technical assistant focused on answering questions without changing your codebase |
| **Tool Access** | Read-only tools only (cannot edit files or run commands) |
| **Ideal For** | Code explanation, concept exploration, and technical learning |
| **Special Features** | Optimized for informative responses without modifying your project |
### plan
| Aspect | Details |
| -------------------- | ---------------------------------------------------------------------------------------------------- |
| **Description** | An experienced technical leader and planner who helps design systems and create implementation plans |
| **Tool Access** | Read-only tools plus restricted file editing (plan files in `.kilo/plans/` only) |
| **Ideal For** | System design, high-level planning, and architecture discussions |
| **Special Features** | Similar to the legacy extension's "Architect" mode, with a planning-focused approach |
| Aspect | Details |
|---|---|
| **Description** | An experienced technical leader and planner who helps design systems and create implementation plans |
| **Tool Access** | Read-only tools plus restricted file editing (plan files in `.kilo/plans/` only) |
| **Ideal For** | System design, high-level planning, and architecture discussions |
| **Special Features** | Similar to the legacy extension's "Architect" mode, with a planning-focused approach |
### debug
| Aspect | Details |
| -------------------- | ----------------------------------------------------------------------------------- |
| **Description** | An expert problem solver specializing in systematic troubleshooting and diagnostics |
| **Tool Access** | Full access to all tools |
| **Ideal For** | Tracking down bugs, diagnosing errors, and resolving complex issues |
| Aspect | Details |
|---|---|
| **Description** | An expert problem solver specializing in systematic troubleshooting and diagnostics |
| **Tool Access** | Full access to all tools |
| **Ideal For** | Tracking down bugs, diagnosing errors, and resolving complex issues |
| **Special Features** | Uses a methodical approach of analyzing, narrowing possibilities, and fixing issues |
### orchestrator (Deprecated)
| Aspect | Details |
| -------------------- | -------------------------------------------------------------------------------------------------------------------- |
| **Description** | A strategic workflow orchestrator who coordinates complex tasks by delegating them to appropriate specialized agents |
| **Tool Access** | Limited access to create new tasks and coordinate workflows |
| **Ideal For** | Breaking down complex projects into manageable subtasks assigned to specialized agents |
| **Special Features** | Delegates work to other agents; also has access to the **explore** subagent for codebase exploration |
| Aspect | Details |
|---|---|
| **Description** | A strategic workflow orchestrator who coordinates complex tasks by delegating them to appropriate specialized agents |
| **Tool Access** | Limited access to create new tasks and coordinate workflows |
| **Ideal For** | Breaking down complex projects into manageable subtasks assigned to specialized agents |
| **Special Features** | Delegates work to other agents; also has access to the **explore** subagent for codebase exploration |
{% callout type="warning" %}
Orchestrator is deprecated and will be removed in a future release. Agents with full tool access (Code, Plan, Debug) now support subagents natively — there's no need for a dedicated orchestrator. See [Orchestrator Mode (Deprecated)](/docs/code-with-ai/agents/orchestrator-mode) for migration details.
@@ -199,38 +199,38 @@ The VSCode extension and CLI do not include a built-in Review agent. Code review
### Code Mode (Default)
| Aspect | Details |
| -------------------- | -------------------------------------------------------------------------------------------------------- |
| **Description** | A skilled software engineer with expertise in programming languages, design patterns, and best practices |
| **Tool Access** | Full access to all tool groups: `read`, `edit`, `browser`, `command`, `mcp` |
| **Ideal For** | Writing code, implementing features, debugging, and general development |
| **Special Features** | No tool restrictions—full flexibility for all coding tasks |
| Aspect | Details |
|---|---|
| **Description** | A skilled software engineer with expertise in programming languages, design patterns, and best practices |
| **Tool Access** | Full access to all tool groups: `read`, `edit`, `browser`, `command`, `mcp` |
| **Ideal For** | Writing code, implementing features, debugging, and general development |
| **Special Features** | No tool restrictions—full flexibility for all coding tasks |
### Ask Mode
| Aspect | Details |
| -------------------- | ------------------------------------------------------------------------------------------------- |
| **Description** | A knowledgeable technical assistant focused on answering questions without changing your codebase |
| **Tool Access** | Limited access: `read`, `browser`, `mcp` only (cannot edit files or run commands) |
| **Ideal For** | Code explanation, concept exploration, and technical learning |
| **Special Features** | Optimized for informative responses without modifying your project |
| Aspect | Details |
|---|---|
| **Description** | A knowledgeable technical assistant focused on answering questions without changing your codebase |
| **Tool Access** | Limited access: `read`, `browser`, `mcp` only (cannot edit files or run commands) |
| **Ideal For** | Code explanation, concept exploration, and technical learning |
| **Special Features** | Optimized for informative responses without modifying your project |
### Architect Mode
| Aspect | Details |
| -------------------- | ---------------------------------------------------------------------------------------------------- |
| **Description** | An experienced technical leader and planner who helps design systems and create implementation plans |
| **Tool Access** | Access to `read`, `browser`, `mcp`, and restricted `edit` (markdown files only) |
| **Ideal For** | System design, high-level planning, and architecture discussions |
| **Special Features** | Follows a structured approach from information gathering to detailed planning |
| Aspect | Details |
|---|---|
| **Description** | An experienced technical leader and planner who helps design systems and create implementation plans |
| **Tool Access** | Access to `read`, `browser`, `mcp`, and restricted `edit` (markdown files only) |
| **Ideal For** | System design, high-level planning, and architecture discussions |
| **Special Features** | Follows a structured approach from information gathering to detailed planning |
### Debug Mode
| Aspect | Details |
| -------------------- | ----------------------------------------------------------------------------------- |
| **Description** | An expert problem solver specializing in systematic troubleshooting and diagnostics |
| **Tool Access** | Full access to all tool groups: `read`, `edit`, `browser`, `command`, `mcp` |
| **Ideal For** | Tracking down bugs, diagnosing errors, and resolving complex issues |
| Aspect | Details |
|---|---|
| **Description** | An expert problem solver specializing in systematic troubleshooting and diagnostics |
| **Tool Access** | Full access to all tool groups: `read`, `edit`, `browser`, `command`, `mcp` |
| **Ideal For** | Tracking down bugs, diagnosing errors, and resolving complex issues |
| **Special Features** | Uses a methodical approach of analyzing, narrowing possibilities, and fixing issues |
{% callout type="tip" %}
@@ -239,21 +239,21 @@ The VSCode extension and CLI do not include a built-in Review agent. Code review
### Orchestrator Mode
| Aspect | Details |
| -------------------- | ------------------------------------------------------------------------------------------------------------------- |
| **Description** | A strategic workflow orchestrator who coordinates complex tasks by delegating them to appropriate specialized modes |
| **Tool Access** | Limited access to create new tasks and coordinate workflows |
| **Ideal For** | Breaking down complex projects into manageable subtasks assigned to specialized modes |
| **Special Features** | Uses the new_task tool to delegate work to other modes |
| Aspect | Details |
|---|---|
| **Description** | A strategic workflow orchestrator who coordinates complex tasks by delegating them to appropriate specialized modes |
| **Tool Access** | Limited access to create new tasks and coordinate workflows |
| **Ideal For** | Breaking down complex projects into manageable subtasks assigned to specialized modes |
| **Special Features** | Uses the new_task tool to delegate work to other modes |
### Review Mode
| Aspect | Details |
| -------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| **Description** | An expert code reviewer specializing in analyzing changes to provide structured feedback on quality, security, and best practices |
| **Tool Access** | Access to `read`, `browser`, `mcp`, and when permitted, `edit` |
| **Ideal For** | Catching issues early, enforcing code standards, accelerating PR turnaround |
| **Special Features** | Code review before committing, surfacing feedback across performance, security, style, and test coverage |
| Aspect | Details |
|---|---|
| **Description** | An expert code reviewer specializing in analyzing changes to provide structured feedback on quality, security, and best practices |
| **Tool Access** | Access to `read`, `browser`, `mcp`, and when permitted, `edit` |
| **Ideal For** | Catching issues early, enforcing code standards, accelerating PR turnaround |
| **Special Features** | Code review before committing, surfacing feedback across performance, security, style, and test coverage |
{% /tab %}
{% /tabs %}
@@ -86,16 +86,16 @@ Key characteristics:
### Available Browser Tools
| Tool | Description | When to Use |
| -------------------- | ----------------------------------- | ------------------------------------- |
| `browser_navigate` | Navigates to a URL | Opening a web page |
| `browser_click` | Clicks an element on the page | Interacting with buttons, links, etc. |
| `browser_type` | Types text into an input element | Filling forms, search boxes |
| `browser_screenshot` | Captures a screenshot of the page | Inspecting visual state |
| `browser_scroll` | Scrolls the page or a specific area | Viewing content above or below |
| `browser_hover` | Hovers over an element | Revealing tooltips or menus |
| `browser_select` | Selects an option from a dropdown | Choosing from select elements |
| `browser_drag` | Drags an element to a target | Drag-and-drop interactions |
| Tool | Description | When to Use |
|---|---|---|
| `browser_navigate` | Navigates to a URL | Opening a web page |
| `browser_click` | Clicks an element on the page | Interacting with buttons, links, etc. |
| `browser_type` | Types text into an input element | Filling forms, search boxes |
| `browser_screenshot` | Captures a screenshot of the page | Inspecting visual state |
| `browser_scroll` | Scrolls the page or a specific area | Viewing content above or below |
| `browser_hover` | Hovers over an element | Revealing tooltips or menus |
| `browser_select` | Selects an option from a dropdown | Choosing from select elements |
| `browser_drag` | Drags an element to a target | Drag-and-drop interactions |
{% /tab %}
{% tab label="VSCode (Legacy)" %}
@@ -111,14 +111,14 @@ Key characteristics:
### Available Browser Actions
| Action | Description | When to Use |
| ------------- | ------------------------------ | ------------------------------------- |
| `launch` | Opens a browser at a URL | Starting a new browser session |
| `click` | Clicks at specific coordinates | Interacting with buttons, links, etc. |
| `type` | Types text into active element | Filling forms, search boxes |
| `scroll_down` | Scrolls down by one page | Viewing content below the fold |
| `scroll_up` | Scrolls up by one page | Returning to previous content |
| `close` | Closes the browser | Ending a browser session |
| Action | Description | When to Use |
|---|---|---|
| `launch` | Opens a browser at a URL | Starting a new browser session |
| `click` | Clicks at specific coordinates | Interacting with buttons, links, etc. |
| `type` | Types text into active element | Filling forms, search boxes |
| `scroll_down` | Scrolls down by one page | Viewing content below the fold |
| `scroll_up` | Scrolls up by one page | Returning to previous content |
| `close` | Closes the browser | Ending a browser session |
{% /tab %}
{% /tabs %}
@@ -587,7 +587,7 @@ Options:
--path directory path to generate the agent file [string]
--description what the agent should do [string]
--mode agent mode [string] [choices: "all", "primary", "subagent"]
--tools comma-separated list of tools to enable (default: all). Available: "bash, read, write, edit, list, glob, grep, webfetch, task, todowrite" [string]
--tools comma-separated list of tools to enable (default: all). Available: "bash, read, write, edit, glob, grep, webfetch, task, todowrite" [string]
-m, --model model to use in the format of provider/model [string]
```
@@ -67,73 +67,73 @@ For detailed help on every command and subcommand, see the [CLI Command Referenc
### Global Options
| Flag | Description |
| ----------------- | ----------------------------------- |
| `--help`, `-h` | Show help |
| `--version`, `-v` | Show version number |
| `--print-logs` | Print logs to stderr |
| `--log-level` | Log level: DEBUG, INFO, WARN, ERROR |
| Flag | Description |
|---|---|
| `--help`, `-h` | Show help |
| `--version`, `-v` | Show version number |
| `--print-logs` | Print logs to stderr |
| `--log-level` | Log level: DEBUG, INFO, WARN, ERROR |
### Interactive Slash Commands
#### Session Commands
| Command | Aliases | Description |
| ------------- | ---------------------- | ------------------------- |
| `/sessions` | `/resume`, `/continue` | Switch session |
| `/new` | `/clear` | New session |
| `/share` | - | Share session |
| `/unshare` | - | Unshare session |
| `/rename` | - | Rename session |
| `/timeline` | - | Jump to message |
| `/fork` | - | Fork from message |
| `/compact` | `/summarize` | Compact/summarize session |
| `/undo` | - | Undo previous message |
| `/redo` | - | Redo message |
| `/copy` | - | Copy session transcript |
| `/export` | - | Export session transcript |
| `/timestamps` | `/toggle-timestamps` | Show/hide timestamps |
| `/thinking` | `/toggle-thinking` | Show/hide thinking blocks |
| Command | Aliases | Description |
|---|---|---|
| `/sessions` | `/resume`, `/continue` | Switch session |
| `/new` | `/clear` | New session |
| `/share` | - | Share session |
| `/unshare` | - | Unshare session |
| `/rename` | - | Rename session |
| `/timeline` | - | Jump to message |
| `/fork` | - | Fork from message |
| `/compact` | `/summarize` | Compact/summarize session |
| `/undo` | - | Undo previous message |
| `/redo` | - | Redo message |
| `/copy` | - | Copy session transcript |
| `/export` | - | Export session transcript |
| `/timestamps` | `/toggle-timestamps` | Show/hide timestamps |
| `/thinking` | `/toggle-thinking` | Show/hide thinking blocks |
#### Agent & Model Commands
| Command | Description |
| --------- | ------------ |
| Command | Description |
|---|---|
| `/models` | Switch model |
| `/agents` | Switch agent |
| `/mcps` | Toggle MCPs |
| `/mcps` | Toggle MCPs |
#### Provider Commands
| Command | Description |
| ---------- | ------------------------------------------------------------------------- |
| Command | Description |
|---|---|
| `/connect` | Connect/add a provider - entry point for new users to add API credentials |
#### System Commands
| Command | Aliases | Description |
| --------- | ------------- | -------------------- |
| `/status` | - | View status |
| `/themes` | - | Switch theme |
| `/help` | - | Show help |
| `/editor` | - | Open external editor |
| `/exit` | `/quit`, `/q` | Exit the app |
| Command | Aliases | Description |
|---|---|---|
| `/status` | - | View status |
| `/themes` | - | Switch theme |
| `/help` | - | Show help |
| `/editor` | - | Open external editor |
| `/exit` | `/quit`, `/q` | Exit the app |
#### Kilo Gateway Commands (when connected)
| Command | Aliases | Description |
| ---------- | ------------------------ | ----------------------------------------- |
| `/profile` | `/me`, `/whoami` | View your Kilo Gateway profile |
| `/teams` | `/team`, `/org`, `/orgs` | Switch between Kilo Gateway teams |
| `/remote` | - | Toggle remote mode for Cloud Agent access |
| Command | Aliases | Description |
|---|---|---|
| `/profile` | `/me`, `/whoami` | View your Kilo Gateway profile |
| `/teams` | `/team`, `/org`, `/orgs` | Switch between Kilo Gateway teams |
| `/remote` | - | Toggle remote mode for Cloud Agent access |
#### Built-in Commands
| Command | Description |
| --------------------------- | -------------------------------------------- |
| `/init` | Create/update AGENTS.md file for the project |
| `/local-review` | Review code changes |
| `/local-review-uncommitted` | Review uncommitted changes |
| Command | Description |
|---|---|
| `/init` | Create/update AGENTS.md file for the project |
| `/local-review` | Review code changes |
| `/local-review-uncommitted` | Review uncommitted changes |
## Local Code Reviews
@@ -141,9 +141,9 @@ Review your code locally before pushing — catch issues early without waiting f
### Commands
| Command | Description |
| --------------------------- | ---------------------------------------------- |
| `/local-review` | Review current branch changes vs base branch |
| Command | Description |
|---|---|
| `/local-review` | Review current branch changes vs base branch |
| `/local-review-uncommitted` | Review uncommitted changes (staged + unstaged) |
## Config Reference
@@ -278,10 +278,10 @@ The Kilo CLI is a fork of [OpenCode](https://opencode.ai) and supports the same
### Config File Location (Kilo CLI 1.0)
| Scope | Path |
| ----------- | ------------------------------------------------------------------------------------------------- |
| **Global** | `~/.config/kilo/opencode.json` or `opencode.jsonc` (Windows: config dir may vary; same filenames) |
| **Project** | `./opencode.json` or `./.opencode/` in project root |
| Scope | Path |
|---|---|
| **Global** | `~/.config/kilo/opencode.json` or `opencode.jsonc` (Windows: config dir may vary; same filenames) |
| **Project** | `./opencode.json` or `./.opencode/` in project root |
Project-level configuration takes precedence over global settings.
@@ -20,10 +20,10 @@ Kilo for Slack brings the power of Kilo Code directly into your Slack workspace.
## Supported Platforms
| Platform | Integration Type | Details |
| -------- | ---------------- | ------------------------------------------------------------------- |
| GitHub | GitHub App | [GitHub Setup Guide](/docs/automate/integrations#connecting-github) |
| GitLab | OAuth or PAT | [GitLab Setup Guide](/docs/automate/integrations#connecting-gitlab) |
| Platform | Integration Type | Details |
|---|---|---|
| GitHub | GitHub App | [GitHub Setup Guide](/docs/automate/integrations#connecting-github) |
| GitLab | OAuth or PAT | [GitLab Setup Guide](/docs/automate/integrations#connecting-gitlab) |
---
@@ -32,12 +32,12 @@ Use these panels to diagnose specific issues and identify targeted actions.
Switch between time filters to understand different patterns:
| Filter | Best For |
| -------------- | ------------------------------------------------ |
| **Past Week** | Recent changes, sprint-level trends |
| Filter | Best For |
|---|---|
| **Past Week** | Recent changes, sprint-level trends |
| **Past Month** | Adoption initiative tracking, onboarding results |
| **Past Year** | Long-term trends, seasonal patterns |
| **All** | Historical baseline, major milestones |
| **Past Year** | Long-term trends, seasonal patterns |
| **All** | Historical baseline, major milestones |
---
@@ -99,12 +99,12 @@ Low Frequency suggests AI hasn't become a daily habit.
Use the score tiers as milestones:
| Current Tier | Reasonable Next Goal |
| --------------- | ---------------------------- |
| 020 (Minimal) | Reach 3040 within 46 weeks |
| 2150 (Early) | Reach 5565 within 46 weeks |
| Current Tier | Reasonable Next Goal |
|---|---|
| 020 (Minimal) | Reach 3040 within 46 weeks |
| 2150 (Early) | Reach 5565 within 46 weeks |
| 5175 (Growing) | Reach 7580 within 68 weeks |
| 7690 (Strong) | Maintain and optimize |
| 7690 (Strong) | Maintain and optimize |
**Tip:** Focus on one dimension at a time rather than trying to improve everything at once.
@@ -224,14 +224,14 @@ Additional views for comparing multiple teams within an organization are planned
## Quick Reference: Dashboard Actions
| What You Want to Know | Where to Look |
| ---------------------------- | ------------------------------------------- |
| Overall adoption level | Main score display |
| Which dimension needs work | Trend indicators (look for negative trends) |
| Specific improvement actions | Click dimension → detail panel |
| Historical patterns | Timeline chart with time filter |
| Your personal usage | Toggle "Only my usage" |
| Week-over-week change | Metric cards at bottom |
| What You Want to Know | Where to Look |
|---|---|
| Overall adoption level | Main score display |
| Which dimension needs work | Trend indicators (look for negative trends) |
| Specific improvement actions | Click dimension → detail panel |
| Historical patterns | Timeline chart with time filter |
| Your personal usage | Toggle "Only my usage" |
| Week-over-week change | Metric cards at bottom |
## Next Steps
@@ -100,12 +100,12 @@ Most teams start with Code mode and stop there. But Kilo's other modes unlock ad
**Action:** Introduce your team to specialized modes:
| Mode | Use Case |
| ---------------- | -------------------------------------------------------- |
| Mode | Use Case |
|---|---|
| **Orchestrator** | Delegate and execute subtasks over long-horizon projects |
| **Architect** | Design and plan before implementation |
| **Debug** | Systematic error diagnosis |
| **Ask** | Quick questions and explanations |
| **Architect** | Design and plan before implementation |
| **Debug** | Systematic error diagnosis |
| **Ask** | Quick questions and explanations |
This increases efficacy and improves trust in AI-facilitated tasking.
@@ -138,23 +138,23 @@ Other ways to spread usage:
### Patterns That Drive Adoption
| Pattern | Why It Works |
| -------------------------------- | -------------------------------------------------- |
| **Pair AI with existing tools** | Developers don't have to learn new workflows |
| **Start with quick wins** | Autocomplete and commit messages build confidence |
| **Champion-led adoption** | Enthusiastic team members model effective usage |
| **Weekly check-ins on AI usage** | Keeps AI top-of-mind without being prescriptive |
| **Celebrate retained code** | Recognize when AI contributions ship to production |
| Pattern | Why It Works |
|---|---|
| **Pair AI with existing tools** | Developers don't have to learn new workflows |
| **Start with quick wins** | Autocomplete and commit messages build confidence |
| **Champion-led adoption** | Enthusiastic team members model effective usage |
| **Weekly check-ins on AI usage** | Keeps AI top-of-mind without being prescriptive |
| **Celebrate retained code** | Recognize when AI contributions ship to production |
### Anti-Patterns to Avoid
| Anti-Pattern | Why It Fails |
| ----------------------------------- | --------------------------------------------- |
| **Mandating specific usage levels** | Creates resentment without changing habits |
| **Focusing only on power users** | Neglects the majority who need onboarding |
| **Ignoring context quality** | Leads to poor suggestions and abandoned usage |
| **Measuring without acting** | Scores drop when no one addresses gaps |
| **All-or-nothing adoption** | Teams need gradual, sustainable change |
| Anti-Pattern | Why It Fails |
|---|---|
| **Mandating specific usage levels** | Creates resentment without changing habits |
| **Focusing only on power users** | Neglects the majority who need onboarding |
| **Ignoring context quality** | Leads to poor suggestions and abandoned usage |
| **Measuring without acting** | Scores drop when no one addresses gaps |
| **All-or-nothing adoption** | Teams need gradual, sustainable change |
---
@@ -72,23 +72,23 @@ Each card displays the percentage change (e.g., "+2.3%" or "-1.5%") with a direc
The AI Adoption Score is composed of three weighted dimensions:
| Dimension | Weight | Question It Answers |
| ------------- | ------ | ------------------------------------------------ |
| **Frequency** | 40% | How often do developers use AI? |
| **Depth** | 40% | How integrated is AI into actual development? |
| **Coverage** | 20% | How broadly is AI being adopted across the team? |
| Dimension | Weight | Question It Answers |
|---|---|---|
| **Frequency** | 40% | How often do developers use AI? |
| **Depth** | 40% | How integrated is AI into actual development? |
| **Coverage** | 20% | How broadly is AI being adopted across the team? |
Click on any dimension card to view detailed analysis and improvement suggestions specific to that dimension.
## Quick Reference: Score Tiers
| Score Range | Tier | Description |
| ----------- | ------------------------ | ---------------------------------------- |
| 020 | Minimal adoption | AI usage is sporadic or experimental |
| 2150 | Early adoption | Some developers are using AI regularly |
| 5175 | Growing adoption | AI is becoming part of team workflows |
| 7690 | Strong adoption | AI is deeply integrated into development |
| 91100 | AI-first engineering org | AI is central to how the team ships code |
| Score Range | Tier | Description |
|---|---|---|
| 020 | Minimal adoption | AI usage is sporadic or experimental |
| 2150 | Early adoption | Some developers are using AI regularly |
| 5175 | Growing adoption | AI is becoming part of team workflows |
| 7690 | Strong adoption | AI is deeply integrated into development |
| 91100 | AI-first engineering org | AI is central to how the team ships code |
## Next Steps
@@ -67,13 +67,13 @@ This dimension captures reach and rollout—how many team members are using AI a
Your score falls into one of five tiers:
| Score Range | Tier | What It Means |
| ----------- | ------------------------ | ----------------------------------------------------------------------------------------------------------- |
| **020** | Minimal adoption | AI usage is sporadic or experimental. Most developers aren't using AI tools regularly. |
| **2150** | Early adoption | Some developers have incorporated AI into their workflow, but it's not yet team-wide. |
| **5175** | Growing adoption | AI is becoming a standard part of how the team works. Most developers use it, though depth varies. |
| **7690** | Strong adoption | AI is deeply integrated into development workflows. Teams at this level trust and depend on AI suggestions. |
| **91100** | AI-first engineering org | AI is central to how the team ships code. Usage is high, broad, and deeply integrated. |
| Score Range | Tier | What It Means |
|---|---|---|
| **020** | Minimal adoption | AI usage is sporadic or experimental. Most developers aren't using AI tools regularly. |
| **2150** | Early adoption | Some developers have incorporated AI into their workflow, but it's not yet team-wide. |
| **5175** | Growing adoption | AI is becoming a standard part of how the team works. Most developers use it, though depth varies. |
| **7690** | Strong adoption | AI is deeply integrated into development workflows. Teams at this level trust and depend on AI suggestions. |
| **91100** | AI-first engineering org | AI is central to how the team ships code. Usage is high, broad, and deeply integrated. |
## How Scores Are Calculated
@@ -20,11 +20,11 @@ Use filters to narrow down results by action, user, or date range.
## Filters
| Filter | Description |
| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Actions** | Choose one or more events to view. Options include: <br /> - `user login` / `logout` <br /> - `user invite`, `accept invite`, `revoke invite` <br /> - `settings change` <br /> - `purchase credits` <br /> - `member remove`, `member change role` <br /> - `sso set domain`, `sso remove domain` |
| **Actor Email** | Filter by the user who performed the action. |
| **Start / End Date** | Specify a date and time range to view logs within that period. |
| Filter | Description |
|---|---|
| **Actions** | Choose one or more events to view. Options include: <br /> - `user login` / `logout` <br /> - `user invite`, `accept invite`, `revoke invite` <br /> - `settings change` <br /> - `purchase credits` <br /> - `member remove`, `member change role` <br /> - `sso set domain`, `sso remove domain` |
| **Actor Email** | Filter by the user who performed the action. |
| **Start / End Date** | Specify a date and time range to view logs within that period. |
Multiple filters can be used together for precise auditing.
@@ -32,11 +32,11 @@ Multiple filters can be used together for precise auditing.
Each event includes:
| Field | Description |
| ----------- | ------------------------------------------------------------------------------- |
| **Time** | When the action occurred (shown in your local timezone). |
| **Action** | The event type (e.g. `user.login`, `settings.change`). |
| **Actor** | The user who performed the action. |
| Field | Description |
|---|---|
| **Time** | When the action occurred (shown in your local timezone). |
| **Action** | The event type (e.g. `user.login`, `settings.change`). |
| **Actor** | The user who performed the action. |
| **Details** | Context or additional data related to the event (e.g. models added or removed). |
## Logged Events
@@ -78,14 +78,14 @@ Switch to **Kilo Teams** or **Kilo Enterprise** from other AI coding tools and e
### Cursor Feature Mapping
| Cursor Feature | Kilo Equivalent |
| ---------------------- | -------------------------------------------------------------- |
| AI Chat | Chat interface with multiple modes |
| Code Generation | Code mode with advanced tools |
| Code Editing | Fast edits and surgical modifications |
| Codebase Understanding | Codebase indexing and search |
| Team Management | Comprehensive team dashboard (Enterprise adds SSO, audit logs) |
| Usage Analytics | Detailed usage and cost analytics |
| Cursor Feature | Kilo Equivalent |
|---|---|
| AI Chat | Chat interface with multiple modes |
| Code Generation | Code mode with advanced tools |
| Code Editing | Fast edits and surgical modifications |
| Codebase Understanding | Codebase indexing and search |
| Team Management | Comprehensive team dashboard (Enterprise adds SSO, audit logs) |
| Usage Analytics | Detailed usage and cost analytics |
## Migrating from GitHub Copilot
@@ -131,13 +131,13 @@ Switch to **Kilo Teams** or **Kilo Enterprise** from other AI coding tools and e
### GitHub Copilot Feature Comparison
| GitHub Copilot | Kilo | Advantage |
| ---------------- | -------------------------------- | ----------------------------- |
| Code suggestions | AI-powered code generation | ✅ More model choices |
| Chat interface | Multi-mode chat system | ✅ Specialized modes |
| Team admin | Comprehensive team management | ✅ Enterprise adds audit logs |
| Usage insights | Detailed usage and cost tracking | ✅ Transparent pricing |
| Model selection | 18+ AI providers and models | ✅ No vendor lock-in |
| GitHub Copilot | Kilo | Advantage |
|---|---|---|
| Code suggestions | AI-powered code generation | ✅ More model choices |
| Chat interface | Multi-mode chat system | ✅ Specialized modes |
| Team admin | Comprehensive team management | ✅ Enterprise adds audit logs |
| Usage insights | Detailed usage and cost tracking | ✅ Transparent pricing |
| Model selection | 18+ AI providers and models | ✅ No vendor lock-in |
## Migrating from Other AI Coding Tools
@@ -15,10 +15,10 @@ This means newly added models and providers are automatically available to your
## How It Works
| Scenario | Behavior |
| ---------------------- | ------------------------------------------------------------------------------------- |
| No blocks configured | All models and providers are available (default) |
| Provider blocked | All current and future models from that provider are unavailable |
| Scenario | Behavior |
|---|---|
| No blocks configured | All models and providers are available (default) |
| Provider blocked | All current and future models from that provider are unavailable |
| Specific model blocked | Only that model is unavailable; other models from the same provider remain accessible |
## Managing Model Access
@@ -53,13 +53,13 @@ A status bar appears at the bottom of the page whenever you have unsaved changes
Use filters to find the models or providers you want to block:
| Filter | Tab | Description |
| ------------------- | ------------------ | ----------------------------------------------------- |
| **Search** | Models & Providers | Filter by name, ID, or provider slug |
| **Enabled only** | Models & Providers | Show only currently allowed items |
| **Trains on data** | Providers | Filter by whether the provider trains on user prompts |
| **Retains prompts** | Providers | Filter by whether the provider retains user prompts |
| **Location** | Providers | Filter by provider headquarters or datacenter country |
| Filter | Tab | Description |
|---|---|---|
| **Search** | Models & Providers | Filter by name, ID, or provider slug |
| **Enabled only** | Models & Providers | Show only currently allowed items |
| **Trains on data** | Providers | Filter by whether the provider trains on user prompts |
| **Retains prompts** | Providers | Filter by whether the provider retains user prompts |
| **Location** | Providers | Filter by provider headquarters or datacenter country |
## Example Use Cases
@@ -18,15 +18,15 @@ For example, Admins and Owners can extend these by creating **Custom Modes** wit
3. Optionally select a **template** (e.g. _User Story Creator_, _Project Research_, _DevOps_).
4. Fill in the following fields:
| Field | Description |
| ---------------------------------- | ---------------------------------------------------------------------------------------------------- |
| **Mode Name** | Display name for the new mode (e.g. _Security Reviewer_). |
| **Mode Slug** | A short identifier used internally (e.g. `security-reviewer`). |
| **Role Definition** | Describe Kilo's role and personality for this mode. Shapes how it reasons and responds. |
| **Short Description** | A brief summary shown in the mode selector. |
| **When to Use (optional)** | Guidance for when this mode should be used. Helps the Orchestrator choose the right mode for a task. |
| **Custom Instructions (optional)** | Add behavioral guidelines specific to this mode. |
| **Available Tools** | Select which tools this mode can access (Read, Edit, Browser, Commands, MCP). |
| Field | Description |
|---|---|
| **Mode Name** | Display name for the new mode (e.g. _Security Reviewer_). |
| **Mode Slug** | A short identifier used internally (e.g. `security-reviewer`). |
| **Role Definition** | Describe Kilo's role and personality for this mode. Shapes how it reasons and responds. |
| **Short Description** | A brief summary shown in the mode selector. |
| **When to Use (optional)** | Guidance for when this mode should be used. Helps the Orchestrator choose the right mode for a task. |
| **Custom Instructions (optional)** | Add behavioral guidelines specific to this mode. |
| **Available Tools** | Select which tools this mode can access (Read, Edit, Browser, Commands, MCP). |
5. Click **Create Mode** to save.
@@ -73,11 +73,11 @@ Common dashboards which offer filtering based on provider, model, and tool:
Implement [multi-window, multi-burn-rate alerting](https://sre.google/workbook/alerting-on-slos/) against error budgets:
| Window | Burn Rate | Action | Use Case |
| ------ | --------- | ------ | ------------------ |
| 5 min | 14.4x | Page | Major Outage |
| 30 min | 6x | Page | Incident |
| 6 hr | 1x | Ticket | Change in behavior |
| Window | Burn Rate | Action | Use Case |
|---|---|---|---|
| 5 min | 14.4x | Page | Major Outage |
| 30 min | 6x | Page | Incident |
| 6 hr | 1x | Ticket | Change in behavior |
Paging should **only occur on Recommended Models when using the Kilo Gateway**. All other alerts should be tickets, and some may be configured to be ignored.
@@ -11,12 +11,12 @@ Kilo Auto is a model routing system that automatically selects the optimal AI mo
Three tiers are user-facing, and one is internal:
| Tier ID | Audience | Pricing |
| -------------------- | ------------------------------ | ------- |
| `kilo-auto/frontier` | Best paid models | Paid |
| `kilo-auto/balanced` | Strong performance, lower cost | Paid |
| `kilo-auto/free` | Best available free models | Free |
| `kilo-auto/small` | Internal — background tasks | Varies |
| Tier ID | Audience | Pricing |
|---|---|---|
| `kilo-auto/frontier` | Best paid models | Paid |
| `kilo-auto/balanced` | Strong performance, lower cost | Paid |
| `kilo-auto/free` | Best available free models | Free |
| `kilo-auto/small` | Internal — background tasks | Varies |
## Problem
@@ -84,11 +84,11 @@ For the current mode-to-model mappings, see the [Auto Model user docs](/docs/cod
The three user-facing tiers appear in the model selector:
| Display Name | Description shown to user |
| -------------- | ---------------------------------------------------- |
| Display Name | Description shown to user |
|---|---|
| Auto: Frontier | Best paid models, automatically matched to your task |
| Auto: Balanced | Strong performance at lower cost |
| Auto: Free | Best free models, no credits required |
| Auto: Balanced | Strong performance at lower cost |
| Auto: Free | Best free models, no credits required |
Auto: Small does not appear in the model picker. It is filtered out by the UI (see `KILO_AUTO_SMALL_IDS` in the VS Code extension).
@@ -140,16 +140,16 @@ The client-side chain works as follows:
### Key files
| File | Role |
| ----------------------------------------------- | ------------------------------------------------------------------------------------- |
| `packages/kilo-gateway/src/api/constants.ts` | Default model constants (`DEFAULT_MODEL`, `DEFAULT_FREE_MODEL`) |
| `packages/kilo-gateway/src/api/models.ts` | Fetches models from Kilo API, parses `opencode.variants` |
| `packages/opencode/src/provider/model-cache.ts` | Caches Kilo Gateway models with 5-min TTL |
| `packages/opencode/src/provider/provider.ts` | Preserves variants for kilo provider; `getSmallModel()` prioritizes `kilo-auto/small` |
| `packages/opencode/src/provider/transform.ts` | Passes through server-defined variants for Kilo Gateway models |
| `packages/opencode/src/session/prompt.ts` | Resolves variant from agent config, attaches to user messages |
| `packages/opencode/src/session/llm.ts` | Merges variant options into LLM call parameters |
| `packages/opencode/src/config/config.ts` | Agent config schema includes `variant` field |
| File | Role |
|---|---|
| `packages/kilo-gateway/src/api/constants.ts` | Default model constants (`DEFAULT_MODEL`, `DEFAULT_FREE_MODEL`) |
| `packages/kilo-gateway/src/api/models.ts` | Fetches models from Kilo API, parses `opencode.variants` |
| `packages/opencode/src/provider/model-cache.ts` | Caches Kilo Gateway models with 5-min TTL |
| `packages/opencode/src/provider/provider.ts` | Preserves variants for kilo provider; `getSmallModel()` prioritizes `kilo-auto/small` |
| `packages/opencode/src/provider/transform.ts` | Passes through server-defined variants for Kilo Gateway models |
| `packages/opencode/src/session/prompt.ts` | Resolves variant from agent config, attaches to user messages |
| `packages/opencode/src/session/llm.ts` | Merges variant options into LLM call parameters |
| `packages/opencode/src/config/config.ts` | Agent config schema includes `variant` field |
## Requirements
@@ -160,12 +160,12 @@ The client-side chain works as follows:
## Risks
| Risk | User impact | Mitigation |
| ------------------------------------------------- | ------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Free model disappears mid-session | User's next message fails | Fallback chain: primary → secondary → tertiary free model. Graceful error only if all options exhausted. |
| Model quality variance across free/balanced tiers | Inconsistent experience compared to Frontier | Set clear expectations in UI. Curate model lists, don't just pick the cheapest. |
| Cross-family model switching breaks context | Thinking blocks from Model A incompatible with Model B | Strip thinking blocks when the underlying model family changes between turns. Frontier stays within one family so this primarily affects Free tier (which may switch models). |
| Users don't understand the tier differences | Wrong tier selected, poor experience | Clear descriptions in the model picker. Good defaults (Balanced for paid, Free for unpaid) so most users never need to actively choose. |
| Risk | User impact | Mitigation |
|---|---|---|
| Free model disappears mid-session | User's next message fails | Fallback chain: primary → secondary → tertiary free model. Graceful error only if all options exhausted. |
| Model quality variance across free/balanced tiers | Inconsistent experience compared to Frontier | Set clear expectations in UI. Curate model lists, don't just pick the cheapest. |
| Cross-family model switching breaks context | Thinking blocks from Model A incompatible with Model B | Strip thinking blocks when the underlying model family changes between turns. Frontier stays within one family so this primarily affects Free tier (which may switch models). |
| Users don't understand the tier differences | Wrong tier selected, poor experience | Clear descriptions in the model picker. Good defaults (Balanced for paid, Free for unpaid) so most users never need to actively choose. |
## Data and compliance
@@ -131,16 +131,16 @@ opik harbor run -d terminal-bench@head -a kilo -m anthropic/claude-opus-4
Opik adds value beyond what the tbench.ai dashboard provides:
| Capability | tbench.ai Dashboard | Opik |
| ----------------------------- | ------------------- | ---- |
| Task-level pass/fail | Yes | Yes |
| Aggregate leaderboard | Yes | No |
| Asciinema replay | Yes | No |
| Step-level trace view | No | Yes |
| Step-level LLM judge | No | Yes |
| Cost attribution per step | No | Yes |
| Side-by-side trace comparison | No | Yes |
| Root cause analysis | No | Yes |
| Capability | tbench.ai Dashboard | Opik |
|---|---|---|
| Task-level pass/fail | Yes | Yes |
| Aggregate leaderboard | Yes | No |
| Asciinema replay | Yes | No |
| Step-level trace view | No | Yes |
| Step-level LLM judge | No | Yes |
| Cost attribution per step | No | Yes |
| Side-by-side trace comparison | No | Yes |
| Root cause analysis | No | Yes |
The two dashboards are complementary: tbench.ai for high-level leaderboard comparisons, Opik for drilling into why a specific run succeeded or failed.
@@ -148,12 +148,12 @@ The two dashboards are complementary: tbench.ai for high-level leaderboard compa
Harbor's registry provides access to established benchmark datasets. The choice of dataset can vary depending on what you are evaluating:
| Dataset | Focus | Use Case |
| ------------------ | -------------------------------- | -------------------------------------------------- |
| Terminal-Bench 2.0 | CLI/terminal tasks (89 tasks) | General agent capability on hard, realistic tasks |
| SWE-bench | Real GitHub issues in real repos | Software engineering task completion |
| LiveCodeBench | Competitive programming problems | Code generation quality |
| Custom task sets | Whatever you define | Targeted evaluation, marketing, regression testing |
| Dataset | Focus | Use Case |
|---|---|---|
| Terminal-Bench 2.0 | CLI/terminal tasks (89 tasks) | General agent capability on hard, realistic tasks |
| SWE-bench | Real GitHub issues in real repos | Software engineering task completion |
| LiveCodeBench | Competitive programming problems | Code generation quality |
| Custom task sets | Whatever you define | Targeted evaluation, marketing, regression testing |
#### Creating Custom Task Sets
@@ -277,10 +277,10 @@ opik harbor run -d kilo-refactoring@1.0 -a kilo -m anthropic/claude-opus-4
Harbor provides task-level judging (did the agent solve the task?). Opik adds step-level evaluation:
| Level | Tool | What It Tells You |
| -------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Task-level** | Harbor | Pass/fail, score, total time, total cost |
| **Step-level** | Opik | At step N, the agent chose tool X when it should have used tool Y. The reasoning was flawed because of Z. This step cost $0.03 and took 4 seconds. |
| Level | Tool | What It Tells You |
|---|---|---|
| **Task-level** | Harbor | Pass/fail, score, total time, total cost |
| **Step-level** | Opik | At step N, the agent chose tool X when it should have used tool Y. The reasoning was flawed because of Z. This step cost $0.03 and took 4 seconds. |
Step-level evaluation is where root cause debugging happens. When a benchmark score drops between versions, you can trace back to the exact decision point that caused the regression.
@@ -288,13 +288,13 @@ Step-level evaluation is where root cause debugging happens. When a benchmark sc
This benchmarking system is complementary to, but separate from, the [Agent Observability](/docs/contributing/architecture/agent-observability) system:
| Concern | Benchmarking | Production Observability |
| --------------- | ------------------------------------- | ------------------------------------- |
| **Purpose** | Offline evaluation of agent quality | Real-time monitoring of user sessions |
| **Data source** | Controlled benchmark tasks | Real user interactions |
| **Tools** | Harbor, Opik, tbench.ai | PostHog, custom metrics |
| **When** | Before release, on-demand | Continuously in production |
| **Output** | Leaderboard scores, trace comparisons | Alerts, dashboards, SLO tracking |
| Concern | Benchmarking | Production Observability |
|---|---|---|
| **Purpose** | Offline evaluation of agent quality | Real-time monitoring of user sessions |
| **Data source** | Controlled benchmark tasks | Real user interactions |
| **Tools** | Harbor, Opik, tbench.ai | PostHog, custom metrics |
| **When** | Before release, on-demand | Continuously in production |
| **Output** | Leaderboard scores, trace comparisons | Alerts, dashboards, SLO tracking |
## References
@@ -7,17 +7,17 @@ description: "Overview of current and planned features in Kilo Code"
These pages document the architecture and design of current or planned features, as well as any unique development patterns.
| Feature | Description |
| ---------------------------------------------------------------------------------------- | ---------------------------------------------------- |
| [Agent Observability](/docs/contributing/architecture/agent-observability) | Observability and monitoring for agentic systems |
| [Auto Model Tiers](/docs/contributing/architecture/auto-model-tiers) | Multi-tier auto model routing (Frontier, Free, Open) |
| [Benchmarking](/docs/contributing/architecture/benchmarking) | Benchmarking Kilo Code across models and agents |
| [Enterprise MCP Controls](/docs/contributing/architecture/enterprise-mcp-controls) | Admin controls for MCP server allowlists |
| [MCP OAuth Authorization](/docs/contributing/architecture/mcp-oauth-authorization) | OAuth 2.1-based authorization for MCP servers |
| [Onboarding Improvements](/docs/contributing/architecture/onboarding-improvements) | User onboarding and engagement features |
| [Organization Modes Library](/docs/contributing/architecture/organization-modes-library) | Shared modes for teams and enterprise |
| [Agentic Security Reviews](/docs/deploy-secure/security-reviews) | AI-powered security vulnerability analysis |
| [Track Repo URL](/docs/contributing/architecture/track-repo-url) | Usage tracking by repository/project |
| [Voice Transcription](/docs/contributing/architecture/voice-transcription) | Live voice input for chat |
| Feature | Description |
|---|---|
| [Agent Observability](/docs/contributing/architecture/agent-observability) | Observability and monitoring for agentic systems |
| [Auto Model Tiers](/docs/contributing/architecture/auto-model-tiers) | Multi-tier auto model routing (Frontier, Free, Open) |
| [Benchmarking](/docs/contributing/architecture/benchmarking) | Benchmarking Kilo Code across models and agents |
| [Enterprise MCP Controls](/docs/contributing/architecture/enterprise-mcp-controls) | Admin controls for MCP server allowlists |
| [MCP OAuth Authorization](/docs/contributing/architecture/mcp-oauth-authorization) | OAuth 2.1-based authorization for MCP servers |
| [Onboarding Improvements](/docs/contributing/architecture/onboarding-improvements) | User onboarding and engagement features |
| [Organization Modes Library](/docs/contributing/architecture/organization-modes-library) | Shared modes for teams and enterprise |
| [Agentic Security Reviews](/docs/deploy-secure/security-reviews) | AI-powered security vulnerability analysis |
| [Track Repo URL](/docs/contributing/architecture/track-repo-url) | Usage tracking by repository/project |
| [Voice Transcription](/docs/contributing/architecture/voice-transcription) | Live voice input for chat |
To propose a new feature design, consider using the [Spec Template](/docs/contributing/architecture/feature-template).
@@ -62,16 +62,16 @@ The CLI can run in several modes:
Key subsystems inside the CLI:
| Subsystem | Purpose |
| --------------- | ------------------------------------------------------------------------ |
| Agent Runtime | Orchestrates AI conversations, tool calls, and multi-step task execution |
| Tools Service | Built-in tools for file editing, shell execution, search, and more |
| MCP Servers | Model Context Protocol support for extending with external tools |
| LSP Client | Language Server Protocol integration for code intelligence |
| Session Manager | Persistent session state, conversation history, and checkpoints |
| Provider Router | Connects to 500+ AI models via direct APIs or Kilo Gateway |
| HTTP Server | REST API + SSE streaming for client communication |
| Config System | Project and global configuration, modes, and permissions |
| Subsystem | Purpose |
|---|---|
| Agent Runtime | Orchestrates AI conversations, tool calls, and multi-step task execution |
| Tools Service | Built-in tools for file editing, shell execution, search, and more |
| MCP Servers | Model Context Protocol support for extending with external tools |
| LSP Client | Language Server Protocol integration for code intelligence |
| Session Manager | Persistent session state, conversation history, and checkpoints |
| Provider Router | Connects to 500+ AI models via direct APIs or Kilo Gateway |
| HTTP Server | REST API + SSE streaming for client communication |
| Config System | Project and global configuration, modes, and permissions |
## Client Layer
@@ -144,23 +144,23 @@ Key concepts:
Agents operate in a hierarchy:
| Agent | Role |
| -------- | ------------------------------------------------------------------------------------------- |
| Mayor | Persistent conversational coordinator — decomposes tasks and delegates to worker agents |
| Polecat | Worker agent — clones repo worktrees, writes code, commits, pushes, and creates PRs |
| Agent | Role |
|---|---|
| Mayor | Persistent conversational coordinator — decomposes tasks and delegates to worker agents |
| Polecat | Worker agent — clones repo worktrees, writes code, commits, pushes, and creates PRs |
| Refinery | Code review agent — reviews polecat branches, runs quality gates, merges or requests rework |
| Triage | Ephemeral agent that resolves ambiguous situations detected by automated patrol checks |
| Triage | Ephemeral agent that resolves ambiguous situations detected by automated patrol checks |
A reconciler loop running every 5 seconds drives all state transitions: dispatching agents, transitioning beads, polling PR status, managing convoys, and recovering from failures.
### Supporting Services
| Service | Purpose |
| -------------------- | ------------------------------------------------------------------------------------ |
| Service | Purpose |
|---|---|
| Webhook Agent Ingest | Named webhook endpoints that capture HTTP requests and queue delivery to Cloud Agent |
| AI Attribution | Tracks line-level AI-generated code attribution when users accept or reject edits |
| Session Ingest | Ingests and stores CLI session data for analytics |
| Observability | Telemetry pipelines for monitoring cloud services |
| AI Attribution | Tracks line-level AI-generated code attribution when users accept or reject edits |
| Session Ingest | Ingests and stores CLI session data for analytics |
| Observability | Telemetry pipelines for monitoring cloud services |
## Key Concepts
@@ -255,10 +255,10 @@ The project uses:
## Repositories
| Repository | Contents |
| --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| [Kilo-Org/kilocode](https://github.com/Kilo-Org/kilocode) | CLI engine, VS Code extension, SDK, gateway client, telemetry, docs, UI components |
| Cloud (private) | Web dashboard, Cloud Agent, Kilo Bot, KiloClaw, Gas Town, code review, auto triage, billing, and supporting Cloudflare Workers |
| Repository | Contents |
|---|---|
| [Kilo-Org/kilocode](https://github.com/Kilo-Org/kilocode) | CLI engine, VS Code extension, SDK, gateway client, telemetry, docs, UI components |
| Cloud (private) | Web dashboard, Cloud Agent, Kilo Bot, KiloClaw, Gas Town, code review, auto triage, billing, and supporting Cloudflare Workers |
## Further Reading
+21 -21
View File
@@ -143,39 +143,39 @@ When you start a task in Kilo Code:
In the new platform, AGENTS.md is loaded alongside other instruction sources. The CLI also supports `.claude/` and `.agents/` directories for compatibility with other tools.
| Source | Scope | Location | Priority |
| ------------------------------------------------ | --------- | ------------------------------------------ | ---------------- |
| **Agent prompt** | Per-agent | `agent.<name>.prompt` in config | 1 (Highest) |
| **[Instructions](/docs/customize/custom-rules)** | Project | `instructions` key in project `kilo.jsonc` | 2 |
| **AGENTS.md** | Project | `AGENTS.md` at project root | 3 |
| **[Instructions](/docs/customize/custom-rules)** | Global | `instructions` key in global `kilo.jsonc` | 4 |
| **[Skills](/docs/customize/skills)** | Both | `.kilo/skills/`, config `skills` key | Loaded on demand |
| Source | Scope | Location | Priority |
|---|---|---|---|
| **Agent prompt** | Per-agent | `agent.<name>.prompt` in config | 1 (Highest) |
| **[Instructions](/docs/customize/custom-rules)** | Project | `instructions` key in project `kilo.jsonc` | 2 |
| **AGENTS.md** | Project | `AGENTS.md` at project root | 3 |
| **[Instructions](/docs/customize/custom-rules)** | Global | `instructions` key in global `kilo.jsonc` | 4 |
| **[Skills](/docs/customize/skills)** | Both | `.kilo/skills/`, config `skills` key | Loaded on demand |
{% /tab %}
{% tab label="CLI" %}
In the new platform, AGENTS.md is loaded alongside other instruction sources. The CLI also supports `.claude/` and `.agents/` directories for compatibility with other tools.
| Source | Scope | Location | Priority |
| ------------------------------------------------ | --------- | ------------------------------------------ | ---------------- |
| **Agent prompt** | Per-agent | `agent.<name>.prompt` in config | 1 (Highest) |
| **[Instructions](/docs/customize/custom-rules)** | Project | `instructions` key in project `kilo.jsonc` | 2 |
| **AGENTS.md** | Project | `AGENTS.md` at project root | 3 |
| **[Instructions](/docs/customize/custom-rules)** | Global | `instructions` key in global `kilo.jsonc` | 4 |
| **[Skills](/docs/customize/skills)** | Both | `.kilo/skills/`, config `skills` key | Loaded on demand |
| Source | Scope | Location | Priority |
|---|---|---|---|
| **Agent prompt** | Per-agent | `agent.<name>.prompt` in config | 1 (Highest) |
| **[Instructions](/docs/customize/custom-rules)** | Project | `instructions` key in project `kilo.jsonc` | 2 |
| **AGENTS.md** | Project | `AGENTS.md` at project root | 3 |
| **[Instructions](/docs/customize/custom-rules)** | Global | `instructions` key in global `kilo.jsonc` | 4 |
| **[Skills](/docs/customize/skills)** | Both | `.kilo/skills/`, config `skills` key | Loaded on demand |
{% /tab %}
{% tab label="VSCode (Legacy)" %}
AGENTS.md works alongside Kilo Code's other configuration systems:
| Feature | Scope | Location | Purpose | Priority |
| -------------------------------------------------------------- | ------- | ------------------------- | ----------------------------------------- | ----------- |
| **[Mode-specific Custom Rules](/docs/customize/custom-rules)** | Project | `.kilocode/rules-{mode}/` | Mode-specific rules and constraints | 1 (Highest) |
| **[Custom Rules](/docs/customize/custom-rules)** | Project | `.kilocode/rules/` | Kilo Code-specific rules and constraints | 2 |
| **[AGENTS.md](/docs/customize/agents-md)** | Project | `AGENTS.md` | Universal standard for any AI coding tool | 3 |
| **[Global Custom Rules](/docs/customize/custom-rules)** | Global | `~/.kilocode/rules/` | Global Kilo Code rules | 4 |
| **[Custom Instructions](/docs/customize/custom-instructions)** | Global | IDE settings | Personal preferences across all projects | 5 (Lowest) |
| Feature | Scope | Location | Purpose | Priority |
|---|---|---|---|---|
| **[Mode-specific Custom Rules](/docs/customize/custom-rules)** | Project | `.kilocode/rules-{mode}/` | Mode-specific rules and constraints | 1 (Highest) |
| **[Custom Rules](/docs/customize/custom-rules)** | Project | `.kilocode/rules/` | Kilo Code-specific rules and constraints | 2 |
| **[AGENTS.md](/docs/customize/agents-md)** | Project | `AGENTS.md` | Universal standard for any AI coding tool | 3 |
| **[Global Custom Rules](/docs/customize/custom-rules)** | Global | `~/.kilocode/rules/` | Global Kilo Code rules | 4 |
| **[Custom Instructions](/docs/customize/custom-instructions)** | Global | IDE settings | Personal preferences across all projects | 5 (Lowest) |
{% /tab %}
{% /tabs %}
@@ -56,10 +56,10 @@ You can trigger compaction at any time:
## Defaults
| Setting | Default | Effect |
| --------------------- | -------------------------------------- | -------------------------------------------------------------------------------------- |
| `compaction.auto` | `true` | Automatically compact when the usable window is reached |
| `compaction.prune` | `true` | Clear old tool outputs beyond the 40K recency window |
| Setting | Default | Effect |
|---|---|---|
| `compaction.auto` | `true` | Automatically compact when the usable window is reached |
| `compaction.prune` | `true` | Clear old tool outputs beyond the 40K recency window |
| `compaction.reserved` | `min(20,000, model_max_output_tokens)` | Token headroom kept free for the next turn — also defines the compaction trigger point |
## Configuration
@@ -76,11 +76,11 @@ Compaction is configured in your `kilo.jsonc` file:
}
```
| Option | Type | Default | Description |
| --------------------- | ------- | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `compaction.auto` | boolean | `true` | Enable or disable automatic compaction when the usable window is reached |
| `compaction.prune` | boolean | `true` | Enable pruning of old tool outputs outside the 40K token recency window |
| `compaction.reserved` | number | `min(20000, model_max_output)` | Token headroom reserved for the next turn. Applies only to models that advertise a separate input limit; models with a single context window use their full output cap as the reserve instead. |
| Option | Type | Default | Description |
|---|---|---|---|
| `compaction.auto` | boolean | `true` | Enable or disable automatic compaction when the usable window is reached |
| `compaction.prune` | boolean | `true` | Enable pruning of old tool outputs outside the 40K token recency window |
| `compaction.reserved` | number | `min(20000, model_max_output)` | Token headroom reserved for the next turn. Applies only to models that advertise a separate input limit; models with a single context window use their full output cap as the reserve instead. |
### Use a different model for compaction
@@ -100,10 +100,10 @@ If no compaction agent is set, the current session's model is used.
### Environment overrides
| Variable | Effect |
| ------------------------------------ | ------------------------------------------------- |
| `KILO_DISABLE_AUTOCOMPACT=1` | Forces `compaction.auto = false` |
| `KILO_DISABLE_PRUNE=1` | Forces `compaction.prune = false` |
| Variable | Effect |
|---|---|
| `KILO_DISABLE_AUTOCOMPACT=1` | Forces `compaction.auto = false` |
| `KILO_DISABLE_PRUNE=1` | Forces `compaction.prune = false` |
| `KILO_EXPERIMENTAL_OUTPUT_TOKEN_MAX` | Overrides the 32,000 default output-token ceiling |
{% /tab %}
@@ -144,10 +144,10 @@ You can trigger compaction at any time:
## Defaults
| Setting | Default | Effect |
| --------------------- | -------------------------------------- | -------------------------------------------------------------------------------------- |
| `compaction.auto` | `true` | Automatically compact when the usable window is reached |
| `compaction.prune` | `true` | Clear old tool outputs beyond the 40K recency window |
| Setting | Default | Effect |
|---|---|---|
| `compaction.auto` | `true` | Automatically compact when the usable window is reached |
| `compaction.prune` | `true` | Clear old tool outputs beyond the 40K recency window |
| `compaction.reserved` | `min(20,000, model_max_output_tokens)` | Token headroom kept free for the next turn — also defines the compaction trigger point |
## Configuration
@@ -164,11 +164,11 @@ Compaction is configured in your `kilo.jsonc` file:
}
```
| Option | Type | Default | Description |
| --------------------- | ------- | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `compaction.auto` | boolean | `true` | Enable or disable automatic compaction when the usable window is reached |
| `compaction.prune` | boolean | `true` | Enable pruning of old tool outputs outside the 40K token recency window |
| `compaction.reserved` | number | `min(20000, model_max_output)` | Token headroom reserved for the next turn. Applies only to models that advertise a separate input limit; models with a single context window use their full output cap as the reserve instead. |
| Option | Type | Default | Description |
|---|---|---|---|
| `compaction.auto` | boolean | `true` | Enable or disable automatic compaction when the usable window is reached |
| `compaction.prune` | boolean | `true` | Enable pruning of old tool outputs outside the 40K token recency window |
| `compaction.reserved` | number | `min(20000, model_max_output)` | Token headroom reserved for the next turn. Applies only to models that advertise a separate input limit; models with a single context window use their full output cap as the reserve instead. |
### Use a different model for compaction
@@ -188,10 +188,10 @@ If no compaction agent is set, the current session's model is used.
### Environment overrides
| Variable | Effect |
| ------------------------------------ | ------------------------------------------------- |
| `KILO_DISABLE_AUTOCOMPACT=1` | Forces `compaction.auto = false` |
| `KILO_DISABLE_PRUNE=1` | Forces `compaction.prune = false` |
| Variable | Effect |
|---|---|
| `KILO_DISABLE_AUTOCOMPACT=1` | Forces `compaction.auto = false` |
| `KILO_DISABLE_PRUNE=1` | Forces `compaction.prune = false` |
| `KILO_EXPERIMENTAL_OUTPUT_TOKEN_MAX` | Overrides the 32,000 default output-token ceiling |
{% /tab %}
@@ -25,20 +25,20 @@ In the VSCode extension and CLI, custom behavioral profiles are called **agents*
## What's Included in a Custom Agent?
| Property | Description |
| --------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| **name** (filename) | The agent's identifier, derived from the `.md` filename (e.g., `docs-writer.md` creates an agent named `docs-writer`) |
| **description** | A short summary displayed in the agent picker and used by the orchestrator for delegation |
| **model** | Pin a specific model in `provider/model` format (e.g., `anthropic/claude-sonnet-4-20250514`) |
| **prompt** (markdown body) | The system prompt text — the markdown body of the file, injected into the agent's system prompt |
| **mode** | Role classification: `primary` (user-selectable), `subagent` (only invoked by other agents), or `all` (both) |
| **permission** | Per-agent permission overrides controlling which tools the agent can use (e.g., deny `edit`, `bash`) |
| **color** | Hex color (`#FF5733`) or theme keyword (`primary`, `accent`, `warning`, etc.) for the agent picker UI |
| **steps** | Maximum agentic iterations before forcing a text-only response |
| **temperature** / **top_p** | Sampling parameters for the agent's model |
| **variant** | Default model variant |
| **hidden** | If `true`, the agent is hidden from the UI (only meaningful for subagents) |
| **disable** | If `true`, removes the agent entirely |
| Property | Description |
|---|---|
| **name** (filename) | The agent's identifier, derived from the `.md` filename (e.g., `docs-writer.md` creates an agent named `docs-writer`) |
| **description** | A short summary displayed in the agent picker and used by the orchestrator for delegation |
| **model** | Pin a specific model in `provider/model` format (e.g., `anthropic/claude-sonnet-4-20250514`) |
| **prompt** (markdown body) | The system prompt text — the markdown body of the file, injected into the agent's system prompt |
| **mode** | Role classification: `primary` (user-selectable), `subagent` (only invoked by other agents), or `all` (both) |
| **permission** | Per-agent permission overrides controlling which tools the agent can use (e.g., deny `edit`, `bash`) |
| **color** | Hex color (`#FF5733`) or theme keyword (`primary`, `accent`, `warning`, etc.) for the agent picker UI |
| **steps** | Maximum agentic iterations before forcing a text-only response |
| **temperature** / **top_p** | Sampling parameters for the agent's model |
| **variant** | Default model variant |
| **hidden** | If `true`, the agent is hidden from the UI (only meaningful for subagents) |
| **disable** | If `true`, removes the agent entirely |
## Methods for Creating and Configuring Agents
@@ -132,11 +132,11 @@ Define agents under the `agent` key in your project's `kilo.jsonc`:
Controls where the agent appears:
| Value | Behavior |
| ---------- | -------------------------------------------------------------------------------------- |
| `primary` | Shown in the agent picker — the user can select it directly |
| `subagent` | Only invokable by other agents via the `task` tool |
| `all` | Available both as a top-level pick and as a subagent (default for user-defined agents) |
| Value | Behavior |
|---|---|
| `primary` | Shown in the agent picker — the user can select it directly |
| `subagent` | Only invokable by other agents via the `task` tool |
| `all` | Available both as a top-level pick and as a subagent (default for user-defined agents) |
### `permission`
@@ -236,11 +236,11 @@ Default legacy mode slugs (`code`, `build`, `architect`, `ask`, `debug`, `orches
The current VSCode extension reads the legacy `custom_modes.yaml` file from its own global storage directory. Helpful for inspecting or fixing the file before the one-time migration runs:
| OS | Path |
| ------- | ----------------------------------------------------------------------------------------------------- |
| macOS | `~/Library/Application Support/Code/User/globalStorage/kilocode.kilo-code/settings/custom_modes.yaml` |
| Linux | `~/.config/Code/User/globalStorage/kilocode.kilo-code/settings/custom_modes.yaml` |
| Windows | `%APPDATA%\Code\User\globalStorage\kilocode.kilo-code\settings\custom_modes.yaml` |
| OS | Path |
|---|---|
| macOS | `~/Library/Application Support/Code/User/globalStorage/kilocode.kilo-code/settings/custom_modes.yaml` |
| Linux | `~/.config/Code/User/globalStorage/kilocode.kilo-code/settings/custom_modes.yaml` |
| Windows | `%APPDATA%\Code\User\globalStorage\kilocode.kilo-code\settings\custom_modes.yaml` |
Project-level `.kilocodemodes` and workspace-scoped files are handled by the CLI backend that the extension delegates to — see the [CLI tab](#cli) for the full load-order table. After the extension migrates on startup, the legacy file is no longer consulted; remove new modes through the extension UI instead of editing `custom_modes.yaml` directly.
@@ -255,20 +255,20 @@ In the CLI, custom behavioral profiles are called **agents** instead of modes. A
## What's Included in a Custom Agent?
| Property | Description |
| --------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| **name** (filename) | The agent's identifier, derived from the `.md` filename (e.g., `docs-writer.md` creates an agent named `docs-writer`) |
| **description** | A short summary displayed in the agent picker and used by the orchestrator for delegation |
| **model** | Pin a specific model in `provider/model` format (e.g., `anthropic/claude-sonnet-4-20250514`) |
| **prompt** (markdown body) | The system prompt text — the markdown body of the file, injected into the agent's system prompt |
| **mode** | Role classification: `primary` (user-selectable), `subagent` (only invoked by other agents), or `all` (both) |
| **permission** | Per-agent permission overrides controlling which tools the agent can use (e.g., deny `edit`, `bash`) |
| **color** | Hex color (`#FF5733`) or theme keyword (`primary`, `accent`, `warning`, etc.) for the agent picker UI |
| **steps** | Maximum agentic iterations before forcing a text-only response |
| **temperature** / **top_p** | Sampling parameters for the agent's model |
| **variant** | Default model variant |
| **hidden** | If `true`, the agent is hidden from the UI (only meaningful for subagents) |
| **disable** | If `true`, removes the agent entirely |
| Property | Description |
|---|---|
| **name** (filename) | The agent's identifier, derived from the `.md` filename (e.g., `docs-writer.md` creates an agent named `docs-writer`) |
| **description** | A short summary displayed in the agent picker and used by the orchestrator for delegation |
| **model** | Pin a specific model in `provider/model` format (e.g., `anthropic/claude-sonnet-4-20250514`) |
| **prompt** (markdown body) | The system prompt text — the markdown body of the file, injected into the agent's system prompt |
| **mode** | Role classification: `primary` (user-selectable), `subagent` (only invoked by other agents), or `all` (both) |
| **permission** | Per-agent permission overrides controlling which tools the agent can use (e.g., deny `edit`, `bash`) |
| **color** | Hex color (`#FF5733`) or theme keyword (`primary`, `accent`, `warning`, etc.) for the agent picker UI |
| **steps** | Maximum agentic iterations before forcing a text-only response |
| **temperature** / **top_p** | Sampling parameters for the agent's model |
| **variant** | Default model variant |
| **hidden** | If `true`, the agent is hidden from the UI (only meaningful for subagents) |
| **disable** | If `true`, removes the agent entirely |
## Methods for Creating and Configuring Agents
@@ -368,11 +368,11 @@ Define agents under the `agent` key in your project's `kilo.jsonc`:
Controls where the agent appears:
| Value | Behavior |
| ---------- | -------------------------------------------------------------------------------------- |
| `primary` | Shown in the agent picker — the user can select it directly |
| `subagent` | Only invokable by other agents via the `task` tool |
| `all` | Available both as a top-level pick and as a subagent (default for user-defined agents) |
| Value | Behavior |
|---|---|
| `primary` | Shown in the agent picker — the user can select it directly |
| `subagent` | Only invokable by other agents via the `task` tool |
| `all` | Available both as a top-level pick and as a subagent (default for user-defined agents) |
### `permission`
@@ -473,7 +473,7 @@ Default legacy mode slugs (`code`, `build`, `architect`, `ask`, `debug`, `orches
The CLI reads legacy mode files from the following locations (in load order). When the same slug appears in multiple sources, the **last loaded source wins**:
| Load Order | Path | Format | Scope |
|------------|------|--------|-------|
|---|---|---|---|
| 1 | VSCode extension global storage `/settings/custom_modes.yaml` | YAML | Global |
| 2 | `~/.kilocode/cli/global/settings/custom_modes.yaml` | YAML | Global |
| 3 | `~/.kilocodemodes` | YAML | Global |
@@ -502,15 +502,15 @@ _Kilo Code's interface for creating and managing custom modes._
Custom modes are defined by several key properties. Understanding these concepts will help you tailor Kilo's behavior effectively.
| UI Field / YAML Property | Conceptual Description |
| ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Slug** (`slug`) | A unique internal identifier for the mode. Used by Kilo Code to reference the mode, especially for associating mode-specific instruction files. |
| **Name** (`name`) | The display name for the mode as it appears in the Kilo Code user interface. Should be human-readable and descriptive. |
| **Description** (`description`) | A short, user-friendly summary of the mode's purpose displayed in the mode selector UI. Keep this concise and focused on what the mode does for the user. |
| **Role Definition** (`roleDefinition`) | Defines the core identity and expertise of the mode. This text is placed at the beginning of the system prompt and defines Kilo's personality and behavior when this mode is active. |
| **Available Tools** (`groups`) | Defines the allowed toolsets and file access permissions for the mode. Corresponds to selecting which general categories of tools the mode can use. |
| **When to Use** (`whenToUse`) | _(Optional)_ Provides guidance for Kilo's automated decision-making, particularly for mode selection and task orchestration. Used by the Orchestrator mode for task coordination. |
| **Custom Instructions** (`customInstructions`) | _(Optional)_ Specific behavioral guidelines or rules for the mode. Added near the end of the system prompt to further refine Kilo's behavior. |
| UI Field / YAML Property | Conceptual Description |
|---|---|
| **Slug** (`slug`) | A unique internal identifier for the mode. Used by Kilo Code to reference the mode, especially for associating mode-specific instruction files. |
| **Name** (`name`) | The display name for the mode as it appears in the Kilo Code user interface. Should be human-readable and descriptive. |
| **Description** (`description`) | A short, user-friendly summary of the mode's purpose displayed in the mode selector UI. Keep this concise and focused on what the mode does for the user. |
| **Role Definition** (`roleDefinition`) | Defines the core identity and expertise of the mode. This text is placed at the beginning of the system prompt and defines Kilo's personality and behavior when this mode is active. |
| **Available Tools** (`groups`) | Defines the allowed toolsets and file access permissions for the mode. Corresponds to selecting which general categories of tools the mode can use. |
| **When to Use** (`whenToUse`) | _(Optional)_ Provides guidance for Kilo's automated decision-making, particularly for mode selection and task orchestration. Used by the Orchestrator mode for task coordination. |
| **Custom Instructions** (`customInstructions`) | _(Optional)_ Specific behavioral guidelines or rules for the mode. Added near the end of the system prompt to further refine Kilo's behavior. |
{% callout type="tip" %}
**Power Steering for Better Mode Adherence**
@@ -584,14 +584,14 @@ Focus on clarity, completeness, and consistent formatting.
**YAML frontmatter fields:**
| Field | Description |
| ------------- | ----------------------------------------------------------------------------- |
| `model` | Override the default model for this agent |
| `description` | Short description shown in the agent selector |
| `mode` | `"primary"` (user-selectable), `"subagent"` (invoked by AI only), or `"all"` |
| `permission` | Tool permission overrides (same format as the global `permission` config key) |
| `temperature` | Model temperature override |
| `top_p` | Model top_p override |
| Field | Description |
|---|---|
| `model` | Override the default model for this agent |
| `description` | Short description shown in the agent selector |
| `mode` | `"primary"` (user-selectable), `"subagent"` (invoked by AI only), or `"all"` |
| `permission` | Tool permission overrides (same format as the global `permission` config key) |
| `temperature` | Model temperature override |
| `top_p` | Model top_p override |
The filename (without `.md`) becomes the agent's slug and display name.
@@ -974,13 +974,13 @@ Kilo will generate the pattern. Remember to adapt it for YAML (usually single ba
### Common Pattern Examples
| Pattern (YAML-like) | JSON fileRegex Value | Matches | Doesn't Match |
| -------------------------------- | ----------------------------------- | ----------------------------------------- | ---------------------------------- |
| `\.md$` | `"\\.md$"` | `readme.md`, `docs/guide.md` | `script.js`, `readme.md.bak` |
| `^src/.*` | `"^src/.*"` | `src/app.js`, `src/components/button.tsx` | `lib/utils.js`, `test/src/mock.js` |
| `\.(css\|scss)$` | `"\\.(css\|scss)$"` | `styles.css`, `theme.scss` | `styles.less`, `styles.css.map` |
| `docs/.*\.md$` | `"docs/.*\\.md$"` | `docs/guide.md`, `docs/api/reference.md` | `guide.md`, `src/docs/notes.md` |
| `^(?!.*(test\|spec))\.(js\|ts)$` | `"^(?!.*(test\|spec))\\.(js\|ts)$"` | `app.js`, `utils.ts` | `app.test.js`, `utils.spec.js` |
| Pattern (YAML-like) | JSON fileRegex Value | Matches | Doesn't Match |
|---|---|---|---|
| `\.md$` | `"\\.md$"` | `readme.md`, `docs/guide.md` | `script.js`, `readme.md.bak` |
| `^src/.*` | `"^src/.*"` | `src/app.js`, `src/components/button.tsx` | `lib/utils.js`, `test/src/mock.js` |
| `\.(css\|scss)$` | `"\\.(css\|scss)$"` | `styles.css`, `theme.scss` | `styles.less`, `styles.css.map` |
| `docs/.*\.md$` | `"docs/.*\\.md$"` | `docs/guide.md`, `docs/api/reference.md` | `guide.md`, `src/docs/notes.md` |
| `^(?!.*(test\|spec))\.(js\|ts)$` | `"^(?!.*(test\|spec))\\.(js\|ts)$"` | `app.js`, `utils.ts` | `app.test.js`, `utils.spec.js` |
### Key Regex Building Blocks
@@ -27,20 +27,20 @@ Key characteristics of subagents:
Kilo Code includes two built-in subagents:
| Name | Description |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **general** | General-purpose agent for researching complex questions and executing multi-step tasks. Has full tool access (except todo). |
| Name | Description |
|---|---|
| **general** | General-purpose agent for researching complex questions and executing multi-step tasks. Has full tool access (except todo). |
| **explore** | Fast, read-only agent for codebase exploration. Cannot modify files. Use for finding files by patterns, searching code, or answering questions about the codebase. |
## Agent Modes
Every agent has a **mode** that determines how it can be used:
| Mode | Description |
| ---------- | ------------------------------------------------------------------------------------------- |
| `primary` | User-facing agents you interact with directly. Switch between them with **Tab**. |
| `subagent` | Only invocable via the Task tool or `@` mentions. Not available as a primary agent. |
| `all` | Can function as both a primary agent and a subagent. This is the default for custom agents. |
| Mode | Description |
|---|---|
| `primary` | User-facing agents you interact with directly. Switch between them with **Tab**. |
| `subagent` | Only invocable via the Task tool or `@` mentions. Not available as a primary agent. |
| `all` | Can function as both a primary agent and a subagent. This is the default for custom agents. |
## Configuring Custom Subagents
@@ -149,19 +149,19 @@ kilo agent create \
The following options are available when configuring a subagent:
| Option | Type | Description |
| ------------- | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| `description` | `string` | What the agent does and when to use it. Shown to primary agents to help them decide which subagent to invoke. |
| `mode` | `"subagent" \| "primary" \| "all"` | How the agent can be used. Defaults to `all` for custom agents. |
| `model` | `string` | Override the model for this agent (format: `provider/model-id`). If not set, subagents inherit the model of the invoking primary agent. |
| `prompt` | `string` | Custom system prompt. In JSON, can use `{file:./path}` syntax. In markdown, the body is the prompt. |
| `temperature` | `number` | Controls response randomness (0.0-1.0). Lower = more deterministic. |
| `top_p` | `number` | Alternative to temperature for controlling response diversity (0.0-1.0). |
| `permission` | `object` | Controls tool access. See [Permissions](#permissions) below. |
| `hidden` | `boolean` | If `true`, hides the subagent from the `@` autocomplete menu. It can still be invoked by agents via the Task tool. Only applies to `mode: subagent`. |
| `steps` | `number` | Maximum agentic iterations before forcing a text-only response. Useful for cost control. |
| `color` | `string` | Visual color in the UI. Accepts hex (`#FF5733`) or theme names (`primary`, `accent`, `error`, etc.). |
| `disable` | `boolean` | Set to `true` to disable the agent entirely. |
| Option | Type | Description |
|---|---|---|
| `description` | `string` | What the agent does and when to use it. Shown to primary agents to help them decide which subagent to invoke. |
| `mode` | `"subagent" \| "primary" \| "all"` | How the agent can be used. Defaults to `all` for custom agents. |
| `model` | `string` | Override the model for this agent (format: `provider/model-id`). If not set, subagents inherit the model of the invoking primary agent. |
| `prompt` | `string` | Custom system prompt. In JSON, can use `{file:./path}` syntax. In markdown, the body is the prompt. |
| `temperature` | `number` | Controls response randomness (0.0-1.0). Lower = more deterministic. |
| `top_p` | `number` | Alternative to temperature for controlling response diversity (0.0-1.0). |
| `permission` | `object` | Controls tool access. See [Permissions](#permissions) below. |
| `hidden` | `boolean` | If `true`, hides the subagent from the `@` autocomplete menu. It can still be invoked by agents via the Task tool. Only applies to `mode: subagent`. |
| `steps` | `number` | Maximum agentic iterations before forcing a text-only response. Useful for cost control. |
| `color` | `string` | Visual color in the UI. Accepts hex (`#FF5733`) or theme names (`primary`, `accent`, `error`, etc.). |
| `disable` | `boolean` | Set to `true` to disable the agent entirely. |
Any additional options not listed above are passed through to the model provider, allowing you to use provider-specific parameters like `reasoningEffort` for OpenAI models.
+12 -12
View File
@@ -326,13 +326,13 @@ You can include examples, guidelines, code snippets, etc.
Per the [Agent Skills specification](https://agentskills.io/specification):
| Field | Required | Description |
| --------------- | -------- | ----------------------------------------------------------------------------------------------------- |
| `name` | Yes | Max 64 characters. Lowercase letters, numbers, and hyphens only. Must not start or end with a hyphen. |
| `description` | Yes | Max 1024 characters. Describes what the skill does and when to use it. |
| `license` | No | License name or reference to a bundled license file |
| `compatibility` | No | Environment requirements (intended product, system packages, network access, etc.) |
| `metadata` | No | Arbitrary key-value mapping for additional metadata |
| Field | Required | Description |
|---|---|---|
| `name` | Yes | Max 64 characters. Lowercase letters, numbers, and hyphens only. Must not start or end with a hyphen. |
| `description` | Yes | Max 1024 characters. Describes what the skill does and when to use it. |
| `license` | No | License name or reference to a bundled license file |
| `compatibility` | No | Environment requirements (intended product, system packages, network access, etc.) |
| `metadata` | No | Arbitrary key-value mapping for additional metadata |
### Example with Optional Fields
@@ -573,11 +573,11 @@ There's currently no dedicated UI indicator showing "Skill X was activated." The
### Common Errors
| Error | Cause | Solution |
| ------------------------------- | -------------------------------------------- | ------------------------------------------------ |
| "missing required 'name' field" | No `name` in frontmatter | Add `name: your-skill-name` |
| "name doesn't match directory" | Mismatch between frontmatter and folder name | Make `name` match exactly |
| Skill not appearing | Wrong directory structure | Verify path follows `skills/skill-name/SKILL.md` |
| Error | Cause | Solution |
|---|---|---|
| "missing required 'name' field" | No `name` in frontmatter | Add `name: your-skill-name` |
| "name doesn't match directory" | Mismatch between frontmatter and folder name | Make `name` match exactly |
| Skill not appearing | Wrong directory structure | Verify path follows `skills/skill-name/SKILL.md` |
## Contributing to the Marketplace
@@ -41,12 +41,12 @@ agent: code
You are helping submit a pull request...
```
| Field | Description |
| ------------- | --------------------------------------------- |
| `description` | Shown in the command picker |
| `agent` | Which agent to use when invoking this command |
| `model` | Model override for this command |
| `subtask` | When `true`, runs as a sub-agent session |
| Field | Description |
|---|---|
| `description` | Shown in the command picker |
| `agent` | Which agent to use when invoking this command |
| `model` | Model override for this command |
| `subtask` | When `true`, runs as a sub-agent session |
### Workflow Capabilities
@@ -56,11 +56,11 @@ Codebase Indexing is rolling out across our users. It will automatically engage
### Configuration Options
| Field | Type | Required | Description |
| -------------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------- |
| `project.id` | string | No | Custom name for your project. Defaults to the name from your Git origin remote. |
| `project.baseBranch` | string | No | Specifies your base branch if it isn't `main`, `master`, `dev`, or `develop`. |
| `project.managedIndexingEnabled` | boolean | No | Set to `false` to disable indexing for individual project repositories. Defaults to `true`. |
| Field | Type | Required | Description |
|---|---|---|---|
| `project.id` | string | No | Custom name for your project. Defaults to the name from your Git origin remote. |
| `project.baseBranch` | string | No | Specifies your base branch if it isn't `main`, `master`, `dev`, or `develop`. |
| `project.managedIndexingEnabled` | boolean | No | Set to `false` to disable indexing for individual project repositories. Defaults to `true`. |
Organization-wide indexing is enabled for any organization that has a credit balance. If you want to disable indexing for a specific repository, set `managedIndexingEnabled` to `false` in the config file.
@@ -52,11 +52,11 @@ The Security Agent processes each vulnerability alert through four stages.
You control how much analysis the agent performs via three modes:
| Mode | What happens |
| ----------- | --------------------------------------------------------------------- |
| **Auto** | Triage first, then deep analysis only when triage recommends it |
| **Shallow** | Triage only — no deep analysis |
| **Deep** | Full codebase analysis for every finding, regardless of triage result |
| Mode | What happens |
|---|---|
| **Auto** | Triage first, then deep analysis only when triage recommends it |
| **Shallow** | Triage only — no deep analysis |
| **Deep** | Full codebase analysis for every finding, regardless of triage result |
**Auto** is the default. It gives you the best balance between thoroughness and credit usage — deep analysis only runs where triage says it's needed.
@@ -110,24 +110,24 @@ Every finding has a **primary status** and an **outcome label**. The status trac
**Primary status:**
| Status | Meaning |
| --------- | --------------------------------------------------- |
| Open | Active vulnerability that needs attention |
| Fixed | Resolved — detected from the Dependabot alert state |
| Dismissed | Closed by a user or by auto-dismiss |
| Status | Meaning |
|---|---|
| Open | Active vulnerability that needs attention |
| Fixed | Resolved — detected from the Dependabot alert state |
| Dismissed | Closed by a user or by auto-dismiss |
**Outcome labels:**
| Outcome | Meaning |
| --------------- | ------------------------------------------ |
| Not Analyzed | No analysis has run yet |
| Analyzing | Analysis is currently in progress |
| Analysis Failed | Something went wrong during analysis |
| Exploitable | Deep analysis confirmed it's exploitable |
| Outcome | Meaning |
|---|---|
| Not Analyzed | No analysis has run yet |
| Analyzing | Analysis is currently in progress |
| Analysis Failed | Something went wrong during analysis |
| Exploitable | Deep analysis confirmed it's exploitable |
| Not Exploitable | Deep analysis confirmed it's not reachable |
| Safe to Dismiss | Triage recommends dismissing this finding |
| Needs Review | Triage recommends manual review |
| Triage Complete | Triage is done, no deep analysis needed |
| Safe to Dismiss | Triage recommends dismissing this finding |
| Needs Review | Triage recommends manual review |
| Triage Complete | Triage is done, no deep analysis needed |
---
@@ -158,11 +158,11 @@ All settings are on the Security Agent configuration page.
**SLA deadlines** set how many days your team has to remediate findings at each severity level:
| Severity | Default |
| -------- | ------- |
|---|---|
| Critical | 15 days |
| High | 30 days |
| Medium | 45 days |
| Low | 90 days |
| High | 30 days |
| Medium | 45 days |
| Low | 90 days |
You can adjust these per your organization's policies and reset to defaults at any time.
@@ -324,16 +324,16 @@ No authentication required.
## Error codes
| HTTP Status | Description |
| ----------- | ------------------------------------------------------- |
| 400 | Bad request -- invalid parameters or model ID |
| 401 | Unauthorized -- invalid or missing API key |
| 402 | Insufficient balance -- add credits to continue |
| 403 | Forbidden -- model not allowed by organization policy |
| 429 | Rate limited -- too many requests |
| 500 | Internal server error |
| 502 | Provider error -- upstream provider returned an error |
| 503 | Service unavailable -- provider temporarily unavailable |
| HTTP Status | Description |
|---|---|
| 400 | Bad request -- invalid parameters or model ID |
| 401 | Unauthorized -- invalid or missing API key |
| 402 | Insufficient balance -- add credits to continue |
| 403 | Forbidden -- model not allowed by organization policy |
| 429 | Rate limited -- too many requests |
| 500 | Internal server error |
| 502 | Provider error -- upstream provider returned an error |
| 503 | Service unavailable -- provider temporarily unavailable |
### Error response format
@@ -78,22 +78,22 @@ BYOK lets you use your own provider API keys with the Kilo AI Gateway. When a BY
### Supported BYOK providers
| Provider | BYOK Key ID |
| -------------------- | ----------------- |
| Anthropic | `anthropic` |
| AWS Bedrock | `bedrock` |
| Google AI Studio | `google` |
| Inception | `inception` |
| OpenAI | `openai` |
| MiniMax | `minimax` |
| Mistral | `mistral` |
| xAI | `xai` |
| Z.AI | `zai` |
| Provider | BYOK Key ID |
|---|---|
| Anthropic | `anthropic` |
| AWS Bedrock | `bedrock` |
| Google AI Studio | `google` |
| Inception | `inception` |
| OpenAI | `openai` |
| MiniMax | `minimax` |
| Mistral | `mistral` |
| xAI | `xai` |
| Z.AI | `zai` |
| BytePlus Coding Plan | `byteplus-coding` |
| Codestral (FIM) | `codestral` |
| Kimi Code | `kimi-coding` |
| Neuralwatt | `neuralwatt` |
| Z.AI Coding Plan | `zai-coding` |
| Codestral (FIM) | `codestral` |
| Kimi Code | `kimi-coding` |
| Neuralwatt | `neuralwatt` |
| Z.AI Coding Plan | `zai-coding` |
### How BYOK works
@@ -109,11 +109,11 @@ BYOK keys can be configured at the personal level or at the organization level.
The gateway accepts the following headers:
| Header | Required | Description |
| --------------------------- | ----------------------- | -------------------------------------------- |
| `Authorization` | Yes (unless free model) | `Bearer <api_key>` |
| `Content-Type` | Yes | `application/json` |
| `X-KiloCode-OrganizationId` | No | Organization context for org-scoped requests |
| `X-KiloCode-TaskId` | No | Task identifier for prompt cache keying |
| `X-KiloCode-Version` | No | Client version string |
| `x-kilocode-mode` | No | Mode hint for `kilo-auto` model routing |
| Header | Required | Description |
|---|---|---|
| `Authorization` | Yes (unless free model) | `Bearer <api_key>` |
| `Content-Type` | Yes | `application/json` |
| `X-KiloCode-OrganizationId` | No | Organization context for org-scoped requests |
| `X-KiloCode-TaskId` | No | Task identifier for prompt cache keying |
| `X-KiloCode-Version` | No | Client version string |
| `x-kilocode-mode` | No | Mode hint for `kilo-auto` model routing |
@@ -39,32 +39,32 @@ This returns model information including pricing, context window, and supported
### Popular models
| Model ID | Provider | Description |
| ------------------------------- | --------- | ----------------------------------------------- |
| `anthropic/claude-opus-4.7` | Anthropic | Most capable Claude model for complex reasoning |
| `anthropic/claude-sonnet-4.6` | Anthropic | Balanced performance and cost |
| `anthropic/claude-haiku-4.5` | Anthropic | Fast and cost-effective |
| `openai/gpt-5.4` | OpenAI | Latest GPT model |
| `openai/gpt-5.4-mini` | OpenAI | Fast and efficient |
| `google/gemini-3.1-pro-preview` | Google | Advanced reasoning |
| `google/gemini-2.5-flash` | Google | Fast and efficient |
| `x-ai/grok-4` | xAI | Most capable Grok model |
| `x-ai/grok-code-fast-1` | xAI | Optimized for code tasks |
| `deepseek/deepseek-v3.2` | DeepSeek | Strong coding and reasoning model |
| `moonshotai/kimi-k2.5` | Moonshot | Strong coding and multilingual model |
| `minimax/minimax-m2.7` | MiniMax | High-performance MoE model |
| Model ID | Provider | Description |
|---|---|---|
| `anthropic/claude-opus-4.7` | Anthropic | Most capable Claude model for complex reasoning |
| `anthropic/claude-sonnet-4.6` | Anthropic | Balanced performance and cost |
| `anthropic/claude-haiku-4.5` | Anthropic | Fast and cost-effective |
| `openai/gpt-5.4` | OpenAI | Latest GPT model |
| `openai/gpt-5.4-mini` | OpenAI | Fast and efficient |
| `google/gemini-3.1-pro-preview` | Google | Advanced reasoning |
| `google/gemini-2.5-flash` | Google | Fast and efficient |
| `x-ai/grok-4` | xAI | Most capable Grok model |
| `x-ai/grok-code-fast-1` | xAI | Optimized for code tasks |
| `deepseek/deepseek-v3.2` | DeepSeek | Strong coding and reasoning model |
| `moonshotai/kimi-k2.5` | Moonshot | Strong coding and multilingual model |
| `minimax/minimax-m2.7` | MiniMax | High-performance MoE model |
### Free models
Several models are available at no cost, subject to rate limits:
| Model ID | Description |
| ---------------------------------------- | ------------------------------ |
| `bytedance-seed/dola-seed-2.0-pro:free` | ByteDance Dola Seed 2.0 Pro |
| `x-ai/grok-code-fast-1:optimized:free` | xAI Grok Code Fast 1 Optimized |
| `nvidia/nemotron-3-super-120b-a12b:free` | NVIDIA Nemotron 3 Super 120B |
| `arcee-ai/trinity-large-thinking:free` | Arcee Trinity Large |
| `openrouter/free` | Best available free model |
| Model ID | Description |
|---|---|
| `bytedance-seed/dola-seed-2.0-pro:free` | ByteDance Dola Seed 2.0 Pro |
| `x-ai/grok-code-fast-1:optimized:free` | xAI Grok Code Fast 1 Optimized |
| `nvidia/nemotron-3-super-120b-a12b:free` | NVIDIA Nemotron 3 Super 120B |
| `arcee-ai/trinity-large-thinking:free` | Arcee Trinity Large |
| `openrouter/free` | Best available free model |
Free models are available to both authenticated and anonymous users. Anonymous users are rate-limited to 200 requests per hour per IP address.
@@ -84,21 +84,21 @@ The mappings below reflect the current routing. The underlying models behind eac
Highest performance and capability for any task. Frontier requests are sent with medium reasoning effort and medium verbosity.
| Mode | Resolved Model |
| -------------------------------------------------------------- | ----------------------------- |
| `plan`, `general`, `architect`, `orchestrator`, `ask`, `debug` | `anthropic/claude-opus-4.7` |
| `build`, `explore`, `code` | `anthropic/claude-sonnet-4.6` |
| Default (no / unknown mode) | `anthropic/claude-sonnet-4.6` |
| Mode | Resolved Model |
|---|---|
| `plan`, `general`, `architect`, `orchestrator`, `ask`, `debug` | `anthropic/claude-opus-4.7` |
| `build`, `explore`, `code` | `anthropic/claude-sonnet-4.6` |
| Default (no / unknown mode) | `anthropic/claude-sonnet-4.6` |
### `kilo-auto/balanced`
Great balance of price and capability. The resolved model depends on the API interface used by the client.
| API interface | Resolved Model | Reasoning effort |
| --------------------- | ---------------------------- | ---------------- |
| Completions (default) | `qwen/qwen3.6-plus` | enabled |
| Responses API | `openai/gpt-5.3-codex` | low |
| Messages API | `anthropic/claude-haiku-4.5` | medium |
| API interface | Resolved Model | Reasoning effort |
|---|---|---|
| Completions (default) | `qwen/qwen3.6-plus` | enabled |
| Responses API | `openai/gpt-5.3-codex` | low |
| Messages API | `anthropic/claude-haiku-4.5` | medium |
### `kilo-auto/free`
@@ -108,9 +108,9 @@ Free with limited capability. No credits required. The resolved model is selecte
Automatically routes to a small, fast model for lightweight background tasks (session titles, commit messages, summaries).
| Condition | Resolved Model |
| ------------------------- | -------------------------------- |
| Account has paid balance | `google/gemma-4-31b-it` |
| Condition | Resolved Model |
|---|---|
| Account has paid balance | `google/gemma-4-31b-it` |
| No balance / free account | `google/gemma-4-26b-a4b-it:free` |
### Example usage
@@ -285,12 +285,12 @@ puts result['choices'][0]['message']['content']
The Kilo AI Gateway works with any framework that supports OpenAI-compatible APIs:
| Framework | Integration |
| --------------------------------------------------------------------- | ----------------------------------------- |
| [Vercel AI SDK](https://ai-sdk.dev) | Use `createOpenAI` with Kilo base URL |
| [LangChain](https://langchain.com) | Use `ChatOpenAI` with custom base URL |
| [LlamaIndex](https://www.llamaindex.ai) | Use OpenAI-compatible configuration |
| [Haystack](https://haystack.deepset.ai) | Use OpenAI generator with custom URL |
| Framework | Integration |
|---|---|
| [Vercel AI SDK](https://ai-sdk.dev) | Use `createOpenAI` with Kilo base URL |
| [LangChain](https://langchain.com) | Use `ChatOpenAI` with custom base URL |
| [LlamaIndex](https://www.llamaindex.ai) | Use OpenAI-compatible configuration |
| [Haystack](https://haystack.deepset.ai) | Use OpenAI generator with custom URL |
| [Semantic Kernel](https://learn.microsoft.com/en-us/semantic-kernel/) | Use OpenAI connector with custom endpoint |
### LangChain example
@@ -94,8 +94,8 @@ Set a maximum daily spend per organization member. When a member reaches their d
All free model requests (both anonymous and authenticated) are rate-limited by IP address:
| Scope | Limit |
| ------------------ | --------------------- |
| Scope | Limit |
|---|---|
| Free models per IP | 200 requests per hour |
When rate-limited, you receive HTTP 429:
@@ -117,17 +117,17 @@ Paid model requests are not rate-limited by the gateway itself, but may be rate-
Usage data is tracked per request and includes:
| Field | Description |
| --------------------- | ------------------------------------------ |
| `model` | Model ID used |
| `provider` | Inference provider that served the request |
| `input_tokens` | Number of input/prompt tokens |
| `output_tokens` | Number of output/completion tokens |
| `cache_write_tokens` | Tokens written to cache |
| `cache_hit_tokens` | Tokens served from cache |
| `cost_microdollars` | Cost in microdollars (1 USD = 1,000,000) |
| `time_to_first_token` | Latency to first token (streaming only) |
| `is_byok` | Whether a BYOK key was used |
| Field | Description |
|---|---|
| `model` | Model ID used |
| `provider` | Inference provider that served the request |
| `input_tokens` | Number of input/prompt tokens |
| `output_tokens` | Number of output/completion tokens |
| `cache_write_tokens` | Tokens written to cache |
| `cache_hit_tokens` | Tokens served from cache |
| `cost_microdollars` | Cost in microdollars (1 USD = 1,000,000) |
| `time_to_first_token` | Latency to first token (streaming only) |
| `is_byok` | Whether a BYOK key was used |
## Token counting
@@ -47,11 +47,11 @@ AWS Bedrock requires credentials in a different format than other providers. Ins
}
```
| Field | Description |
| ----------------- | ------------------------------------------------------------------------ |
| `accessKeyId` | Your AWS access key ID |
| `secretAccessKey` | Your AWS secret access key |
| `region` | The AWS region where Bedrock is enabled (e.g., `us-east-1`, `eu-west-1`) |
| Field | Description |
|---|---|
| `accessKeyId` | Your AWS access key ID |
| `secretAccessKey` | Your AWS secret access key |
| `region` | The AWS region where Bedrock is enabled (e.g., `us-east-1`, `eu-west-1`) |
Your IAM user or role must have the following permissions:
@@ -38,13 +38,13 @@ Choose your current tool:
### What's Different in Kilo Code
| Cursor | Kilo Code | Key Difference |
| ------------------------------------------- | ----------------------------------------- | ------------------------------------------- |
| `.cursor/rules/*.mdc` with YAML frontmatter | `.kilocode/rules/*.md` plain Markdown | No YAML metadata required |
| `alwaysApply: true/false` metadata | File location determines scope | Scope controlled by directory structure |
| `globs: ["*.ts"]` for file patterns | Mode-specific directories or custom modes | File patterns handled via custom modes |
| `description` for AI activation | Clear file names and organization | Relies on explicit file organization |
| Global rules in UI settings | `~/.kilocode/rules/*.md` files | Global rules stored as files in home folder |
| Cursor | Kilo Code | Key Difference |
|---|---|---|
| `.cursor/rules/*.mdc` with YAML frontmatter | `.kilocode/rules/*.md` plain Markdown | No YAML metadata required |
| `alwaysApply: true/false` metadata | File location determines scope | Scope controlled by directory structure |
| `globs: ["*.ts"]` for file patterns | Mode-specific directories or custom modes | File patterns handled via custom modes |
| `description` for AI activation | Clear file names and organization | Relies on explicit file organization |
| Global rules in UI settings | `~/.kilocode/rules/*.md` files | Global rules stored as files in home folder |
### Migration Steps
@@ -160,14 +160,14 @@ Cursor supports nested `.cursor/rules/` directories. Kilo Code uses flat structu
### What's Different in Kilo Code
| Windsurf | Kilo Code | Key Difference |
| -------------------------------------------------------------- | ------------------------------ | ------------------------------------------- |
| `.windsurf/rules/*.md` | `.kilocode/rules/*.md` | Same Markdown format |
| GUI configuration for activation modes | File location determines scope | Scope controlled by directory structure |
| "Always On" mode (GUI) | Place in `.kilocode/rules/` | Rules stored as files, not GUI settings |
| "Glob" mode (GUI) | Mode-specific directories | File patterns handled via mode directories |
| 12,000 character limit per rule | No hard limit | No character limit on rule files |
| Global rules in `~/.codeium/windsurf/memories/global_rules.md` | `~/.kilocode/rules/*.md` | Global rules in home folder, multiple files |
| Windsurf | Kilo Code | Key Difference |
|---|---|---|
| `.windsurf/rules/*.md` | `.kilocode/rules/*.md` | Same Markdown format |
| GUI configuration for activation modes | File location determines scope | Scope controlled by directory structure |
| "Always On" mode (GUI) | Place in `.kilocode/rules/` | Rules stored as files, not GUI settings |
| "Glob" mode (GUI) | Mode-specific directories | File patterns handled via mode directories |
| 12,000 character limit per rule | No hard limit | No character limit on rule files |
| Global rules in `~/.codeium/windsurf/memories/global_rules.md` | `~/.kilocode/rules/*.md` | Global rules in home folder, multiple files |
### Migration Steps
@@ -220,12 +220,12 @@ If you had rules approaching the 12,000 character limit, split them:
Windsurf configures activation through the GUI. In Kilo Code, file organization replaces GUI configuration:
| Windsurf GUI Mode | Kilo Code Equivalent |
| ------------------------ | ----------------------------------------------------------- |
| **Always On** | Place in `.kilocode/rules/` (default) |
| **Glob** (file patterns) | Mode-specific directory or custom mode |
| **Model Decision** | Clear file names by concern (e.g., `testing-guidelines.md`) |
| **Manual** | Organize with descriptive names |
| Windsurf GUI Mode | Kilo Code Equivalent |
|---|---|
| **Always On** | Place in `.kilocode/rules/` (default) |
| **Glob** (file patterns) | Mode-specific directory or custom mode |
| **Model Decision** | Clear file names by concern (e.g., `testing-guidelines.md`) |
| **Manual** | Organize with descriptive names |
**Example - Converting a Glob rule:**
@@ -24,11 +24,11 @@ The UI reads and writes to the same `kilo.jsonc` config files used by the CLI, s
Each tool permission can be set to one of three values:
| Value | Behavior |
| --------- | --------------------------------------------------------- |
| `"allow"` | The tool runs automatically without prompting |
| `"ask"` | Kilo pauses and asks for approval before running the tool |
| `"deny"` | The tool is blocked entirely |
| Value | Behavior |
|---|---|
| `"allow"` | The tool runs automatically without prompting |
| `"ask"` | Kilo pauses and asks for approval before running the tool |
| `"deny"` | The tool is blocked entirely |
When no rule matches a permission check, the default action is `ask`.
@@ -36,30 +36,30 @@ When no rule matches a permission check, the default action is `ask`.
The Auto Approve tab lists the following tool-specific permissions. Some tools are grouped together in the UI and share a single permission level:
| Permission | Controls |
| -------------------------- | ------------------------------------------------------ |
| `external_directory` | Accessing files outside the project directory |
| `bash` | Executing shell commands |
| `read` | Reading file contents |
| `edit` | Editing existing files |
| `glob` | File pattern matching / searching by name |
| `grep` | Searching file contents by regex |
| `list` | Listing directory contents |
| `task` | Launching sub-agents |
| `skill` | Loading specialized skills |
| `lsp` | Language server protocol operations |
| `todoread` / `todowrite` | Reading and updating the todo list |
| `websearch` / `codesearch` | Performing web or code searches |
| `webfetch` | Fetching content from URLs |
| `doom_loop` | Allowing the agent to continue after repeated failures |
| Permission | Controls |
|---|---|
| `external_directory` | Accessing files outside the project directory |
| `bash` | Executing shell commands |
| `read` | Reading file contents |
| `edit` | Editing existing files |
| `glob` | File pattern matching / searching by name |
| `grep` | Searching file contents by regex |
| `list` | Listing directory contents |
| `task` | Launching sub-agents |
| `skill` | Loading specialized skills |
| `lsp` | Language server protocol operations |
| `todoread` / `todowrite` | Reading and updating the todo list |
| `websearch` / `codesearch` | Performing web or code searches |
| `webfetch` | Fetching content from URLs |
| `doom_loop` | Allowing the agent to continue after repeated failures |
## Runtime Permission Requests
When a tool is set to `"ask"`, Kilo pauses and displays a permission prompt with two options:
| Option | Behavior |
| -------- | ------------------------------ |
| **Run** | Allow this specific invocation |
| Option | Behavior |
|---|---|
| **Run** | Allow this specific invocation |
| **Deny** | Block this specific invocation |
Expand **Manage Auto-Approve Rules** to add commands or patterns to your allowed or denied lists. These rules are then appended to the bottom of the approval rules in settings and the config file.
@@ -89,11 +89,11 @@ The CLI uses a granular, per-tool permission system configured in `kilo.jsonc`.
Each tool permission can be set to one of three values:
| Value | Behavior |
| --------- | --------------------------------------------------------- |
| `"allow"` | The tool runs automatically without prompting |
| `"ask"` | Kilo pauses and asks for approval before running the tool |
| `"deny"` | The tool is blocked entirely |
| Value | Behavior |
|---|---|
| `"allow"` | The tool runs automatically without prompting |
| `"ask"` | Kilo pauses and asks for approval before running the tool |
| `"deny"` | The tool is blocked entirely |
When no rule matches a permission check, the default action is `ask`.
@@ -101,22 +101,22 @@ When no rule matches a permission check, the default action is `ask`.
Permissions are configured under the `permission` key in `kilo.jsonc`. The following tool-specific permission levels are available:
| Permission | Controls |
| -------------------------- | ------------------------------------------------------ |
| `external_directory` | Accessing files outside the project directory |
| `bash` | Executing shell commands |
| `read` | Reading file contents |
| `edit` | Editing existing files |
| `glob` | File pattern matching / searching by name |
| `grep` | Searching file contents by regex |
| `list` | Listing directory contents |
| `task` | Launching sub-agents |
| `skill` | Loading specialized skills |
| `lsp` | Language server protocol operations |
| `todoread` / `todowrite` | Reading and updating the todo list |
| `websearch` / `codesearch` | Performing web or code searches |
| `webfetch` | Fetching content from URLs |
| `doom_loop` | Allowing the agent to continue after repeated failures |
| Permission | Controls |
|---|---|
| `external_directory` | Accessing files outside the project directory |
| `bash` | Executing shell commands |
| `read` | Reading file contents |
| `edit` | Editing existing files |
| `glob` | File pattern matching / searching by name |
| `grep` | Searching file contents by regex |
| `list` | Listing directory contents |
| `task` | Launching sub-agents |
| `skill` | Loading specialized skills |
| `lsp` | Language server protocol operations |
| `todoread` / `todowrite` | Reading and updating the todo list |
| `websearch` / `codesearch` | Performing web or code searches |
| `webfetch` | Fetching content from URLs |
| `doom_loop` | Allowing the agent to continue after repeated failures |
## Glob-Pattern Rules
@@ -200,11 +200,11 @@ In this example, the `code` agent can run `git` commands automatically and asks
When a tool is set to `"ask"`, Kilo pauses and displays a permission prompt. You have three options:
| Option | Behavior |
| ---------------- | -------------------------------------------------------- |
| **Allow once** | Allow this specific invocation only |
| Option | Behavior |
|---|---|
| **Allow once** | Allow this specific invocation only |
| **Allow always** | Allow this tool (or pattern) for the rest of the session |
| **Reject** | Block this specific invocation |
| **Reject** | Block this specific invocation |
## Defaults
@@ -277,18 +277,18 @@ Click the toolbar to expand it and configure individual permissions:
### Available Permissions
| Permission | What it does | Risk level |
| ------------------------------ | ------------------------------------------------ | ----------- |
| **Read files and directories** | Lets Kilo Code access files without asking | Medium |
| **Edit files** | Lets Kilo Code modify files without asking | **High** |
| **Execute approved commands** | Runs whitelisted terminal commands automatically | **High** |
| **Use the browser** | Allows headless browser interaction | Medium |
| **Use MCP servers** | Lets Kilo Code use configured MCP services | Medium-High |
| **Switch modes** | Changes between Kilo Code modes automatically | Low |
| **Create & complete subtasks** | Manages subtasks without confirmation | Low |
| **Retry failed requests** | Automatically retries failed API requests | Low |
| **Answer follow-up questions** | Selects default answer for follow-up questions | Low |
| **Update todo list** | Automatically updates task progress | Low |
| Permission | What it does | Risk level |
|---|---|---|
| **Read files and directories** | Lets Kilo Code access files without asking | Medium |
| **Edit files** | Lets Kilo Code modify files without asking | **High** |
| **Execute approved commands** | Runs whitelisted terminal commands automatically | **High** |
| **Use the browser** | Allows headless browser interaction | Medium |
| **Use MCP servers** | Lets Kilo Code use configured MCP services | Medium-High |
| **Switch modes** | Changes between Kilo Code modes automatically | Low |
| **Create & complete subtasks** | Manages subtasks without confirmation | Low |
| **Retry failed requests** | Automatically retries failed API requests | Low |
| **Answer follow-up questions** | Selects default answer for follow-up questions | Low |
| **Update todo list** | Automatically updates task progress | Low |
## Master Toggle for Quick Control

Some files were not shown because too many files have changed in this diff Show More