{"name":{"finding":"Kilo CLI; npm @kilocode/cli; executable kilo (alias kilocode). Public-source assessment as of 2026-10-27; not runtime-tested.","quote":"\"name\": \"@kilocode/cli\"","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/opencode/package.json","third_party":false},"repo":{"finding":"https://github.com/Kilo-Org/kilocode","quote":"The open source coding agent","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/README.md","third_party":false},"docs":{"finding":"https://kilo.ai/docs/code-with-ai/platforms/cli","quote":"# Kilo Code CLI","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/code-with-ai/platforms/cli.md","third_party":false},"headless":{"finding":[{"finding":"Run one task with kilo run --auto --dir /absolute/workspace --model provider/model --format json \"Implement feature X\". This combines documented flags. The default run mode sends one prompt, streams events and exits when idle; --interactive/-i and --mini are interactive alternatives. Authentication must already be configured.","quote":"run [message..]","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/opencode/src/cli/cmd/run.ts","third_party":false},{"finding":"Working-directory flag: --dir, including a remote-server path when --attach is used. Select a custom agent with --agent and a model with --model/-m. --format json selects raw JSON events, default selects formatted output. --file/-f accepts an array of files attached to the message, rather than a dedicated prompt-file flag.","quote":"--dir","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/code-with-ai/platforms/cli-reference.md","third_party":false},{"finding":"Stdin is prompt input: kilo run --auto --dir /absolute/workspace --format json < prompt.txt. Positional prompt text and piped stdin are concatenated with a newline. Stdin-only input waits for EOF; when argv already supplies a prompt or command, the stdin read is bounded by a default 1000 ms silence timer. Close stdin in automation.","quote":"When stdin is the sole input, keep the upstream wait-for-EOF semantics.","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/opencode/src/cli/cmd/run-stdin.ts","third_party":false},{"finding":"Current source: --auto approves permission requests with reply once for the root and tracked Task children; explicitly denied tools remain denied. Skill-shell batches and sandbox-escalation requests are rejected even with --auto. Without --auto, pending asks are rejected and a run with auto-rejected ordinary permissions exits 1. Noninteractive sessions explicitly deny question, suggest, plan_enter and plan_exit tools.","quote":"reply: \"once\"","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/opencode/src/cli/cmd/run.ts","third_party":false},{"finding":"Docs list exits 0 success, 124 timeout and 1 error, including empty assistant output. They describe configured approvals and automatic follow-up responses; current run source instead auto-approves non-denied asks and denies the question tool. Treat this as a documentation/source discrepancy: pin/test the chosen version and use explicit denies.","quote":"`124`: Timeout","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/code-with-ai/platforms/cli.md","third_party":false}],"quote":"kilo run --auto \"Implement feature X\"","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/code-with-ai/platforms/cli.md","third_party":false},"confinement":{"finding":[{"finding":"Tool permission actions are allow, ask and deny. Whole-tool policies and input-pattern maps cover bash commands and edit paths; last matching rule wins. external_directory governs paths outside the workspace but grants no OS isolation. Configuration examples allow git/npm and deny rm or edits outside selected paths.","quote":"last matching rule wins","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/customize/agent-permissions.md","third_party":false},{"finding":"Shell permission checks parse command patterns; multi-command shell blocks require each relevant command to be permitted. File-tool inputs are resolved and matched relative to the worktree. Agent-specific permission.task patterns can restrict which subagents are callable.","quote":"A single denied command rejects the request.","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/customize/agent-permissions.md","third_party":false},{"finding":"Optional OS sandbox is disabled by default. Global kilo.jsonc example: sandbox.enabled=true, sandbox.network=\"deny\", sandbox.allowed_hosts=[], sandbox.writable_paths=[]. It confines tool writes, not reads: writable locations include the active workspace/worktree, Kilo runtime directories and explicit additions. .git and global config remain read-only. Linux uses Bubblewrap; macOS uses sandbox-exec/Seatbelt; Windows is unsupported. Enforcement failure refuses the affected tool.","quote":"The sandbox is **disabled by default**.","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/getting-started/settings/sandboxing.md","third_party":false},{"finding":"Network deny blocks sandboxed shell sockets and HTTP tools except allowed_hosts; allow permits network while retaining write restrictions. Host exceptions use a controlled proxy. Provider inference, trusted plugin hooks, MCP lifecycle and MCP prompt retrieval remain outside this network boundary. Restricted sessions cannot invoke MCP tools or typed resources. This is not a system-wide offline switch or confidentiality boundary; reads still work. Project config cannot weaken global sandbox policy. Saved session preferences can override the initial enabled default. Escalation requires explicit approval and is rejected headlessly.","quote":"It does not restrict filesystem reads.","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/getting-started/settings/sandboxing.md","third_party":false},{"finding":"Worker implication (assessment): isolate the whole runtime in a separate account/container/VM without secrets, as the docs recommend for confidentiality. Allow only required tools/commands and trusted integrations. Kilo network deny applies to tools, so whole-process network policy requires external enforcement.","quote":"For a stronger confidentiality boundary","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/getting-started/settings/sandboxing.md","third_party":false}],"quote":"operating-system boundary","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/getting-started/settings/sandboxing.md","third_party":false},"token_reporting":{"finding":[{"finding":"kilo run --format json emits newline-delimited objects with type, timestamp, sessionID and event payload. Completed step-finish parts become type=\"step_finish\", part=<original part>. This is per-step structured usage, not necessarily one final run-total record.","quote":"emit(\"step_finish\", { part })","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/opencode/src/cli/cmd/run.ts","third_party":false},{"finding":"StepFinishPart fields: cost; tokens.total (optional), tokens.input, tokens.output, tokens.reasoning, tokens.cache.read and tokens.cache.write. It also has part identifiers, reason, optional model/provider IDs, generationID and metrics. Assistant messages and session info carry usage/cost fields as well.","quote":"cost: Schema.Finite","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/schema/src/v1/session.ts","third_party":false},{"finding":"Important limitation: run JSON only emits message parts whose sessionID equals the root session. Raw step_finish output therefore excludes child-session token records. A worker using subagents must collect child sessions too rather than treat the root stream as complete accounting.","quote":"if (part.sessionID !== sessionID) continue","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/opencode/src/cli/cmd/run.ts","third_party":false},{"finding":"kilo export SESSION_ID writes session info and messages as JSON to stdout, including their stored usage fields. Supplying the ID avoids the interactive session picker. A worker can retain the root and delegated-session IDs and export each.","quote":"export session data as JSON","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/opencode/src/cli/cmd/export.ts","third_party":false},{"finding":"kilo stats prints token usage and cost statistics; --days, --project and --models filter/display aggregate history. Source aggregates input, output, reasoning, cache read/write and cost, uses persisted session totals with message fallback, and takes care not to double-count propagated subagent cost. It is history/project accounting, not a dedicated per-run JSON summary.","quote":"show token usage and cost statistics","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/opencode/src/cli/cmd/stats.ts","third_party":false}],"quote":"tokens: Schema.Struct({","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/schema/src/v1/session.ts","third_party":false},"parallelism":{"finding":[{"finding":"Custom subagents run isolated sessions via task or @ mentions. Configure agent entries in kilo.jsonc or .kilo/agents/*.md with mode=subagent, model, prompt, permission and steps. Built-in general and explore agents are documented. permission.task allow/deny maps control delegation. Foreground tasks block the parent; background:true returns immediately and later delivers results.","quote":"Background tasks use `background: true`, return immediately","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/customize/custom-subagents.md","third_party":false},{"finding":"Task-tool instructions explicitly support concurrent agents: a single model message can contain multiple tool invocations. This is real delegated concurrency, not just switching agent personas.","quote":"Launch multiple agents concurrently whenever possible","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/opencode/src/tool/task.txt","third_party":false},{"finding":"The CLI can run a persistent headless server with kilo serve and connect prompt runs via kilo run --attach URL; run flags include --session/-s and --continue/-c. Multiple open sessions are acknowledged in the CLI docs, but no guaranteed maximum concurrent sessions or scheduler limits were found. Workers sharing files still need their own worktree/isolation strategy (assessment).","quote":"starts a headless kilo server","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/code-with-ai/platforms/cli-reference.md","third_party":false},{"finding":"Subagent model defaults are configurable through subagent_model, subagent_variant and subagent_variant_overrides, with per-agent model overrides. Permission ceilings are inherited; docs say sandboxed children inherit the stricter parent/child policy.","quote":"subagent_model","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/opencode/src/kilocode/tool/task.ts","third_party":false}],"quote":"mode: subagent","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/customize/custom-subagents.md","third_party":false},"providers":{"finding":[{"finding":"Bundled provider adapters include Anthropic, OpenAI, Azure OpenAI, Google Gemini, Google Vertex (including Anthropic), Amazon Bedrock, OpenRouter, xAI, Mistral, Groq, DeepInfra, Cerebras, Cohere, Vercel AI Gateway/Vercel, Together AI, Perplexity, Alibaba, GitLab, GitHub Copilot and Venice. The source also supports arbitrary OpenAI-compatible endpoints. This is a source-backed adapter list, not a promise that every provider/model works with every tool.","quote":"\"@ai-sdk/openai-compatible\"","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/opencode/src/provider/provider.ts","third_party":false},{"finding":"Kilo Gateway is bundled through @kilocode/kilo-gateway; the Kilo provider layer supplies dynamic models and provider customizations.","quote":"\"@kilocode/kilo-gateway\"","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/opencode/src/kilocode/provider/provider.ts","third_party":false},{"finding":"Local Ollama is supported with no API key; use ollama/<model_name> and configure its local base URL (example http://localhost:11434/v1). Ollama Cloud is a separate hosted Gateway/BYOK path.","quote":"Ollama runs locally, so no API key is needed.","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/ai-providers/ollama.md","third_party":false},{"finding":"Local LM Studio is supported without an API key, through its OpenAI-compatible inference server; configure provider.lmstudio.options.baseURL (example http://localhost:1234/v1) and select lmstudio/model.","quote":"LM Studio runs locally, so no API key is needed.","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/ai-providers/lmstudio.md","third_party":false}],"quote":"\"@ai-sdk/openai-compatible\"","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/opencode/src/provider/provider.ts","third_party":false},"subscription_login":{"finding":[{"finding":"Yes: ChatGPT subscription OAuth is officially supported directly in the CLI with kilo auth login --provider codex (or --provider openai). Docs describe ChatGPT Go/Plus/Pro and Codex models; OAuth takes priority for Codex models over configured OpenAI API credentials. Initial consent/login is a provisioning step, not an unattended approval bypass.","quote":"kilo auth login --provider codex","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/ai-providers/openai-chatgpt-plus-pro.md","third_party":false},{"finding":"The built-in Codex plugin offers browser OAuth and headless device authorization. Headless login still asks a person to authorize a code on the OpenAI website; after provisioning, stored OAuth credentials can serve scripted runs.","quote":"label: \"ChatGPT Pro/Plus (headless)\"","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/opencode/src/plugin/openai/codex.ts","third_party":false},{"finding":"GitHub Copilot OAuth is built in, using device-code authorization for GitHub.com or GitHub Enterprise; it can use Copilot account access rather than a manually supplied model API key.","quote":"label: \"Login with GitHub Copilot\"","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/opencode/src/plugin/github-copilot/copilot.ts","third_party":false},{"finding":"Kilo Gateway has built-in OAuth device authorization for account-backed usage without a user-entered provider API key. Specific Kilo Pass plan allowances were not established; this is not evidence of unlimited subscription usage.","quote":"label: \"Kilo Gateway (Device Authorization)\"","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-gateway/src/plugin.ts","third_party":false}],"quote":"type: \"oauth\"","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-gateway/src/plugin.ts","third_party":false},"license":{"finding":"MIT (SPDX: MIT). The root LICENSE is headed MIT License and attributes Kilo Code and opencode; package.json also declares MIT.","quote":"MIT License","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/LICENSE","third_party":false},"latest_stable":{"finding":[{"finding":"Newest non-draft stable GitHub release by published_at in the returned 100-release API page: v7.8.18; published_at=2026-10-26T09:05:47Z (ISO date 2026-10-26), prerelease=false. The repository includes CLI, VS Code and JetBrains releases; v7.8.18 is also the CLI package version.","quote":"v7.8.18","url":"https://api.github.com/repos/Kilo-Org/kilocode/releases?per_page=100","third_party":false},{"finding":"npm @kilocode/cli dist-tags.latest=7.8.18; published 2026-10-26T09:08:49.601Z. dist-tags.rc=7.8.16; next=1.0.8 and alpha=0.0.5 are separately labeled registry tags, not newer stable releases. This is primary package-registry metadata, hosted outside Kilo/GitHub.","quote":"\"latest\":\"7.8.18\"","url":"https://registry.npmjs.org/@kilocode%2fcli","third_party":true}],"quote":"2026-10-26T09:05:47Z","url":"https://api.github.com/repos/Kilo-Org/kilocode/releases?per_page=100","third_party":false},"latest_prerelease":{"finding":"Newest non-draft release marked prerelease=true by published_at in the returned 100-release API page: v7.8.16; published_at=2026-10-22T22:12:52Z (ISO date 2026-10-22). Its tag lacks an rc suffix, but the API marks it a prerelease; npm rc also points to 7.8.16.","quote":"v7.8.16","url":"https://api.github.com/repos/Kilo-Org/kilocode/releases?per_page=100","third_party":false},"last_commit":{"finding":"Default branch main: latest commit 1180b803a1840ae396b70937ef17d409b5a17acf; committer date 2026-10-26T16:30:50Z (ISO date 2026-10-26), retrieved from the default-branch commits API. This is the commit timestamp, not release date or pushed_at.","quote":"2026-10-26T16:30:50Z","url":"https://api.github.com/repos/Kilo-Org/kilocode/commits?per_page=1","third_party":false},"fork_of":{"finding":"OpenCode (https://github.com/anomalyco/opencode). This is declared code lineage; GitHub repository metadata reports fork=false, which does not contradict the README lineage statement.","quote":"Kilo CLI is a fork of [OpenCode](https://github.com/anomalyco/opencode)","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/README.md","third_party":false},"maintenance":{"finding":[{"finding":"Repository API: archived=false, default_branch=main, fork=false. It is not archived. Recent public commit and release evidence is recorded above.","quote":"\"archived\":false","url":"https://api.github.com/repos/Kilo-Org/kilocode","third_party":false},{"finding":"No unmaintained/deprecated designation was found in the current README or checked CLI docs. Assessment: actively updated, based on the Oct 26 release and default-branch commit; this is not a future maintenance guarantee.","quote":"Contributions are welcome","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/README.md","third_party":false}],"quote":"\"archived\":false","url":"https://api.github.com/repos/Kilo-Org/kilocode","third_party":false},"gaps":{"finding":[{"finding":"not found","quote":"","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/code-with-ai/platforms/cli-reference.md","third_party":false,"checked_for":"Dedicated prompt-file flag and timeout flag/implementation for documented exit 124. Checked CLI reference, run.ts, run-stdin.ts and CLI docs. Evidence supports stdin redirection and -f attachments, not a dedicated prompt-file switch."},{"finding":"not found","quote":"","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/ai-providers/anthropic.md","third_party":false,"checked_for":"Claude Pro/Max subscription OAuth: checked Anthropic docs, provider.ts and plugin/index.ts. Docs show API-key setup. No built-in subscription method established; external plugins not ruled out."},{"finding":"not found","quote":"","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/ai-providers/gemini.md","third_party":false,"checked_for":"Gemini consumer subscription OAuth: checked Gemini docs, provider.ts and plugin/index.ts. Docs show API keys. Vertex cloud identity does not establish consumer subscription support."},{"finding":"not found","quote":"","url":"https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/customize/custom-subagents.md","third_party":false,"checked_for":"Hard concurrency maximum and per-run token-budget flag: checked subagent docs, run.ts and CLI reference. Agent steps limits iterations, not tokens. No independent execution or confinement test was performed."}],"quote":"","url":"https://kilo.ai/docs/code-with-ai/platforms/cli","third_party":false},"sources":["https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/opencode/package.json","https://raw.githubusercontent.com/Kilo-Org/kilocode/main/README.md","https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/code-with-ai/platforms/cli.md","https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/opencode/src/cli/cmd/run.ts","https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/code-with-ai/platforms/cli-reference.md","https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/opencode/src/cli/cmd/run-stdin.ts","https://kilo.ai/docs/code-with-ai/platforms/cli","https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/customize/agent-permissions.md","https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/getting-started/settings/sandboxing.md","https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/schema/src/v1/session.ts","https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/opencode/src/cli/cmd/export.ts","https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/opencode/src/cli/cmd/stats.ts","https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/customize/custom-subagents.md","https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/opencode/src/tool/task.txt","https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/opencode/src/kilocode/tool/task.ts","https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/opencode/src/provider/provider.ts","https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/opencode/src/kilocode/provider/provider.ts","https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/ai-providers/ollama.md","https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/ai-providers/lmstudio.md","https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/opencode/src/plugin/index.ts","https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/ai-providers/openai-chatgpt-plus-pro.md","https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/opencode/src/plugin/openai/codex.ts","https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/opencode/src/plugin/github-copilot/copilot.ts","https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-gateway/src/plugin.ts","https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-gateway/src/api/kilo-pass.ts","https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/ai-providers/anthropic.md","https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-docs/pages/ai-providers/gemini.md","https://raw.githubusercontent.com/Kilo-Org/kilocode/main/LICENSE","https://api.github.com/repos/Kilo-Org/kilocode/releases?per_page=100","https://registry.npmjs.org/@kilocode%2fcli","https://api.github.com/repos/Kilo-Org/kilocode/commits?per_page=1","https://api.github.com/repos/Kilo-Org/kilocode"]}
